2010-11-19 3 views
4

Ich habe Stunden über das Netz suchen, mit Google, für PDF-Dateien versucht, und noch nicht eine Bildressource in Delphi 7 zu laden ..Delphi 7 -> Kann nicht Laden ein Bild aus einer Ressourcendatei

Mein test.rc Datei so geht:

1 RT_BITMAP "1.bmp" 

ich die test.rc Datei in meinem Projekt hinzugefügt haben mit Ausbau-> .. die ein Test.res erstellenden Projekt hinzufügen Datei nach Build und scheint automatisch die .res Datei in mein Projekt aufgenommen zu haben (weil die Verwendung der {$ R test.res} würde sagen, dass ich diese Ressource bereits verwende). Ich habe auch versucht, die test.res aus dem Projekt mit Projekt-> Entfernen von Projekt .. und manuell Hinzufügen der {$ R test.res} zu meinem Projekt.

aber egal wie ich sind die Test.res Datei .. ich die

Projekt Project2.exe angehoben Ausnahme Klasse EAccessViolation mit Meldung ‚Zugriffsverletzung bei Adresse 00408D0C in Modul "Projekt2.exe". Lesen Sie von Adresse 00000001 '. Der Prozess wurde gestoppt. Verwenden Sie Schritt oder Ausführen, um fortzufahren.

auf den ersten habe ich

Image1.Picture.Bitmap.LoadFromResourceID(hInstance,1); 

Denn das ist, was ich mit Google gefunden. Und ich habe diesen Fehler bekommen. Später versuchte ich

procedure TForm1.Image1Click(Sender: TObject); 
var bBitmap : TBitmap; 
begin 

bBitmap := TBitmap.Create; 
try 

    bBitmap.Handle := LoadBitmap(hInstance, '1'); 
    Image1.Width := bBitmap.Width; 
    Image1.Height := bBitmap.Height; 
    Image1.Canvas.Draw(0,0,bBitmap); 
finally 

    bBitmap.Free; 
end; 


end; 

Das hat mir keine Fehler bekommen, und nither es das Bild zeigte so das Problem ungelöst bleibt ..

ich ein Neuling auf der Verwendung von Ressourcen bin, aber ich muss einige Bilder in Ressourcen laden, bevor ich mein Projekt freigeben, damit die .BMP Dateien nicht mit ...

getäuscht werden, würde irgendeine Hilfe in hohem Grade geschätzt werden!

+0

Zurück zu den Grundlagen, warum müssen Sie dies tun? Warum weisen Sie die Bitmap nicht nur zur Entwurfszeit dem Bild zu? Oder, wenn Sie eine Art dynamisches Laden wünschen, warum benutzen Sie nicht eine TImageList und laden von dort das ausgewählte Bild zur Laufzeit? –

+0

Meine * .rc-Dateien enthalten Zeilen wie 'IDB_BLUBB BITMAP DISCARDABLE" Blubb.bmp "', d. H. Ressourcentyp "BITMAP" und nicht "RT_BITMAP". Vielleicht ist das der Schuldige. –

+0

@ PA- Ich habe eine visuelle Schnittstelle einer Maschine. Die einzige Möglichkeit, eine TImageList mehr als einmal zu verwenden, ist das Laden eines Standardwerts.bmp-Datei an die Bildkomponente und nur dann ein anderes Bild aus der Bildliste laden (weil onces Sie ein Bild von TImageList geladen haben, können Sie kein anderes Bild in dieselbe Bildkomponente laden); Ich brauche diese Standard-BMP-Bilddatei in einer Ressource, damit sie nicht mit – user513185

Antwort

7

Ich reproduzierte genau das gleiche Problem in einem Testprogramm.

Ich dann geändert RT_BITMAP zu BITMAP, neu kompiliert RC und getestet.

Es funktioniert.

+0

gemildert wird. :) Danke vielmals! Was ich getan habe, ist, dass meine .RC-Dateien genauso modifiziert wurden, wie Sie es vorgeschlagen haben (Ersetzen Sie RT_BITMAP nur durch BITMAP). Und verwenden Sie nur eine Anweisung, um die Ressource zu laden: Image1.Picture.Bitmap.LoadFromResourceID (hInstance, 1); Das hat den Job erledigt! Es waren keine weiteren Ergänzungen erforderlich. - Verwenden von Delphi 7 Pro. Danke PA, du hast keine Ahnung, wie sehr du mir dabei geholfen hast! :) – user513185

+0

P.S - Ich habe die .rc-Datei mit Project-> Add to Project .. geladen. - Ich hoffe wirklich, dass dies anderen helfen wird, denen dies begegnet. – user513185