-
uses
Classes,
SysUtils;
Procedure vtGetFoldersList(Const p_strRootPath:String;p_cstrList:TStringList);
Var
rSearch:TSearchRec;
Begin
If FindFirst(p_strRootPath+'*.*',faAnyFile,rSearch)=0 Then
Repeat
If ((rSearch.Attr and faDirectory)=faDirectory) and
(rSearch.Name<>'.') and (rSearch.Name<>'..') Then p_cstrList.Add(p_strRootPath+rSearch.Name)
Until FindNext(rSearch)<>0;
FindClose(rSearch);
End;
Procedure vtGetFilesList(Const p_strMask,p_strRootPath:String;p_cstrList:TStringList;p_isRecurse:Boolean=False) ;
Var
rSearch:TSearchRec;
cstrDirList:TStringList;
I:Integer;
Begin
If FindFirst(p_strRootPath+p_strMask,faAnyFile,rSearch)=0 Then
Repeat
If ((rSearch.Attr and faDirectory)<>faDirectory) Then
p_cstrList.Add(p_strRootPath+rSearch.Name)
Until FindNext(rSearch)<>0;
FindClose(rSearch);
If p_isRecurse Then
Begin
cstrDirList:=TStringList.Create;
Try
vtGetFoldersList(p_strRootPath,cstrDirList);
For I:=0 To cstrDirList.Count-1 Do
vtGetFilesList(p_strMask,cstrDirList[i]+'\',p_cstrList,True);
Finally
cstrDirList.Free;
End;
End;
End;
Type
Строка = String;
Целое = Integer;
ТПачкаСтрингов = TStringList;
ТПачкаСтрингов_RU = class helper for ТПачкаСтрингов
public
constructor Родить;
procedure УбитьНах;
function СкокаВасТам: Целое;
procedure Впихнуть(Const Строка: Строка);
end;
procedure ТПачкаСтрингов_RU.Впихнуть(const Строка: Строка);begin inherited Add(Строка);end;
function ТПачкаСтрингов_RU.СкокаВасТам: Целое;begin Result := Count;end;
procedure ТПачкаСтрингов_RU.УбитьНах;begin inherited Free;end;
constructor ТПачкаСтрингов_RU.Родить;begin inherited Create;end;
procedure СлухСюды(Const Стр: Строка);begin WriteLn(Стр);end;
function ЧеКаг: Целое;begin result := ParamCount;end;
function ЧетоТам(Const Индекс: Целое): Строка;begin result := ParamStr(Индекс);end;
procedure ЖдатьЙопть;begin Readln;end;
Var
стадоФиле: ТПачкаСтрингов;
ы: Целое;
begin
СлухСюды('SU: Logging commenter 1.00.0004');
СлухСюды('(C) 2009, Timur R. Vildanov / modifyed Rouse_');
стадоФиле := ТПачкаСтрингов.Родить;
try
if ЧеКаг = 1 then
стадоФиле.Впихнуть(ЧетоТам(1))
else
vtGetFilesList('*.pas', GetCurrentDir+'\', стадоФиле);
for ы := 0 to стадоФиле.СкокаВасТам - 1 do
СлухСюды(стадоФиле[ы]);
finally
стадоФиле.УбитьНах;
end;
ЖдатьЙопть;
end.
-
function ЧеКаг: Целое;
=))))
-
Удалено модератором Примечание: версия устарела )
-
Удалено модератором Примечание: версия устарела )
-
uses
Classes,
SysUtils;
Const
аяПапко = faDirectory;
ФсеФайло = faAnyFile;
Канэшна = true;
Оке = true;
Да = true;
Не = false;
Неа = false;
Type
ДаНе = Boolean;
Стринги = String;
Целое = Integer;
ТПачкаСтрингов = TStringList;
ТПачкаСтрингов_RU = class helper for ТПачкаСтрингов
public
constructor Родить;
procedure УбитьНах;
function СкокаВасТам: Целое;
procedure Впихнуть(Const Стринги: Стринги);
end;
procedure ТПачкаСтрингов_RU.Впихнуть(const Стринги: Стринги);begin inherited Add(Стринги);end;
function ТПачкаСтрингов_RU.СкокаВасТам: Целое;begin Result := Count;end;
procedure ТПачкаСтрингов_RU.УбитьНах;begin inherited Free;end;
constructor ТПачкаСтрингов_RU.Родить;begin inherited Create;end;
procedure СлухСюды(Const Стр: Стринги);begin WriteLn(Стр);end;
function ЧеКаг: Целое;begin result := ParamCount;end;
function ЧетоТам(Const Индекс: Целое): Стринги;begin result := ParamStr(Индекс);end;
procedure ЖдатьЙопть;begin Readln;end;
Procedure ИщиПапкиСцк(Const Откель:Стринги;КудаПихать:ТПачкаСтрингов);
Var
СюдаИщи:TSearchRec;
Begin
If FindFirst(Откель+'*.*',ФсеФайло,СюдаИщи)=0 Then
Repeat
If ((СюдаИщи.Attr and аяПапко)=аяПапко) and
(СюдаИщи.Name<>'.') and (СюдаИщи.Name<>'..') Then КудаПихать.Впихнуть(Откель+СюдаИщи.Name)
Until FindNext(СюдаИщи)<>0;
FindClose(СюдаИщи);
End;
Procedure ИщиФайлоСцк(Const Чё,Откель:Стринги;КудаПихать:ТПачкаСтрингов;ИскатьВнутре:ДаНе=Не);
Var
СюдаИщи:TSearchRec;
СтадоПапк:ТПачкаСтрингов;
ы:Целое;
Begin
If FindFirst(Откель+Чё,ФсеФайло,СюдаИщи)=0 Then
Repeat
If ((СюдаИщи.Attr and аяПапко)<>аяПапко) Then
КудаПихать.Впихнуть(Откель+СюдаИщи.Name)
Until FindNext(СюдаИщи)<>0;
FindClose(СюдаИщи);
If ИскатьВнутре Then
Begin
СтадоПапк:=ТПачкаСтрингов.Родить;
Try
ИщиПапкиСцк(Откель,СтадоПапк);
For ы:=0 To СтадоПапк.СкокаВасТам - 1 Do
ИщиФайлоСцк(Чё,СтадоПапк[ы]+'\',КудаПихать,Канэшна);
Finally
СтадоПапк.УбитьНах;
End;
End;
End;
Var
стадоФиле: ТПачкаСтрингов;
ы: Целое;
begin
СлухСюды('SU: Logging commenter 1.00.0008');
СлухСюды('(C) 2009, Timur R. Vildanov / modifyed Rouse_');
стадоФиле := ТПачкаСтрингов.Родить;
try
if ЧеКаг = 1 then
стадоФиле.Впихнуть(ЧетоТам(1))
else
ИщиФайлоСцк('*.pas', GetCurrentDir+'\', стадоФиле);
for ы := 0 to стадоФиле.СкокаВасТам - 1 do
СлухСюды(стадоФиле[ы]);
finally
стадоФиле.УбитьНах;
end;
ЖдатьЙопть;
end.
-
Procedure ИщиФайлоСцк(Const Чё,Откель:Стринги;КудаПихать:ТПачкаСтрингов;ИскатьВнутре:ДаНе=Не);
Var
СюдаИщи:TSearchRec;
СтадоПапк:ТПачкаСтрингов;
ы:Целое;
Begin
If FindFirst(Откель+Чё,ФсеФайло,СюдаИщи)=0 Then
Repeat
If ((СюдаИщи.Attr and аяПапко)<>аяПапко) Then
КудаПихать.Впихнуть(Откель+СюдаИщи.Name)
Until FindNext(СюдаИщи)<>0;
FindClose(СюдаИщи);
If ИскатьВнутре Then
Begin
СтадоПапк:=ТПачкаСтрингов.Родить;
Try
ИщиПапкиСцк(Откель,СтадоПапк);
For ы:=0 To СтадоПапк.СкокаВасТам - 1 Do
ИщиФайлоСцк(Чё,СтадоПапк[ы]+'\',КудаПихать,Канэшна);
Finally
СтадоПапк.УбитьНах;
End;
End;
End; :^D =))))))
-
> Andy BitOff (25.12.2009 15:25:05) [5]
Если к этому делу нормально подойти, то это мощное оружие.
-
> Anatoly Podgoretsky © (25.12.09 16:44) [6] > Если к этому делу нормально подойти, то это мощное оружие.
Мощное против студентов?
-
И за тоже, можно писать более понятные приложения, а не только для гуру. Главное не переусердствовать, а то дашь дураку стеклянный член, так он его умудрится сломать.
-
> Anatoly Podgoretsky © (27.12.09 21:14) [8] > Главное не переусердствовать
Ага. Что Тимур нам и показал. А вообще, думаю неправильно это, это человек научившийся писать с русскими идентификаторами (всмысле с нуля сразу на русском), как же он будет читать чужой код? Будет промтом его переводить =)
|