AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi PNGs oder Dateien allgemein in EXE einbinden und auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

PNGs oder Dateien allgemein in EXE einbinden und auslesen

Ein Thema von entwickler · begonnen am 11. Nov 2011 · letzter Beitrag vom 23. Dez 2011
Antwort Antwort
Seite 5 von 5   « Erste     345   
Benutzerbild von entwickler
entwickler

Registriert seit: 16. Feb 2011
Ort: Herten
78 Beiträge
 
Delphi 5 Professional
 
#41

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 17. Nov 2011, 19:33
@ DeddyH
Klar, immer her damit!

@ wicht
Klingt logisch, habs in ne Prozedur gepackt:

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

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  i : word;
begin
    for i := 1 to 493 do
      Memo.Lines.Add(inttostr(i) + ' RCDATA "' + inttostr(i)+ '.png"');
    Memo.Lines.SaveToFile('C:\Pokemon\Pokedex.rc'); // oder wohin auch immer
end;
War jetzt auch keine große Herausforderung
Traue einem PC nur soweit, wie du ihn werfen kannst.

Geändert von entwickler (17. Nov 2011 um 20:11 Uhr) Grund: Unvollständig
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#42

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 18. Nov 2011, 07:25
Komisch, mein Code zur Erstellung der Ressource sah beinah genauso aus . Das Projekt kann ich aber erst heute Abend hochladen, da ich es wie gesagt nur zu Hause habe.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von entwickler
entwickler

Registriert seit: 16. Feb 2011
Ort: Herten
78 Beiträge
 
Delphi 5 Professional
 
#43

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 18. Nov 2011, 08:44
Nicht schlimm, hauptsache es kommt

Übrigens, wie kann ich die Ressource den als Datei aus der exe heraus speichern (z. B. Pokedex.png als PNG- Datei speichern, oder auch eine exe oder dll)?
Traue einem PC nur soweit, wie du ihn werfen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#44

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 18. Nov 2011, 08:48
Mit Streams sollte das recht einfach zu machen sein. Mit TResourceStream Ressource holen, in einen TFileStream oder TMemoryStream kopieren und als Datei abspeichern.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von entwickler
entwickler

Registriert seit: 16. Feb 2011
Ort: Herten
78 Beiträge
 
Delphi 5 Professional
 
#45

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 18. Nov 2011, 08:53
Google hat mir folgendes Vorgeschlagen:

ResourceStream.Savetofile(''); geht das so ohne weiteres?
Traue einem PC nur soweit, wie du ihn werfen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#46

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 18. Nov 2011, 09:06
Scheint so, ich hatte übersehen, dass TResourceStream diese Methode ja bereits erbt. Damit entfällt dann auch der 2. Stream sowie das Kopieren.

[edit] So, hier ist das kleine Demo-Progrämmchen samt Ressourcen und der DLL. [/edit]
Angehängte Dateien
Dateityp: zip PokemonDemo.zip (4,46 MB, 8x aufgerufen)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (18. Nov 2011 um 16:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von entwickler
entwickler

Registriert seit: 16. Feb 2011
Ort: Herten
78 Beiträge
 
Delphi 5 Professional
 
#47

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 22. Nov 2011, 08:40
Danke, DeddyH, die DLL funktioniert einwandfrei.
Und speichern kann ich die Dateien auch ganz leicht mit dem Einzeiler:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  FDLLHandle := LoadLibrary(PChar(ExtractFilePath(ParamStr(0)) + 'imagedll.dll'));
  Randomize;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if FDLLHandle <> 0 then
    FreeLibrary(FDLLHandle);
end;

procedure TForm1.LoadPokemon(Index: Cardinal; aPicture: TPicture);
var
  ResStream: TResourceStream;
  png: TPngObject;
begin
  Assert((FDLLHandle <> 0) and Assigned(aPicture));
  if (Index < 1) or (Index > MAXPICINDEX) then
    raise Exception.CreateFmt('Index muss zwischen 1 und %d liegen.', [MAXPICINDEX]);
  ResStream := TResourceStream.CreateFromID(FDLLHandle, Index, RT_RCDATA);
  try
    ResStream.Position := 0;
    png := TPngObject.Create;
    try

// Einzeiler:
      ResStream.Savetofile('D:\Projekt_Pokémon\Bild.png'); // oder wo auch immer

      png.LoadFromStream(ResStream);
      aPicture.Assign(png);
    finally
      png.Free;
    end;
  finally
    ResStream.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  LoadPokemon(Random(MAXPICINDEX) + 1, Image1.Picture);
end;
Danke nochmal an euch alle
Ihr habt mir echt weitergeholfen!
Traue einem PC nur soweit, wie du ihn werfen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von entwickler
entwickler

Registriert seit: 16. Feb 2011
Ort: Herten
78 Beiträge
 
Delphi 5 Professional
 
#48

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 23. Dez 2011, 12:47
So, jetzt habe ich neue Grafiken vom Kollegen gekriegt, die haben dieselbe Auflösung, sind nur besser komprimiert und auch an den richtigen Stellen transparent. Inhaltlich können die EXE und die dll dasselbe wie in dem Beispielprogramm von DeddyH. Die dll hat jetzt nur noch ca. 1/4 der Ursprungsgröße; ebenso wie die Pokedex.res:
Angehängte Dateien
Dateityp: rar PokemonDemo.rar (1,03 MB, 9x aufgerufen)
Traue einem PC nur soweit, wie du ihn werfen kannst.

Geändert von entwickler (23. Dez 2011 um 12:49 Uhr) Grund: Unvollständige Antwort
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 5   « Erste     345   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz