Forum: Object-Pascal / Delphi-Language
Delphi
by RWarnecke,
7. Sep 2008
Danke Detlef, Deine Faustregel hat mir geholfen, es etwas besser zu verstehen. Ich habe jetzt im Destruktor der Klasse TPrinterInfo noch die folgenden Zeilen eingefügt und bekomme keinen MemoryLeak mehr angezeigt.
if FAllInfos.Count > 0 then begin
for I :=0 to FAllInfos.Count -1 do Dispose(FAllInfos);
FAllInfos.Clear;
end;
Danke auch an Dich mkinzler. Habt mir beide sehr...
Forum: Object-Pascal / Delphi-Language
Delphi
by RWarnecke,
7. Sep 2008
Es ist aber egal, ob ich das Dispose einfüge oder nicht, ich kann dann trotzdem noch meine Daten aus der Struktur von FAllInfos auslesen, wie ich es im Beitrag #3 geschrieben habe. Im Destruktor der Klasse TPrinterInfo habe ich dann FAllInfos.Free stehen. Damit zerstöre ich doch dann alles oder nicht ?
Forum: Object-Pascal / Delphi-Language
Delphi
by RWarnecke,
7. Sep 2008
Ich dachte, dass würde ich schon machen, indem ich das Dispose(PPrinter) entweder vor FreeMem(Buffer) oder danach reinschreibe.
Ich habe doch schon eine Klasse, die TPrinterInfo heist.
Ich verstehe im Moment nur Bahnhof. Ich deklariere doch nur in der Funktion den Pointer PPrinter und zerstöre diesen am Ende der Procedure wieder.
Forum: Object-Pascal / Delphi-Language
Delphi
by RWarnecke,
7. Sep 2008
Welchen Zeiger aus der Liste entfernen ?
Ich rufe die Daten aus der Liste nachher dann so ab :
function TPrinterInfo.GetPrinterName:string;
var
PPrinter : PPrinterInfo2;
begin
result := '';
if FAllInfos.Count <> 0 then begin
Forum: Object-Pascal / Delphi-Language
Delphi
by RWarnecke,
7. Sep 2008
Hallo zusammen,
ich habe den folgende Inhalt der Procedure im I-Net gefunden und an meine Klasse angepasst :
procedure TPrinterInfo.GetAllPrinterInfos;
var
pcbNeeded : DWORD;
pcReturned : DWORD;
Buffer : PChar;
PrinterInfo: PChar;