Einzelnen Beitrag anzeigen

LeoDD

Registriert seit: 30. Jul 2003
43 Beiträge
 
Delphi 2010 Professional
 
#14

Re: Speicherleck bei verschachtelten Objekten

  Alt 16. Jan 2009, 13:20
Nicht schlecht. Erst TList mit Pointern, dann TObjectList mit Pointern, nun TObjectList mit TObjects. Es wird immer besser, der Code übersichtlicher, ich danke euch vielmals.

Wir haben es gleich geschafft, ich hoffe ich darf noch auf eure Hilfe zählen. EurekaLog meldet nun noch Speicherlecks hier:

Delphi-Quellcode:
function TTC7AutoStart.NewObservationFile(ASKind: TTC7AutoStartKind; FileName: string): boolean;
var
  ASStruc: TTC7AutoStartStruc;
// ASPointer: PTTC7AutoStartStruc;
begin

  result := false;

  if FileExists(FileName) then begin

    ASStruc := TTC7AutoStartStruc.Create; //<- Speicherleck
// ASStruc.EncyclopediaInfo := TTC7EncyclopediaData.Create;
// CreateAutoStartStruc(ASStruc);

    Result := true;

    ASStruc.Index := Self.Count;
    ASStruc.EntryType := ASKind;

    ASStruc.FileData.FileName := FileName;
    ASStruc.FileData.FileHash := THash_SHA256.CalcFile(FileName, TFormat_HEX);
    ASStruc.FileData.FileAttr := FileGetAttr(FileName);
    ASStruc.FileData.FileDate := FileDateToDateTime(FileAge(FileName));
    ASStruc.FileData.FileSize := GetFileSize(FileName);

    if ASKind=asTextFile then ASStruc.FileData.FileTextLineCount := GetTextLineCountOfFile(FileName);

    ASStruc.UniqueID := CreateUniqueID(ASStruc);
    ASStruc.AutoStartDangerLevel := GetDangerLevel(ASStruc.UniqueID);

    ASStruc.DeterminedFile := ASStruc.FileData.FileName;
    GetFileInfo(ASStruc.FileData.FileName, ASStruc.DeterminedFileInfo);
    ASStruc.IconCacheIndex := IconCache.FileCacheIndex(ASStruc.FileData.FileName, true);

// New(ASPointer);
// ASPointer^ := ASStruc;

    Self.Add(ASStruc);
// ASStruc.Free;

  end;

end;
Scheinbar darf ich das lokale Objekt nicht so einfach erstellen, der Liste hinzufügen und fertig. Freigeben darf ich das lokale Objekt auch nicht.
Erst wenn man dreimal auf Holz klopfen will, stellt man fest, dass die Welt nur noch aus Plastik und Aluminium besteht.
  Mit Zitat antworten Zitat