Forum: Multimedia
Delphi
by Dalai,
26. Apr 2019
Mir fällt gerade ein, dass es wohl gar nicht geht, eine Konstante (hier -1) als var-Parameter zu übergeben. Und die beiden HICON-Parameter von ExtractIconEx sind im Delphi als var deklariert. D.h. der Compiler müsste meckern, wenn 3x -1 übergeben wird.
Grüße
Dalai
Forum: Multimedia
Delphi
by Dalai,
26. Apr 2019
Die Intention der Funktion GetHIcon insgesamt ist mir schon klar. Es ging mir nur um den darin enthaltenen Aufruf if ExtractIconEx(..., -1, ...) <> 0. Das eigentliche Extrahieren der Icons erfolgt ja erst danach in einem weiteren Aufruf von ExtractIconEx (sofern der erste Aufruf klappte).
Anders ausgedrückt: Sofern das erste ExtractIconEx klappt, rufst du es danach nochmals auf. Wenn man die...
Forum: Multimedia
Delphi
by Dalai,
25. Apr 2019
Jep, genau das.
Geht's denn beim ersten Aufruf von ExtractIconEx um die Ermittlung der Anzahl von Icons? Dann solltest du keinen Parameter für ein HICON übergeben.
Vielleicht kann eine Untersuchung auf Speicherlecks nicht schaden, mit einer Software, die auch Windows Handles mit untersucht; leider weiß ich nicht, was es da gibt, was für aktuellere/neuere Delphis taugt. FastMM bzw....
Forum: Multimedia
Delphi
by Dalai,
25. Apr 2019
Du extrahierst zwei Icons pro Aufruf von ExtractIconEx, also musst du auch beide zerstören. Oder du castest so, dass nur ein Icon extrahiert wird:ExtractIconEx(PChar(AFileName), AIndex, Result, HICON(nil^), 1);
Auch der Aufruf von ExtractIconEx(PChar(AFileName), -1, ...) könnte Icons extrahieren; die Doku zu ExtractIconEx ist da leider nicht präzise genug. Geht's dabei nur um Ermittlung der...