Autor Beitrag
baphumet
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

Windows XP
Delphi 7
BeitragVerfasst: Do 24.09.09 18:30 
Hi

alle zusammmen, ich habe ein Programm geschrieben und nun möchte ich gerne ein Bitmap aus einer .res laden, dazu habe ich das Bild mithilfe des Ressource Hackers in diese eingefügt und im Quelltext die entsprechende Compilerdirektive eingegeben.

{$R PROJECT1.res}

Nur merkwürdig daran ist wenn ich kompiliere öffnet sich die Form nicht mehr, außerdem wird die .res ja schon über die .dpr eingebunden, jedenfalls sagt er mir das er das Bild nicht finden kann, ich besitze als BS Windows XP SP3 und die Delphi Version 7 von Borland. Habe es probiert mit den beiden Methoden
ausblenden Delphi-Quelltext
1:
2:
Image1.Picture.Bitmap.LoadFromResourceID
Image1.Picture.Bitmap.LoadFromResourceName

und hatte kein Glück, zeig euch mal den Aufbau meiner .res im RessourceHacker und hoffe ihr könnt mir helfen, bis dahin.
reshack

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 25.09.09 09:28 
Hallo und :welcome: im Forum!

Du hast die des Projekts verändert und wunderst dich, dass es da Probleme gibt? Nun ja...

Erstelle dir einfach eine eigene Ressourcendatei, z.B. mit dem entsprechenden Compiler, dann geht das auch. Das geht so:
jansfreeware.com/art.../delphiresource.html
baphumet Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

Windows XP
Delphi 7
BeitragVerfasst: Fr 25.09.09 18:49 
Hi,

hab ein Ressourcefile wie in der Anleitung angegeben erstellt und auch erfolgreich compiliert und die Compilerdirektive in meinen Quelltext eingefügt.
Jetzt sollte es doch möglich sein mithilfe der Methode LoadfromResourceFile auf meine Resourcen innerhalb der compilierten .res Datei zuzugreifen. Leider klappt das bei mir nicht, dies kann meiner Meinung nach nur am ersten Parameter beim Aufruf der Funktion liegen, denn genau bei dem Aufruf knallts. Der Aufruf erfolgt ja wie folgt:
ausblenden Delphi-Quelltext
1:
Image1.Picture.Bitmap.LoadfromResourceFile(param1,param2);					

Der zweite Parameter gibt den Ressourcennamen der Resource die sich in meinem compilierten File befindet an und wird als String übergeben, aber was muß ich für den ersten Parameter eingeben und was stellt er dar, ich werde auch aus der Delphi Hilfe nicht schlau, nur das es sich um einen Cardinal handelt, sollte standardmäßig hinstance sein und habs damit versucht, klappt aber per du nicht.

Folgende Fehlermeldung erscheint:
Zitat:
Project ??? raised exception class EResNotFound with message:
'resource ??? not found'

Ich zeig mal Screenshot von meinem .rc file und den dazugehörigen LoadfromResurceFile Aufruf.


Tschau


Zuletzt bearbeitet von baphumet am Do 01.10.09 18:11, insgesamt 2-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 25.09.09 19:23 
user profile iconbaphumet hat folgendes geschrieben Zum zitierten Posting springen:
Image1.Picture.Bitmap.LoadfromResourceFile(param1,param2);
Die Funktion sagt mir nichts. Welche Delphiversion ist das denn?

Ich kenne nur LoadFromResourceName und LoadFromResourceID. Und da ist dann die Frage was du als Instanz, aus der das geladen werden soll, angegeben hast. Und natürlich welchen Namen bzw. welche ID.
Der erste Parameter ist in deinem Fall HInstance, also die aktuelle Instanz deiner Exe.

// EDIT:
Hat sich erledigt mit dem Anhang...
So sieht das eigentlich korrekt aus, nur beim Ressourcentyp bin ich gerade unsicher, ob der anders sein muss, ich schau kurz.


Zuletzt bearbeitet von jaenicke am Fr 25.09.09 19:28, insgesamt 2-mal bearbeitet
baphumet Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

Windows XP
Delphi 7
BeitragVerfasst: Fr 25.09.09 19:26 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconbaphumet hat folgendes geschrieben Zum zitierten Posting springen:
Image1.Picture.Bitmap.LoadfromResourceFile(param1,param2);
Die Funktion sagt mir nichts. Welche Delphiversion ist das denn?

Ich kenne nur LoadFromResourceName und LoadFromResourceID. Und da ist dann die Frage was du als Instanz, aus der das geladen werden soll, angegeben hast. Und natürlich welchen Namen bzw. welche ID.
Der erste Parameter ist in deinem Fall HInstance, also die aktuelle Instanz deiner Exe.

Ja habe mich gerade geirrt, die Methoden heißen LoadfromResourceName und LoadfromResourceID, hab Delphi Version 7. OK jetzt weiß ich endlich was der erste Parameter bedeutet, trotzdem läufts nicht, woran liegt das?

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 25.09.09 19:43 
Delphi versucht offenbar mit einem leeren Ressourcentyp diese zu laden. Das kann ja nicht klappen. Du könntest das Laden mit Hilfe von TResourceStream selbst übernehmen und diesen Stream dann mit LoadFromStream in die Bitmap laden. Dann kannst du Namen und Typ der Ressource selbst angeben.
baphumet Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

Windows XP
Delphi 7
BeitragVerfasst: Fr 25.09.09 19:45 
Hab das Problem gelöst, der Resourcentyp muss von BMP zu Bitmap geändert werden, die einfachen Dinge liegen doch wirklich vor der Nase, jetzt funktioniert es einwandfrei, hab mit dem Resourcehacker nämlich die EXE angeschaut und bin darauf aufmerksam geworden, das BMP erstellt worden ist durch mein eigenes Resourcefile und Bitmap von Delphi her.