Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   BRCC32 und PNG-Icons (https://www.delphipraxis.net/194978-brcc32-und-png-icons.html)

Codehunter 24. Jan 2018 07:46

BRCC32 und PNG-Icons
 
Hallo!

Ich bin gerade auf ein altes Problem gestoßen, das mir Rätsel aufgibt. Ich habe mir ein Icon erstellt (.ico) in dem Grafik im PNG-Format enthalten ist. Wenn ich das in der Delphi-IDE über die Projektoptionen als Programmsymbol angebe, wird es problemlos akzeptiert. Wenn ich das selbe Icon dagegen in einer .rc-Datei angebe und diese .rc versuche mit BRCC32 zu kompilieren, dann bekomme ich:
Code:
Error icon.rc 1 15: Allocate failed
In der .rc steht folgendes drin:
Code:
MAINICON ICON "mainicon.ico"
Schaue ich aber in die Projektoptionen, dann wird dort genauso BRCC32 als Resourcencompiler verwendet. Also was macht die Delphi-IDE in dem Fall anders?

Im Netz findet man zu dem Problem eigentlich ausschließlich Workarounds in der Form, dass man einen anderen Resourcen-Compiler verwenden soll. Aber da es ja offensichtlich mit Delphi-Bordmitteln doch auch geht, würde ich gerne wissen wie - ohne externe Tools.

Grüße
Cody

Fukiszo 24. Jan 2018 08:44

AW: BRCC32 und PNG-Icons
 
Soweit ich weiß kann man der IDE einen anderen linker zuweisen, also einem externen, das ist das bordmittel.

Lieg ich falsch dann sorry!

Grüße

Redeemer 24. Jan 2018 08:49

AW: BRCC32 und PNG-Icons
 
Die IDE erstellt die .RES-Datei selber, zumindest war das früher so.

Uwe Raabe 24. Jan 2018 08:58

AW: BRCC32 und PNG-Icons
 
Zitat:

Zitat von Codehunter (Beitrag 1391821)
Ich habe mir ein Icon erstellt (.ico) in dem Grafik im PNG-Format enthalten ist.

Kannst du die ICO-Datei mal hier anhängen?

Fukiszo 24. Jan 2018 09:04

AW: BRCC32 und PNG-Icons
 
der fehler liegt bestimmt am compressed png, unkomprimiert müsste es klappen.

Codehunter 24. Jan 2018 10:07

AW: BRCC32 und PNG-Icons
 
Ich konnte den Fehler inzwischen etwas eingrenzen. BRCC32 scheint nicht mit dem PNG-Format mit Alphatransparenzen Probleme zu haben wie ich zuerst dachte, sondern mit dem seit Windows Vista gebräuchlichen Format von 256x256 Pixeln. Wenn ich diesen Riesenklotz aus dem Icon lösche, dann kompiliert BRCC32 problemlos auch Alpha-PNGs zur RES. Das erklärt allerdings immer noch nicht, wie die IDE die entsprechende RES-Datei zusammenbauen kann selbst wenn das 256x256-Bild in der ICO enthalten ist.

Redeemer 24. Jan 2018 10:13

AW: BRCC32 und PNG-Icons
 
BRCC weiß überhaupt nicht, was eine PNG-Datei ist und speichert sie deshalb wie jede andere unbekannte Datei (RT_RCDATA) ab, was völlig selbstverständlich problemlos klappt. Bitmap, Icon/Cursor sowie RIFF-ANI sind die einzigen Grafikformate, die für die RES ein anderes als das originale Format vorsehen, weshalb sich der Compiler nicht inhaltlich um Sachen wie PNG kümmern muss.

Codehunter 24. Jan 2018 10:59

AW: BRCC32 und PNG-Icons
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Redeemer (Beitrag 1391845)
BRCC weiß überhaupt nicht, was eine PNG-Datei ist und speichert sie deshalb wie jede andere unbekannte Datei (RT_RCDATA) ab, was völlig selbstverständlich problemlos klappt. Bitmap, Icon/Cursor sowie RIFF-ANI sind die einzigen Grafikformate, die für die RES ein anderes als das originale Format vorsehen, weshalb sich der Compiler nicht inhaltlich um Sachen wie PNG kümmern muss.

Tja wär ja schön wenns so wäre. Ist es aber nicht. Probiert es selbst aus. Ich habe die betreffenden Dateien als ZIP angehängt. Die beiden Varianten unterscheiden sich nur dadurch, dass in mainicon.ico eine zusätzliche Version mit 256x256 Auflösung enthalten ist und in mainicon2.ico nicht. Einfach die rescompile.bat in der Befehlszeile aufrufen. (brcc32.exe muss im Suchpfad sein!)

PS: Ja, es ist das Icon von HeidiSQL :) Das ist das Projekt an dem ich grade dran bin.

Uwe Raabe 24. Jan 2018 12:19

AW: BRCC32 und PNG-Icons
 
Soweit ich weiß, verwendet die IDE die cgrc.exe - auch wenn der Eintrag in den Projektoptionen etwas anderes vorgaukelt.

Redeemer 24. Jan 2018 12:32

AW: BRCC32 und PNG-Icons
 
Zitat:

Zitat von Codehunter (Beitrag 1391848)
Zitat:

Zitat von Redeemer (Beitrag 1391845)
BRCC weiß überhaupt nicht, was eine PNG-Datei ist und speichert sie deshalb wie jede andere unbekannte Datei (RT_RCDATA) ab, was völlig selbstverständlich problemlos klappt. Bitmap, Icon/Cursor sowie RIFF-ANI sind die einzigen Grafikformate, die für die RES ein anderes als das originale Format vorsehen, weshalb sich der Compiler nicht inhaltlich um Sachen wie PNG kümmern muss.

Tja wär ja schön wenns so wäre. Ist es aber nicht. Probiert es selbst aus. Ich habe die betreffenden Dateien als ZIP angehängt. Die beiden Varianten unterscheiden sich nur dadurch, dass in mainicon.ico eine zusätzliche Version mit 256x256 Auflösung enthalten ist und in mainicon2.ico nicht.

Dein Projekt enthält keine PNG-Datei. Eine PNG in einer Icondatei ist immer noch eine Icondatei, die vom Ressourcenkompiler in diverse Bilddateien (Bitmaps und eben eine PNG) zerlegt wird, die jeweils als RT_ICON (auch: Icon Entry) eingebunden werden. Auch generiert er ein RT_GROUP_ICON mit Verweisen auf diese. Die Einbindung einer PNG-Datei als RT_ICON, das wie erwähnt anders RT_RCDATA oder ein (technisch identischer) benutzerdefinierter String-Typ eigentlich eine Veränderung der Ressource benötigt, ist dem BRCC für PNG unbekannt (korrekt wäre: keine Veränderung, anders als Bitmap-Icon-Entries, die verändert werden müssen), das Ding ist schließlich seit 19 Jahren nicht mehr angefasst worden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:14 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz