Mam problem ze wsakźnikami.
Napisałem procedurkę:
PFiles = ^TFiles;
TFiles = packed record
FName: string[200];
FSize: integer;
FKind: integer;
end;
procedure Kataloguj(tnRodzic : TTreeNode; strSciezka : string);
var
sr : TSearchRec;
iWynik : integer;
tnDziecko : TTreeNode;
Licznik : integer;
PRec: PFiles ;
begin
iWynik := FindFirst(strSciezka + '*.*', faAnyFile, sr);
while iWynik = 0 do
begin
//
New(PRec); // PRZYDZIELENIE PAMIECI
//
if (sr.Name <> '.') and (sr.Name <> '..') then
begin
with PRec^ do
begin
FName := sr.Name;
FSize := sr.Size;
FKind := sr.Attr;
end;
tnDziecko := frm.trv.Items.AddChildObject(tnRodzic, sr.Name, PRec);
Licznik := Licznik + 1;
frm.Caption := 'Znalazlem : ' + IntToStr(Licznik) + 'katalog(ów).';
if ((sr.Attr and faDirectory) = faDirectory) then
begin
tnRodzic.ImageIndex := 0;
Kataloguj(tnDziecko ,strSciezka + sr.Name + '');
end
else
begin
tnDziecko.ImageIndex := -1;
tnDziecko.SelectedIndex := -1;
end;
//Dispose(PPec);
end;
iWynik := FindNext(sr);
end;
FindClose(sr);
end;
// Wywołanie
procedure Tfrm.btnClick(Sender: TObject);
var
cDysk : Char;
tdtStart, tdtKoniec : TTime;
begin
frm.trv.Items.BeginUpdate;
trv.Items.Clear;
cDysk := 'F';
Kataloguj(trv.Items.AddChild(nil, '(Dysk ' + cDysk + ':)'), cDysk + ':');
frm.trv.Items.EndUpdate;
end;
No i właśnie...
Jak zwalniać pamięć tak, żeby nie gubić wartości pól rekordu?
Zamienić to na tablicę rekordów?
Jak?
Bardzo proszę o pomoc.