Autor |
Beitrag |
com-chip
      
Beiträge: 27
Win 98
D7 Personal
|
Verfasst: Sa 29.01.05 18:48
Hallo Leute!
Folgendes Problem: Ich möchte eine Datei, egal welcher Typ, in die exe Datei mit hinein packen. Wie mache ich denn das?? Muss ich die irgendwie in die .res kriegen?? Und dann wenn die Anwendung startet, dann soll sich diese Datei aus der exe Datei extrahieren und sich einfach in diesen Ordner kopieren. Geht das irgendwie?? Ich hoffe ihr habt die Frage verstanden, ich wusste nicht wie ich es formulieren sollte. 
|
|
Coder
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: Sa 29.01.05 20:15
Soweit ich weis, kannst du an eine exe Datei beliebig Text unten ranschmeisen.
Um sie dann zu extrahieren müsstest du sie mit einem FileStream aus der exe auslesen. 
|
|
com-chip 
      
Beiträge: 27
Win 98
D7 Personal
|
Verfasst: Sa 29.01.05 20:54
Das klingt mir schon irgendwie logisch
Aber wie hänge ich an der EXE Datei noch Text ran?? Ich müsste ja auch wissen wo wegen auslesen, verstehst du?? Wenn nicht schreib doch mal eien Beispielanwendung. Würde mich schon interessieren wie ich das genaz machen kann.
|
|
Coder
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: Sa 29.01.05 21:05
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Sa 29.01.05 21:12
warum kompliziert wenn es auch einfach geht ?
-> www.delphi-forum.de/...hlight=wav+abspielen
Edit:
oder hier: www.delphi-forum.de/viewtopic.php?t=33818 <- erklärung wie das ganze mit jedem dateityp funzt
Zuletzt bearbeitet von retnyg am Sa 29.01.05 21:37, insgesamt 1-mal bearbeitet
|
|
Coder
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: Sa 29.01.05 21:21
Ja, mir kam es auch etwas umständlich vor.
Das mit den resource Dateien hab ich grad erst im SwissDelphiCenter gelesen.
|
|
com-chip 
      
Beiträge: 27
Win 98
D7 Personal
|
Verfasst: Sa 29.01.05 21:48
OK! Die Datei hab ich drin. Zugreifen geht auch irgendwie aber wie krige ich die jetzt wieder raus?? Klingt vielleicht unlogisch, ist es aber nicht. Wenn ich diese jetzt drin habe, kann ich diese exe Datei weiter geben, und dann möchte ich diese per Knopfdruck wieder extrahieren also raus aus der exe in das selbe Verzeichnis. So können dann auch andere Programme darauf zugreifen welche von mir geschrieben sind. Versteht ihr?? Klingt ja fast wie ein zip Programm... Soll aber keines sein da ich nur eine kleine Datei mittransportieren muss. 
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Sa 29.01.05 21:58
entweder mit LoadFromResource aus dem speicher laden oder das teil erst auf die platte bannen mit folgener prozedur: www.delphi-forum.de/...ic.php?p=18527#18559
|
|
com-chip 
      
Beiträge: 27
Win 98
D7 Personal
|
Verfasst: Sa 29.01.05 22:00
Sorry wegen eben, mein Fehler. Ich hatte auf Aktuallisieren gedrückt da ich die Verbindung kurz gekapt habe, und da hat ers noch mal reingemacht.
Ich versuche es jetzt mal so wie ihr meint. Also den anderen Link. Ich geb dann bescheid. Übrigens, wenn man Bin oder Binäry eingibt, dann geht das bei mir leider nicht, ERROR sagt dann die Dos Eingabeaufforderung
Zitat: | nur musst du in dem .rc file als typ Binary oder BIN angeben, wenn ich mich recht erinnere. |
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Sa 29.01.05 22:08
gehts mit RCDATA auch ned ?
|
|
com-chip 
      
Beiträge: 27
Win 98
D7 Personal
|
Verfasst: Sa 29.01.05 22:20
Doch das ging bei RcDate. Bei Binary ging es auch, ich musste die Eingabeaufforderung nur einmal schließen und es noch einmal versuchen, dann ging das. Jetzt probiere ich noch mal schnell aus wie ich sie wieder raus kriege, sollte aber kein Problem sien.
|
|
com-chip 
      
Beiträge: 27
Win 98
D7 Personal
|
Verfasst: Sa 29.01.05 22:29
Hallo! Es gibt schon wieder ein Problem... Leider bekomme ich die Res nicht wieder auseinander. Wenn ich folgendes eingebe:
Delphi-Quelltext 1:
| PutBinResTo('MPEGDLL', ExtractFilePath(ParamStr(0))+'mpegdll.dll'); |
Damm kommt beim erzeugen eine Meldung "Undefinierter Bezeichner: "PutBinResTo""
Was soll ich denn dann machen?? Irgendwie funktz das bei mir nicht. Hab ich vielleicht irgendwas vergessen???
----------------------
Problem hat sich erledigt, hab den oberen Text vergessen 
|
|
com-chip 
      
Beiträge: 27
Win 98
D7 Personal
|
Verfasst: Sa 29.01.05 22:54
Kann man mir jetzt noch mal helfen und alles zusammenfassen?? Irgendwo ist heir ein fehler, ich weiß nur nicht wo. Also, die Datei Test.doc wir als Res erzeugt:
Zitat: | Testprogramm BinData chat.doc |
(das mache ich mit Eingabeaufforderung, funktioniert auch.)
Jetzt binde ich es ein:
Delphi-Quelltext
Dann noch die Funktion:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| function PutBinResTo(binresname: string; path: string): boolean; var ResSize, HG, HI, SizeWritten, hFileWrite: Cardinal; begin result := false; HI := FindResource(hInstance, @binresname[1], 'BINRES'); if HI <> 0 then begin HG := LoadResource(hInstance, HI); if HG <> 0 then begin ResSize := SizeOfResource(hInstance, HI); hFileWrite := CreateFile(@path[1], GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, 0); if hFileWrite <> INVALID_HANDLE_VALUE then try result := (WriteFile(hFileWrite, LockResource(HG)^, ResSize, SizeWritten, nil) and (SizeWritten = ResSize)); finally CloseHandle(hFileWrite); end; end; end; end; |
Und ich dachte so kann ich es erzeugen, doch leider funktioniert es nicht.
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.Button1Click(Sender: TObject); begin PutBinResTo('Testprogramm', ExtractFilePath(ParamStr(0))+'test.doc'); end; |
Was habe ich denn jetzt falsch gemacht?? Er sollte es doch jetzt in das selbe Verzeichnis schreiben in dem sich die Anwendung befindet, oder?? Aber das klappt nicht. Alles habe ich aber beachtet und müsste auch richtig sein, oder???
Bitte antwortet noch einmal, ich brauche dringend hilfe!! Heute wäre echt nicht schlecht. Danke im Voruas. Viele Grüße com-chip
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: So 30.01.05 05:30
die funktion putbinresto muss in deinem source vor dem aufruf von button1click kommen, sonst kennt er es nicht ...
|
|