Hi Leute,
in einem Thread-Objekt habe ich eine Funktion implementiert, die die Gesamtgrösse eines Verzeichnisbaumes und die Namen der darin enthaltenen Dateien in TStringlists einfügt.
Delphi-Quellcode:
filesize_total:Integer;
destinationdir: String;
FilesToCopy, DirectoriesToCreate:TStringlist;
SizeOfFiles:TStringlist;
function ThreadCopy.getDirectoriesFiles(startDirectory:string):longint;
//Bestimmt Verzeichnisse und Dateien
var SR : TSearchRec;
Groesse : longint;
Verzeichnis:String;
begin
Verzeichnis:=startDirectory;
Groesse:=0;
DirectoriesToCreate.Add(Verzeichnis);
if Verzeichnis[length(Verzeichnis)]<>'\' then
Verzeichnis:=Verzeichnis+'\';
if FindFirst(Verzeichnis+'*.*',$3F,SR)=0 then begin
repeat
if ((SR.Attr and faDirectory)>0) and (SR.Name<>'.') and (SR.Name<>'..') then
//Verzeichnis erkannt
begin
//Rekursiver Funktionsaufruf
Groesse:=Groesse+getDirectoriesFiles(Verzeichnis+SR.Name);
if (SR.Name<>'.') and (SR.Name<>'..') then
begin
if DirectoriesToCreate.IndexOf(Verzeichnis+SR.Name) = -1 then
//Falls Eintrag in Liste noch nicht vorhanden, Eintrag hinzufügen
DirectoriesToCreate.Add(Verzeichnis+SR.Name);
end;
end
else
begin
//Datei erkannt
SizeOfFiles.Add(IntToStr(SR.Size));
Groesse:=Groesse+SR.Size;
if (SR.Name<>'.') and (SR.Name<>'..') then
begin
//Falls Eintrag in Liste noch nicht vorhanden, Eintrag hinzufügen
if FilesToCopy.IndexOf(Verzeichnis+SR.Name) = -1 then FilesToCopy.Add(Verzeichnis+SR.Name);
end
end;
until FindNext(SR)<>0;
FindClose(SR);
end;
Bei der FindCLose(SR) in der vorletzen Zeile erhalte ich die Meldung
"Incompatible Types: Cardinal und TSearchRec".
Wo liegt der Fehler?
Baue ich genau den gleichen Quelltext in einen anderen Thread ein funktionierts problemlos
Hat vielleicht jemand eine Idee?
Gruß
Manuel