Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bild in .exe Datei speichern (https://www.delphipraxis.net/72887-bild-exe-datei-speichern.html)

fennercj 8. Jul 2006 19:28


Bild in .exe Datei speichern
 
Hi, ich habe eine Frage zu Delphi:
Wie kann man ein Bild (.bmp) in eine .exe Datei reinbauen, damit man nicht immer das Bild und die .exe Datei getrennt hat.

pacman1986 8. Jul 2006 19:31

Re: Bild in .exe Datei speichern
 
1 - hi und willkommen in der dp. :dp:
2- es gibt hier 2 moeglichkeiten
image machen und reinlade
imagelist kannst du mehrer bitmaps reinladen

Union 8. Jul 2006 19:38

Re: Bild in .exe Datei speichern
 
Alternativ zur Imagelist kannst Du das über eine Resourcendatei machen. Vorteil: Die Bilder könne auf der Platte liegen und blähen nicht die DFM-Dateine ins Unermessliche auf (wie bei ImageList, da werden die Bilder nämlich in HEX in der .dfm gespeichert).

Dazu sind folgenden Shcritte notwendig:
  • [1]Eine Datei mit der Endung .rc erstellen
    [2]Namen der Bilder dort eintragen, eins pro Zeile (z.B. MyPicture bmp c:\Bilder\Bild1.bmp)
    [3]Die Datei zum Projekt hinzufügen (z.B. {$R 'MyResource.res' 'MyResource.rc'})
    [4]Mit Delphi-Referenz durchsuchenTResourceStream die Bilder zur Laufzeit einlesen.
Beispiel:
Delphi-Quellcode:
ResStream := TResourceStream.Create(HINSTANCE, Pchar('MyPicture'), 'BMP');
try
   Image.Picture.Bitmap.LoadFromStream(ResStream);
finally
   ResStream.Free;
end;

fennercj 29. Jul 2006 11:02

Re: Bild in .exe Datei speichern
 
Wie kann man wenn man nur die *.exe Datei verwenden will das Bild einfügen?Ich will die anderen nicht mit benutzen müssen um das Bild hochzuladen.Wie kann ich alle Bilder in eine *.exe Datei einfügen?

ste_ett 29. Jul 2006 11:57

Re: Bild in .exe Datei speichern
 
Zitat:

Zitat von Union
Dazu sind folgenden Shcritte notwendig:
  • [1]Eine Datei mit der Endung .rc erstellen
    [2]Namen der Bilder dort eintragen, eins pro Zeile (z.B. MyPicture bmp c:\Bilder\Bild1.bmp)
    [3]Die Datei zum Projekt hinzufügen (z.B. {$R 'MyResource.res' 'MyResource.rc'})
    [4]Mit Delphi-Referenz durchsuchenTResourceStream die Bilder zur Laufzeit einlesen.

Punkt 2 mit allen Bildern wiederholen. :)

semo 29. Jul 2006 12:05

Re: Bild in .exe Datei speichern
 
bis zu delphi7 findet man unter "Tools" einen bildeditor, womit du dir so eine rc-datei erstellen kannst. bei delphi 2005 > weis ich das jetzt gar nicht

fennercj 29. Jul 2006 16:02

Re: Bild in .exe Datei speichern
 
Ach das war mit einem Bildeditor gemeint. Da kann man dann die Bilder einfügen.Danke für die Hilfe.

Cheffu 26. Nov 2006 14:08

Re: Bild in .exe Datei speichern
 
Zitat:

Zitat von Union
Alternativ zur Imagelist kannst Du das über eine Resourcendatei machen. Vorteil: Die Bilder könne auf der Platte liegen und blähen nicht die DFM-Dateine ins Unermessliche auf (wie bei ImageList, da werden die Bilder nämlich in HEX in der .dfm gespeichert).

Dazu sind folgenden Shcritte notwendig:
  • [1]Eine Datei mit der Endung .rc erstellen
    [2]Namen der Bilder dort eintragen, eins pro Zeile (z.B. MyPicture bmp c:\Bilder\Bild1.bmp)
    [3]Die Datei zum Projekt hinzufügen (z.B. {$R 'MyResource.res' 'MyResource.rc'})
    [4]Mit Delphi-Referenz durchsuchenTResourceStream die Bilder zur Laufzeit einlesen.
Beispiel:
Delphi-Quellcode:
ResStream := TResourceStream.Create(HINSTANCE, Pchar('MyPicture'), 'BMP');
try
   Image.Picture.Bitmap.LoadFromStream(ResStream);
finally
   ResStream.Free;
end;

Kann mir bitte jemand genau schreiben wie der Quelltext, die Resource-Datei und die Schritte aussehn müssten wenn ich die Dateien "c:\1.bmp" und "c:\2.bmp" in das Programm laden will?
Den ich versteh nicht was für eine Variable ResStream ist, was genau man als "MyPicture" schreiben soll bei 2 Dateien und anderes.

Schonmal Danke für antworten.

Cheffu 27. Nov 2006 18:43

Re: Bild in .exe Datei speichern
 
Kann mir dies keiner beantworten?

Luckie 27. Nov 2006 19:01

Re: Bild in .exe Datei speichern
 
Ja die Suche: Hier im Forum suchenTResourceStream.

Cheffu 27. Nov 2006 19:15

Re: Bild in .exe Datei speichern
 
Zitat:

Zitat von Luckie
Ja die Suche: Hier im Forum suchenTResourceStream.

Das habe ich schon probiert, aber ich kenne mich mit Delphi zu wenig aus, um diese Erklährungen zu verstehen. Ich bräuchte einfach anhand meines oben genannten Beispiels einen eindeutigen Quelltext, in dem die Namen vorkommen, um die Bedeutung der einzelnen Variablen zuordnen zu können.

Luckie 27. Nov 2006 19:19

Re: Bild in .exe Datei speichern
 
Und was ist hier mit: http://www.delphipraxis.net/internal...resourcestream Was soll man da noch erklären?

Cheffu 27. Nov 2006 19:46

Re: Bild in .exe Datei speichern
 
Man soll erklähren was welche Befehle man wo rein schreiben muss um den gewünschten Effetk zu haben.

Einfach ein Thread, in dem ein einfachen konkreten Beispiel wie das von mir gesagt von mir mit "1.bmp" und "2.bmp" beschreibt würde für viele mit dem selben Problem viel erklährender sein als alle andere Threads, in denen es um ein ganz spezifischen Problem geht.
Vielleicht sollte man auch noch kurz dazu schreiben wie das selbe bei Gifs und JPGs funktioniert und schon werden vermutlich all diese fragen sehr schnell und einfach erklährt.

Aber das ist nur meine Meinung, den gerade Anfänger bringt es relativ wenig Code-Schnipsel an den Kopf geworfen zu bekommen, bei denen man vorher 5 andere Sachen, die man dan noch nicht wissen kann, programmieren muss, um auch den Effekt zu bekommen den man will.

Cheffu 27. Nov 2006 22:36

Re: Bild in .exe Datei speichern
 
löschen

Blackheart 28. Nov 2006 00:22

Re: Bild in .exe Datei speichern
 
Hallo
Ich versuchs mal.
Also mal ein Beispiel für Bmp.
Als erstes packst Du drei Bmp in deinen Projektordner mit dem Namen

Bild1.bmp, Bild2.bmp, Bild3.bmp

Als zweites nimmst Du einen Texteditor und schreibst folgendes dort rein

MyBild1 BITMAP "Bild1.bmp"
MyBild2 BITMAP "Bild2.bmp"
MyBild3 BITMAP "Bild3.bmp"

und speicherst die Datei als MyResource.rc

Als drittes suchst du in Delphi die Brcc32.exe, liegt wahrscheinlich im Bin Verzeichnis von Borland
kopierst Sie und fügst Sie in deinen Projektordner ein.
Dann nimmst Du deine MyResource.rc und schiebts sie per Drag & Drop auf die Brcc32.exe
Diese erzeugt Dir dann eine Res Datei mit dem Namen MyResource.res

Dann erstellst Du dein Projekt - Ein Button, Ein Image und gibst unteren Delphi Code ein.
Alles abspeichern und und Starten.



Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Zaehler:Integer;
implementation

{$R *.dfm}
{$R MyResource.res} //Hier die res Datei angeben

procedure TForm1.Button1Click(Sender: TObject);
begin
  Inc(Zaehler); //Zähler erhöhen
  if Zaehler > 3 then Zaehler:=1; //Wenn letztes Bild erreicht Zähler zurücksetzen
  Image1.Picture.Bitmap.LoadFromResourceName(HInstance,'MyBild'+IntToStr(Zaehler)); //Bild laden je nach Zähler
end;

end.
Ich Hoffe konnte weiter helfen.

Cheffu 28. Nov 2006 12:44

Re: Bild in .exe Datei speichern
 
Dieses Beispiel wird blutige Anfänger wohl wegen dem Zaehler überfordern, aber sonst find ich das sehr gut so.
Habs mit ein paar Spielereien zwar inzwischen hinbekommen gehabt, aber so eine Beschreibung sollte man ein geschlossenes Thread witmen, auf das man jeden der das Problem hat definitiv verlinken kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz