New als Funktion?
Ich kenn das nur als Prozedur
Delphi-Quellcode:
procedure TDhDrive.ListRec_Add(Directory:string;SR:TSearchRec);
var;
P : PDateiListRec;
begin
//with SR do // ich wüßte jetzt nicht, wofür das nötig sein sollte? *grübel*
//begin
New(P);
FillChar(P^, SizeOf(P^), 0);
PDateiListRec(P)^.SRec := SR;
FDateiRecList.Add(P);
//end;
end;
Also nun zum Problem:
Dispose ruft die Prozedur Finalize auf und übergibt diesem den Record, bevor es selber den Speicher des Records mit FreeMem freigibt.
Finalize "löscht" alle initialisierungspflichtigen Typen von Delphi, also
> Strings (
Ansi, Wide &
Unicode), dynamische Arrays und Interfaces
Genauso wie New die Prozedur Initialize aufruft und diese Typen entsprechend initialisiert (quasi mit 0 füllt), nachdem es mit GetMem den Speicher des Records besorgt hat.
Wenn es dir also nicht wichtig ist, daß z.B. auch Integer und Objectvariablen unbedingt mit 0 initialisiert werden, da sie danach eh mit irgendwas gefüllt werden, dann könntest du dein FillChar auch weglassen.