Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bilder in Dateien einpacken und zur Laufzeit listen/anzeigen (https://www.delphipraxis.net/88323-bilder-dateien-einpacken-und-zur-laufzeit-listen-anzeigen.html)

Blackheart 15. Mär 2007 11:37

Re: Bilder in Dateien einpacken und zur Laufzeit listen/anze
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo hab mal dein Prog kurz getestet und folgende Fehler sind Mir aufgefallen.
In der Dll befanden sich keine Bilder, arbeite mal beim erstellen vorsichtshalber mit kompletten Pfaden.
Beim aufruf der Dll hast Du Bilder.dll aufgerufen obwohl deine Dll - dll.dll hieß oder bessergesagt heißt.
Die Bilder hast Du versucht mit Ihrem Namen aufzurufen also 1.jpg usw., Du musst Sie aber mit dem Variablennamen
aufrufen die Du vergeben hast also Bild1, Bild2 usw.
Hoffe das Hilft Dir habs Im Grunde so gelassen bis auf die Zwei Sachen und den Zähler.

Delphi-Quellcode:
var
  Form1: TForm1;
  i :integer;
implementation

{$R *.dfm}

var
  Form1: TForm1;
  i:Integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  h :HINST;
  r :TResourceStream;
  j :TJpegImage;
begin
try
  inc(i); //Zähler nur zur Veranschaulichung
  h := LoadLibrary('dll.dll'); // Falscher Aufruf Bilder.dll
  if h <> 0 then
  begin
    r := TResourceStream.Create(h, 'Bild'+IntTostr(i), 'Jpeg'); //Falscher Bildname '1' anstatt Bild1
    j := TJpegImage.Create;
      try
        j.LoadFromStream(r);
        Image1.Picture.Bitmap.Assign(j);
      finally
        j.Free;
        r.Free;
      end;
  end;
  FreeLibrary(h)
  except
  Showmessage('Mehr Bilder Befinden sich nicht in der Dll !');
  i:=0;
end;
end;

end.

Mavarik 15. Mär 2007 12:31

Re: Bilder in Dateien einpacken und zur Laufzeit listen/anze
 
Zitat:

Zitat von torud
Eigenes Format? Wie meinst Du das? Alle Bilder, die ich nutze, sind png´s. Wie soll ich die in einem eigenen Format speichern???

Na Zum Beispiel so...

Lade Bild in Memorystream..

Dann ein Pattern mit XOR drüberlaufen lassen... Beispiel XOR $55$AA
Und dann speichern...

Schon kann kein Programm die Bilder mehr anzeigen...

Frank :coder:

turboPASCAL 15. Mär 2007 12:38

Re: Bilder in Dateien einpacken und zur Laufzeit listen/anze
 
Liste der Anhänge anzeigen (Anzahl: 1)
@Blackheart, Autsch ;) ne so nicht. Ich habe es dir mal Verbessert.
Einfach schnell und simpel. -.-^

torud 15. Mär 2007 12:54

Re: Bilder in Dateien einpacken und zur Laufzeit listen/anze
 
Zitat:

Zitat von Mavarik
Lade Bild in Memorystream..
Dann ein Pattern mit XOR drüberlaufen lassen... Beispiel XOR $55$AA
Und dann speichern...

Schon kann kein Programm die Bilder mehr anzeigen...

Hört sich interessant an, aber mit XOR und Konsorten habe ich noch NIE was gemacht...Wäre es dann nicht auch so, dass ich beim Laden des Bildes wieder diese XOR-Routine in umgekehrter Reihenfolge drüberlaufen lassen müsste, um aus dem Datenkram wieder Bilddaten zu machen!?

Vielleicht finde ich ja mal was im Netz dazu. Desweiteren muss ich, so denke ich nun bald ne Entscheidung fällen, ob die Daten nun in eine DLL sollen, oder in ein Zip, oder ob das dann mit der XOR-Variante gar nicht mehr nötig ist...Das klingt nun ziemlich interessant für mich, weil ich dann die Bilder einfach alle weiter in den Verzeichnissen so lassen könnte...*grübel* !?!?

Blackheart 15. Mär 2007 13:20

Re: Bilder in Dateien einpacken und zur Laufzeit listen/anze
 
@turboPASCAL Naja gut, aber eigentlich gings ja um torud sein Beispiel und da waren ja im Prinzip nur die zwei Fehler um es zum Laufen zu bringen.
Besser machen kann man es natürlich immer :wink: :thumb:

taktaky 9. Okt 2007 10:16

Re: Bilder in Dateien einpacken und zur Laufzeit listen/anze
 
Zitat:

Zitat von Blackheart
...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  h :HINST;
  r :TResourceStream;
  j :TJpegImage;
begin
try
  inc(i); //Zähler nur zur Veranschaulichung
  h := LoadLibrary('dll.dll'); // Falscher Aufruf Bilder.dll
  if h <> 0 then
  begin
    r := TResourceStream.Create(h, 'Bild1'+IntTostr(i), 'Jpeg');

    j := TJpegImage.Create;
      try
        j.LoadFromStream(r);
        Image1.Picture.Bitmap.Assign(j);
      finally
        j.Free;
        r.Free;
      end;
  end;
  FreeLibrary(h)
  except
  Showmessage('Mehr Bilder Befinden sich nicht in der Dll !');
  i:=0;
end;
end;

end.

Delphi-Quellcode:

    r := TResourceStream.Create(h, 'Bild1'+IntTostr(i), 'Jpeg'); // Problem mit +IntTostr(i)
// so funktioniert:
//r := TResourceStream.Create(h, 'Bild11', 'JPEG'); // aber (i) hat keine Rolle !
Das Beispiel "dll_test_neuerrer.zip" von @Turbopascal funktioniert super
Die Frage nun, kann man den Code anpassen, so man Video statt Bilder verwendet?

<>

DeddyH 9. Okt 2007 10:57

Re: Bilder in Dateien einpacken und zur Laufzeit listen/anze
 
Könntest Du endlich mal damit aufhören, das Forum mit immer derselben Frage zuzuspammen? :evil:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 Uhr.
Seite 2 von 2     12   

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