Prosedürde LS isminde TStrings tipinde bir değişkene, yapılan aramanın sonuçları aktarılıyor. LS değişkeni başta create edilmemiş ve işlem sonunda da Free edilmemiş. Bu doğru bir kullanım mı ? Free edilmediği için hafızada yer kaplamaz mı ? Doğru değilse nasıl kullanmalıyım
Teşekkürler
Kod: Tümünü seç
procedure Klasorleri_Yukle(LS:TStrings; AnaDizin:String; KarsilaDizin:String; Harf:string;Filtre:boolean);
function Buyuk_Harf_Yap(Str:String) : String;
Const
buyukharf:String='ÇĞIİÖŞÜ';
kucukharf:String='çğıiöşü';
Var
I :Integer;
NewStr:String;
Begin
NewStr:='';
For I:=1 To Length(Str) Do
if Pos(Str[I],kucukharf)>0 Then
NewStr:=NewStr+buyukharf[Pos(Str[I],kucukharf)]
Else
NewStr:=NewStr+UpperCase(Str[I]);
Result:=NewStr;
End;
var
SR: TSearchRec;
IsFound, IsFound1: Boolean;
dosya,gecici,dosya_adi: string;
i: integer;
begin
LS.Clear;
if AnaDizin[length(AnaDizin)] <> '\' then
AnaDizin := AnaDizin + '\';
IsFound :=FindFirst(AnaDizin + '*.*', faDirectory, SR) = 0;
while IsFound do
begin
if Filtre=True then begin //filtre var
if ((SR.Attr and faDirectory) <> 0) and (SR.Name[1] <> '.') then
begin
dosya_adi:=Buyuk_Harf_Yap(sr.Name);
Harf := Buyuk_Harf_Yap(Harf);
gecici:= AnsiLeftStr(dosya_adi,1);
if Harf<>'' then
begin
if gecici=harf then
begin
Ls.AddObject(SR.Name , TYoluItem.Create(AnaDizin));
dosya_adi:='';
gecici:='';
end;
end; //
end;
end; //
if Filtre=false then begin //filtre yok
if ((SR.Attr and faDirectory) <> 0) and (SR.Name[1] <> '.') then
begin
if not DirectoryExists(KarsilaDizin+SR.Name) then
begin
Ls.AddObject(SR.Name , TYoluItem.Create(AnaDizin));
end;
end;
end;
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);
end;
////////////////////////////////////////////////////////////////////