Hi Sunlight. Das hört sich ja schonmal echt gut an
Allerdings scheint das nicht zu klappen
Ich hab mal versucht das anzuwenden am Beispiel einer einzigen Bitmap die einfach im Ordner liegt und 3128 Bytes groß ist. Allerdings geht das Programm einfach wieder ohne Meldung aus.
Hier mal nach Delphi übersetzt was ich probiert hab.
Delphi-Quellcode:
var
hTmp, hBitmap: THandle;
Buf: Array [0..3127] of Byte;
Dummy: DWORD;
begin
// Die Bitmap öffnen
hBitmap := CreateFile("bitmap2.bmp", FILE_READ_DATA, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nil);
// Temporäre Datei erstellen
hTmp := CreateFile("bitmap_tmp.bmp", FILE_READ_DATA or FILE_WRITE_DATA, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY or FILE_FLAG_DELETE_ON_CLOSE, nil);
ReadFile(hBitmap, Buf, SizeOf(buf), @Dummy, nil);
WriteFile(hTmp, Buf, Dummy, @Dummy, nil);
Player (* SDL_Surface *) := SDL_LoadBMP('bitmap_tmp.bmp');
CloseHandle(hTmp);
CloseHandle(hBitmap);
Bei dem @ vor den "Dummys" bin ich mir jetzt nicht so sicher.
Was mach ich falsch?
Edit:
Wenn ich anstatt FILE_ATTRIBUTE_TEMPORARY or FILE_FLAG_DELETE_ON_CLOSE einfach FILE_ATTRIBUTE_NORMAL nehme wird die Bitmap im Projektverzeichnis erstellt
und sieht einwandfrei aus
Edit2 und 3: Übersetzungsfehler beseitigt.
Chuck Norris has counted to infinity ... twice!