Autor Beitrag
FrEaKY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 235


D7
BeitragVerfasst: Di 10.05.11 17:02 
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.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
bmp: hbitmap;
begin
    bmp := LoadBitmap(hinstance, MAKEINTRESOURCE(100));

  //  SendMessage(himage1,STM_SETIMAGE,IMAGE_BITMAP,bmp);

    err := GetLastError;
    MessageBox(hw1, pointer(inttostr(err)),''0);
end;

Die Ressource lade ich ganz einfach mit:
ausblenden Delphi-Quelltext
1:
{$R RESOS.RES}					

Und diese wird aus RESOS.rc erstellt, mittels
ausblenden Quelltext
1:
100 BITMAP A.bmp					

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 10.05.11 17:24 
user profile iconFrEaKY hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
    err := GetLastError;
    MessageBox(hw1, pointer(inttostr(err)),''0);
end;
Warum nicht einfach:
ausblenden Delphi-Quelltext
1:
2:
3:
ShowMessage(SysErrorMessage(GetLastError));
// oder:
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.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  bmp: hbitmap;
begin
  bmp := LoadBitmap(hinstance, 'Beispiel');
  Image1.Picture.Bitmap.Handle := bmp; // als Beispiel

  ShowMessage(SysErrorMessage(GetLastError));
end;
ausblenden Quelltext
1:
Beispiel BITMAP A.bmp					
Ich vermute einmal das geht, grad keine Zeit zum Testen.
FrEaKY Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 235


D7
BeitragVerfasst: 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
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 10.05.11 17:52 
C:\Dokumente und Einstellungen\Michael>net helpmsg 1812

Die angegebene Image-Datei enthält keinen Ressourcenabschnitt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 10.05.11 17:53 
user profile iconFrEaKY hat folgendes geschrieben Zum zitierten Posting springen:
Ich hab noch vergessen zu erwähnen, dass das hier nonVcl ist.
Ach son Zeugs... naja, ich sag nix weiter...

Vielleicht so?
ausblenden Delphi-Quelltext
1:
  bmp := LoadBitmap(GetModuleHandle(nil), 'Beispiel');					

// EDIT:
Und wenn das auch nicht geht, hast du bei deinem nonVcl-Gespiele irgendetwas Wichtiges rausgeworfen...


Zuletzt bearbeitet von jaenicke am Di 10.05.11 17:56, insgesamt 1-mal bearbeitet
FrEaKY Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 235


D7
BeitragVerfasst: Di 10.05.11 17:56 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconFrEaKY hat folgendes geschrieben Zum zitierten Posting springen:
Ich hab noch vergessen zu erwähnen, dass das hier nonVcl ist.
Ach son Zeugs... naja, ich sag nix weiter...

Vielleicht so?
ausblenden Delphi-Quelltext
1:
  bmp := LoadBitmap(GetModuleHandle(nil), 'Beispiel');					

WOW! Das ging auf Anhieb! Da fällt mir aber ein Stein vom Herzen :D
Dankeschön
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 235


D7
BeitragVerfasst: Di 10.05.11 18:05 
Eigentlich hab ich (diesmal) garnichts rausgeworfen. Standard-RTL und Stanard Windows-Unit :!: Sehr bizarr.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 10.05.11 18:41 
Jetzt habe ich es doch einmal getestet.

Winziges Projekt ohne irgendwas anderes, funktioniert: :nixweiss:
ausblenden 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.