Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie kann man Dateien von einer DLL Datei hollen und auf HD speichern? (https://www.delphipraxis.net/154689-wie-kann-man-dateien-von-einer-dll-datei-hollen-und-auf-hd-speichern.html)

thomas2009 21. Sep 2010 14:12

Wie kann man Dateien von einer DLL Datei hollen und auf HD speichern?
 
Hallo
ich habe mehrere Dateien in eine dll gespeichert. Wie kann ich diese wieder von dll auf die Festplatte speichern. Allerdings die Namen meiner Dateien weiß ich natürlich
Meine Dateien heißen :test01.mp3 bis test11.mp3

Luckie 21. Sep 2010 14:19

AW: Wie kann man Dateien von einer DLL Datei hollen und auf HD speichern?
 
was verstehst du unter "in DLL gespeichert"? Wie sind denn die Dateien in der DLL drin? Als Ressourcen? Dann einfach mit meinem ResourceStream.

thomas2009 21. Sep 2010 16:54

AW: Wie kann man Dateien von einer DLL Datei hollen und auf HD speichern?
 
meinedaten.RC :
video1.mp3 23 "video1.mp3"

Delphi-Quellcode:
implementation

{$R *.dfm}
{$R meinedaten.RES}

procedure TForm1.Button1Click(Sender: TObject);
var myRes : TResourceStream;
begin

myRes:=TResourceStream.Create(Hinstance,'video1.mp3','23');
myRes.SaveToFile('video1.mp3');
myRes.free;

end;
Fehler : video1.mp3 nicht gefunden

himitsu 21. Sep 2010 17:04

AW: Wie kann man Dateien von einer DLL Datei hollen und auf HD speichern?
 
Hinstance = Handle des aktuellen Moduls, also in diesem Fall von der EXE.
Du brauchst hier natürlich das Handle der DLL :zwinker:

Delphi-Referenz durchsuchenLoadLibrary


Was soll denn 23 für ein ResType sein?

PS: 23 <> '23'

thomas2009 21. Sep 2010 17:35

AW: Wie kann man Dateien von einer DLL Datei hollen und auf HD speichern?
 
Die Ressourcen sind sowohl in .Res als auch in einer .dll Datei

Ich möchte mit meinem Code zuerst versuchen die Dateien aus Ressource zu holen.

himitsu 21. Sep 2010 18:13

AW: Wie kann man Dateien von einer DLL Datei hollen und auf HD speichern?
 
Versuch es mal mit RCDATA (in der RES) und RT_RCDATA im Programm.

thomas2009 21. Sep 2010 19:29

AW: Wie kann man Dateien von einer Res / DLL Datei hollen und auf HD speichern?
 
Die RC kann ich leider nicht ändern
test1.mp3 23 "test1.mp3"
So ist in .Res gespeichert leider

lbccaleb 21. Sep 2010 21:31

AW: Wie kann man Dateien von einer DLL Datei hollen und auf HD speichern?
 
Ähh entschuldige die Frage, aber wei´t du ungefähr was du da überhaupt machst?

thomas2009 21. Sep 2010 23:21

AW: Wie kann man Dateien von einer DLL Datei hollen und auf HD speichern?
 
Das Problem liegt nur an .RC Datei
die Datei .rc wurde leider in diesem Form erstellt :
resource.rc :
test1.mp3 23 test1.mp3

wenn aber die resource so wäre :
test1.mp3 RCDATA test1.mp3

dann ist kein Problem die Dateien von rers zu holen :
Delphi-Quellcode:
var
   RS: TResourceStream;
begin
   RS := TResourceStream.Create(0, 'test1.mp3', RT_RCDATA);
   RS.SaveToFile('test1.mp3');
   RS.Free();
und so geht ohne Probleme
aber leider ist die .rc statt RCDATA, 23 erstellt
23 gilt algemeine für HTML files

Ich erhalte immer diese Fehlermeldung : test1.mp3 nicht gefunden
ich habe versucht auch mit dem code :
Delphi-Quellcode:
RS := TResourceStream.Create(0, Pchar('test1.mp3'), Pchar('23'));

sx2008 22. Sep 2010 02:15

AW: Wie kann man Dateien von einer DLL Datei hollen und auf HD speichern?
 
Microsoft hat ein etwas seltsames System um Resource Typen zu kennzeichnen.
Hier die Übersicht.
Einerseits ist der Resourcetyp eine Zahl, andererseits wird er über einen PCHAR übergeben.
Die Idee dahinter ist wohl, dass man die API so offen halten wollte, dass
man in Zukunft neben den Zahlenwerten auch Strings übergeben kann.
Das Makro MAKEINTRESOURCEA erledigt für C-Compiler den Trick:
Code:
#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))
Daher:
Delphi-Quellcode:
const
  _RT_HTML = 23; // bitte prüfen, ob RT_HTML nicht schon in Unit Windows definiert wurde
...
RS := TResourceStream.Create(0, Pchar('manual.html'), MAKEINTRESOURCE(_RT_HTML));
Es ist natürlich eine Verletzung der Konventionen,
wenn hinter der Resource RT_HTML ein MP3-Video abgelegt wird.
Das sollte man nicht tun.
Richtig wäre hier der Typ RT_RCDATA.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 Uhr.
Seite 1 von 2  1 2      

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