Announcement

Collapse
No announcement yet.

Bitmap in *.res und dann verwnden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bitmap in *.res und dann verwnden

    Hallo zusammen!<BR><BR>Ich habe ein kleines Problem ein paar kleine Bitmaps in eine Resourcendatei einzubinden und dann zu verwenden.<BR><BR>Bisher habe ich mal eine *.rc geschrieben:<BR>1 Cursor pointdown.cur<BR>2 Bitmap rot.bmp<BR>3 Bitmap gelb.bmp<BR><BR>Habe diese auch korrekt in mein Projekt eingebunden.<BR>Dann wollte ich:<pre> for i:=1 to 42 do
    TImage(FindComponent('im'+IntToStr(i))).Picture.Bi tmap.LoadFromResourceName(HInstance,makeIntResourc e(3));</pre>machen, bekomme aber immer eine Zugriffsverletzung.<BR>Das mit dem Cursor funktioniert.<BR><BR>Wo liegt mein Fehler?<BR><BR>Gruß<BR>Jens

  • #2
    Ich schätze mal das makeIntResource(3) innerhalb des LoadFromResourceName ist nicht korrekt.
    Eventuell ist aber auch Picture oder Bitmap noch nil. Das solltest Du mal im Debugger prüfen.

    Für die Fehlersuche solltest Du die ganze Zeile aufsplitten:

    aImg := TImage(FindComponent('im'+IntToStr(i)));
    if aImg <> nil then
    begin
    if aImg.Picture <> nil then
    begin
    if aImg.Picture.Bitmap <> nil then
    begin
    aImg.Picture.Bitmap.LoadFromResourceName(HInstance ,'1');
    end;
    end;
    end;

    Ich selbst mache soetwas allerdings immer über einen ResourceStream.

    In die rc-Datei kommen die Einträge in etwa so:

    ID_PIC1 RC_DATA IrgendeinBild.bmp
    ID_PIC2 RC_DATA EinAnderesBild.bmp

    Den ResourceStream kann man dann wie folgt nutzen:

    aResStream := TResourceStream.Create(HInstance,'ID_PIC1','RC_DAT A');
    try
    aResStream.Position := 0;
    aImg.Picture.Bitmap.LoadFromStream(aResStream); // Achtung: aImg.Picture.Bitmap darf nicht nil sein!
    finally
    aResStream.Free;
    end

    Comment

    Working...
    X