Entwickler-Ecke
Windows API - Ressourcen können nicht gefunden werden
FrEaKY - Di 10.05.11 17:02
Titel: Ressourcen können nicht gefunden werden
Ich sitze hier seit Stunden an einem Problem, das mich fast in den Wahnsinn treibt. :autsch:
Ich versuche ein BITMAP aus einer Ressource zu laden und nie passiert was. Mittels GetLastError bekomme ich
1812 - ERROR_RESOURCE_DATA_NOT_FOUND, was absolut unmöglich ist. Ich hab schon dutzende Kombinationen probiert, mit Delphis ImageEditor, ResourceHacker, mit RC-Dateien. Nichts funktioniert.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var bmp: hbitmap; begin bmp := LoadBitmap(hinstance, MAKEINTRESOURCE(100));
err := GetLastError; MessageBox(hw1, pointer(inttostr(err)),'', 0); end; |
Die Ressource lade ich ganz einfach mit:
Und diese wird aus
RESOS.rc erstellt, mittels
Habe aber wie gesagt auch noch andere Kombinationen probiert, sogar nur den ImageEditor von Borland genommen. Nichtmal damit geht es.
Das ist pure Qual bei dem Wetter. :roll:
Weiß einer, was da los sein könnte?
jaenicke - Di 10.05.11 17:24
FrEaKY hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3:
| err := GetLastError; MessageBox(hw1, pointer(inttostr(err)),'', 0); end; | |
Warum nicht einfach:
Delphi-Quelltext
1: 2: 3:
| ShowMessage(SysErrorMessage(GetLastError)); MessageBox(hw1, PChar(IntToStr(err)), '', 0); |
Und was die Ressourcen angeht, nimm doch einfach einen normalen Bezeichner, wenn das so bei dir nicht geht. Makeintresource ist jedenfalls wohl ohnehin unpassend für deine Ressourcendatei.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| var bmp: hbitmap; begin bmp := LoadBitmap(hinstance, 'Beispiel'); Image1.Picture.Bitmap.Handle := bmp; ShowMessage(SysErrorMessage(GetLastError)); end; |
Ich vermute einmal das geht, grad keine Zeit zum Testen.
FrEaKY - Di 10.05.11 17:49
Leider immer noch das gleiche Ergebnis. Fehler 1812. Ich hab noch vergessen zu erwähnen, dass das hier nonVcl ist. Also SysErrorMessage geht hier nicht.
Was aber interessant ist: wenn ich bei LoadBitmap hInstance durch 0 ersetze, kommt Fehler 1814. ERROR_RESOURCE_NAME_NOT_FOUND.
Naja, interessant um nicht zu sagen es macht die Sache nur noch verwirrender... o_O
Delete - Di 10.05.11 17:52
C:\Dokumente und Einstellungen\Michael>net helpmsg 1812
Die angegebene Image-Datei enthält keinen Ressourcenabschnitt.
jaenicke - Di 10.05.11 17:53
FrEaKY hat folgendes geschrieben : |
Ich hab noch vergessen zu erwähnen, dass das hier nonVcl ist. |
Ach son Zeugs... naja, ich sag nix weiter...
Vielleicht so?
Delphi-Quelltext
1:
| bmp := LoadBitmap(GetModuleHandle(nil), 'Beispiel'); |
// EDIT:
Und wenn das auch nicht geht, hast du bei deinem nonVcl-Gespiele irgendetwas Wichtiges rausgeworfen...
FrEaKY - Di 10.05.11 17:56
WOW! Das ging auf Anhieb! Da fällt mir aber ein Stein vom Herzen :D
Dankeschön
jaenicke - Di 10.05.11 17:59
Dann hast du in der Unit SysInit vermutlich den Abschnitt in _InitExe oder so herausgeworfen, der HInstance setzt. Dann kannst du das natürlich auch nirgends verwenden, was schlecht ist, weil das öfter benutzt wird.
FrEaKY - Di 10.05.11 18:05
Eigentlich hab ich (diesmal) garnichts rausgeworfen. Standard-RTL und Stanard Windows-Unit :!: Sehr bizarr.
jaenicke - Di 10.05.11 18:41
Jetzt habe ich es doch einmal getestet.
Winziges Projekt ohne irgendwas anderes, funktioniert: :nixweiss:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| program Project112;
uses Windows, SysUtils;
{$R RESOS.RES}
var bmp: HBITMAP; begin bmp := LoadBitmap(HInstance, 'Beispiel'); MessageBox(0, PChar(IntToStr(GetLastError)), '', 0); end. |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!