Autor Beitrag
Stefan-W
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 475

Win 7 SP1
D2005 PE
BeitragVerfasst: Do 15.01.04 19:26 
Ich hab ein Prob mit dem Icon Count
ausblenden Delphi-Quelltext
1:
2:
3:
4:
var anzahl: Integer;
...

anzahl := ExtractIcon(hinstance,'D:\Icon\Test.dll',-1);

geht nicht...

kommt immer ein Fehler das ein Parameter die untere Grenze verletzt...

kann mir bitte jemand helfen

Schon mal Danke im voraus

mfg Stefan

Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
KidPaddle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 351

WinXP,Linux
D7 Prof, XE7
BeitragVerfasst: Do 15.01.04 19:59 
Aus der Windows - Hilfe:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
HICON ExtractIcon(

    HINSTANCE hInst,  // instance handle
    LPCTSTR lpszExeFileName,  // filename of file with icon
    UINT nIconIndex   // index of icon to extract
   );


UINT ist eine positiver Wert und kann daher nicht -1 annehmen, daher meldet der Complier diesen Fehler. Übergib einfach CARDINAL(-1) anstelle von nur -1 und es geht dann.

Gruß
KidPaddle

Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 15.01.04 20:06 
Hallo, Ihr beiden!

Bitte nutzt doch demnächst die Delphi- anstatt der Code-Tags. Das aktiviert das Syntax-Highlighting und macht den Quelltext sehr viel lesbarer.

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 15.01.04 23:11 
KidPaddle hat folgendes geschrieben:
Übergib einfach CARDINAL(-1) anstelle von nur -1 und es geht dann.

Hm, stellt sich die Frage was der Cast von -1 nach Cardinal mit der -1 anstellt. Warum nicht 0 oder eins übergeben je nach dem. 0 sollte das erste Icon sein.

So getestet:
ausblenden Delphi-Quelltext
1:
ShowMessage(IntToStr(Cardinal(-1)));					

Ergibt: 4294967295
Stefan-W Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 475

Win 7 SP1
D2005 PE
BeitragVerfasst: Fr 16.01.04 21:53 
Jetzt gehts (mit dem 'Cardinal(-1)')

vielen Dank!!!

mfg Stefan

@Luckie mit 1 oder 0 bekommt man das Handle auf das jewielige Icon in der Datei. und nicht die Anzahl der enthaltenen Icons
KidPaddle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 351

WinXP,Linux
D7 Prof, XE7
BeitragVerfasst: Sa 17.01.04 11:23 
In der Windows - Hilfe steht das man -1 übergeben soll. Der C-Compliler wandelt das dann in $FFFFFFFF um, was der ausgegebenen Dezimalzahl entspricht, und genau das wird erreicht mit dem CARDINAL(-1).

Das wird übrigens bei vielen Funktionen, wie z. B. MessageBeep(CARDINAL(-1)), gefordert. Ich habe den tieferen Sinn noch nicht verstanden, auf der einen Seite die Typen mit UINT zu deklarieren aber -1 übergeben zu lassen, warum nicht gleich dann als INT deklarieren? Vieleicht wegen des größeren Bereiches?

Gruß
KidPaddle