Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#4

AW: Problem beim Auslesen von .lnk-Dateien

  Alt 19. Nov 2010, 12:04
Erstmal was zur Speicherverwaltung:
(abgesehn davon, daß es eher unklug ist, ein Objekt so zurückzugeben, da man das Prinzip "der Verursacher/Ersteller gibt's auf gleicher Ebene wieder frei" nicht einhalten kann)
Bei einer Exception würde das Object in AIcon als Speicherleck zurückbleiben.
Delphi-Quellcode:
AIcon := TIcon.Create;
try
  AIcon.Handle := FileInfo.HIcon;
  AIcon.Transparent := True;
except
  AIcon.Free; // bei Fehler freigeben
end;
Result := AIcon;
Delphi-Quellcode:
function FileIcon(FileName: String): TIcon;
var FileInfo: TSHFileInfo;
begin
  FillChar(FileInfo, SizeOf(FileInfo), #0);
  if SHGetFileInfo(PChar(FileName), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON) <> 0 then
    RaiseLastOSError;
  Result := TIcon.Create;
  try
    Result.Handle := FileInfo.HIcon;
    Result.Transparent := True;
  except
    Result.Free;
  end;
end;
(SHGFI_LARGEICON könnte man auch weglassen ... das ist eh 0)

So, zum Problem.
Hmmm, notfalls wirst du wohl in die LNK-Dateien reinsehn müssen.
(irgendwo gab's in der DP auch 'nen Code zum Auslesen)
Da schauen ob ein Icon zugeordnet ist.
- wenn ja, dann dieses nehmen
- wenn nein, dann über deine Funktion das Icon der Zieldatei besorgen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat