Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Zacherl,
7. Jan 2013
Wie ich grade gelesen habe, werden 256x256px Icons innerhalb der ICO Datei (oder Resource) als PNG abgelegt. Deshalb scheitert bei mir das Auslesen des Bitmap Headers. Um das zu Beheben, muss ich wohl einen kleinen Parser für den PNG Header schreiben, um die Maße und die Farbtiefe zu ermitteln. Der GroupIcon Header enthält diese Werte normalerweise auch, aber bei dem 256x256px Icon, sind diese...
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Zacherl,
6. Jan 2013
Alles klar, dann liegt der Fehler mit hoher Sicherheit schon in der Funktion, die das Icon läd. Kannst du mal probieren, das Icon als .ico Datei zu speichern? Tritt das Problem dann auch noch auf, oder nur dann, wenn das Icon aus einer Resource extrahiert wird?
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Zacherl,
6. Jan 2013
Puh da scheint einiges schief zu gehen :? Ich schaue bei Gelegenheit mal, ob ich die Fehlerursache auf die Schnelle finde. Hast du mal im Debugger geschaut, ob der GroupIcon Header für das entsprechende 256px Icon korrekte Werte beinhaltet?
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Zacherl,
2. Jan 2013
Hat bei mir funktioniert :) Habe getestet mit dem standard Delphi XE2 Icon.
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Zacherl,
2. Jan 2013
Hier schonmal ein temporärer Bugfix für das Problem. Werde den Code nochmal etwas überarbeiten, da die momentane Lösung etwas unsauber ist:
1) Die EnumResource* Callbacks hatten einen Fehler, bei dem Strings nicht korrekt nullterminiert wurden
2) Ich hatte versucht EndUpdateResource() aufzurufen, während die Datei noch per LoadLibraryEx() geladen war. Daher kam auch die "Zugriff verweigert"...
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Zacherl,
1. Jan 2013
Schau mal im Debugger per Single Step, an welcher Stelle innerhalb von SaveToResource() der Fehler auftritt. Und nimm vielleicht testweise mal absolute Pfade, statt der Relativen.
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Zacherl,
1. Jan 2013
Könnte es eventuell sein, dass der Windows Icon Cache noch das alte Icon beinhaltet und deshalb keine Änderung sichtbar ist? Der Code sieht eigentlich gut aus. Was sagt denn GetLastError() nach dem Aufruf von SaveToResource()?
Für Icon DLLs oder EXEn mit ordinalen Resourcenbezeichnern, kannst du die entsprechende Nummer einfach in PChar casten: LoadFromResource(hModule, PChar(1337));
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by Zacherl,
5. Okt 2012
Hatte ganz vergessen die SaveToResource Funktion komplett zu implementieren :-D Leider gibt es momentan ab und zu noch Probleme ein Icon hinzuzufügen, wenn die EXE vorher kein Icon besessen hat. Fals jemand einen Tipp für mich hat, bitte hier posten:
http://www.delphipraxis.net/170834-hauptdateiicon-main-icon-festlegen.html
:arrow: SaveToResource Funktion vervollständigt
Das Speichern...