AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap aus einer bestimmten Resource laden

Ein Thema von Amateurprofi · begonnen am 20. Mai 2020 · letzter Beitrag vom 21. Mai 2020
Antwort Antwort
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.062 Beiträge
 
Delphi XE2 Professional
 
#1

Bitmap aus einer bestimmten Resource laden

  Alt 20. Mai 2020, 19:12
Ich habe gelegentlich das Problem dass ich ein Projekt mehrere .res eingebunden habe, die jeweils Bitmaps enthalten.
Wenn sich die IDs der Bitmaps in den .res Dateien überschneiden, kommt es dann zu unliebsamen Effekten.
Beispiel:
A.Res enthält 2 Bitmaps
ID 1 = Bild eines Hammers
ID 2 = Bild einer Sichel
B.Res enthält 2 Bitmaps
ID 1 = Bild eines Lochers
ID 2 = Bild einer Hefters
Lade ich dann eine Bitmap mit Bmp.LoadFromResourceId(HInstance,1); dann wird z.B. ein Hammer gezeigt, wenn eigentlich der Locher gezeigt werden soll.
Der Ausweg für Helden ist, na klar, die IDs in den .res Dateien zu ändern, aber befriedigend ist das nicht.

Frage:
Gibt es eine Möglichkeit, eine Bitmap aus einer bestimmten .res zu laden?
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: Bitmap aus einer bestimmten Resource laden

  Alt 20. Mai 2020, 22:05
Zitat:
Der Ausweg für Helden ist, na klar, die IDs in den .res Dateien zu ändern, aber befriedigend ist das nicht.
Namen statt numerische Werte?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Bitmap aus einer bestimmten Resource laden

  Alt 21. Mai 2020, 00:49
dann wird z.B. ein Hammer gezeigt, wenn eigentlich der Locher gezeigt werden soll.
Selbst Schuld, wenn man nicht auf dem Compiler Linker hört, der das bemängelt und dann nur eines von Beiden einbindet.
Es ist garnicht möglich dass du sonstwie Beide, mit der selben ID/Name, laden kannst, da garnicht Beide im Compilat enthalten sind.

Du musst also die IDs bzw. Namen eindeutig machen.




Einziger Ausweg: Für jede RES eine eigene DLL verwenden,
da ja pro PE (EXE/DLL/BPL) die Ressourcen eindeutig sind (InstanceHandle + Name/ID).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (21. Mai 2020 um 00:52 Uhr)
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.062 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Bitmap aus einer bestimmten Resource laden

  Alt 21. Mai 2020, 01:01
Zitat:
Der Ausweg für Helden ist, na klar, die IDs in den .res Dateien zu ändern, aber befriedigend ist das nicht.
Namen statt numerische Werte?
Danke, Dolly.
Dann wird ich mir mal die Zeit nehmen, die .res Dateien, die standardmäßig verwende, umzustellen.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.062 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Bitmap aus einer bestimmten Resource laden

  Alt 21. Mai 2020, 01:05
dann wird z.B. ein Hammer gezeigt, wenn eigentlich der Locher gezeigt werden soll.
Selbst Schuld, wenn man nicht auf dem Compiler Linker hört,
Recht hast Du!
Ich hatte den Hinweis nicht bemerkt, habe es aber getestet und Ja, der Hinweis wird gezeigt, wenn sich die IDs überschneiden.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Bitmap aus einer bestimmten Resource laden

  Alt 21. Mai 2020, 06:41
Ich spiele zwar auch mit selbstgeschriebenen .RC die ich von Delphi (in der DRP/DPK) automatisch zur RES kompilieren lasse.
In PAS eingebunden, muß man selbst mit rc.exe, brc32.exe oder brcc32.exe die RC kompilieren.
{$R xxxx.rc xxxx.res} bzw. {$RESSOURCE xxxx.rc xxxx.res} , aber dieser zweite Parameter wird eben nur in den Projektdateien (DPR/DPK) ausgewertet und ansonsten ignoriert der Delphi-Compiler den Parameter einfach so, ohne was zu sagen.

Nett ist aber auch der integrierte Ressourcen-Manager im Delphi, womit man Dateien in die Ressource des Projekts (.dres) einfügen und verwalten kann.
Teilweise reicht es sogar eine Bitmap in das Projekt zu ziehen -> Projekt-Manager, neben seine Units.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (21. Mai 2020 um 06:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#7

AW: Bitmap aus einer bestimmten Resource laden

  Alt 21. Mai 2020, 09:59
Nett ist aber auch der integrierte Ressourcen-Manager im Delphi, womit man Dateien in die Ressource des Projekts (.dres) einfügen und verwalten kann.
Das ist mittlerweile meine bevorzugte Verfahrensweise. Da die beschriebene $R Direktive auch nur in der DPR funktioniert, kann man das auch gleich im Projekt direkt machen.

Es gilt dabei aber zu beachten, daß der bei Problemen mit der Projektdatei (dproj) oft gehörte Hinweis, einfach die dproj zu löschen und neu erzeugen zu lassen, mit dem obigen Vorgehen nicht kompatibel ist!
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:25 Uhr.
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