Autor Beitrag
com-chip
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 27

Win 98
D7 Personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: 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. :wink:
com-chip Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 27

Win 98
D7 Personal
BeitragVerfasst: Sa 29.01.05 20:54 
Das klingt mir schon irgendwie logisch :idea:

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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Sa 29.01.05 21:05 
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Sa 29.01.05 21:21 
Ja, mir kam es auch etwas umständlich vor. :lol:
Das mit den resource Dateien hab ich grad erst im SwissDelphiCenter gelesen.
com-chip Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 27

Win 98
D7 Personal
BeitragVerfasst: 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. :roll:
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 27

Win 98
D7 Personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Sa 29.01.05 22:08 
gehts mit RCDATA auch ned ?
com-chip Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 27

Win 98
D7 Personal
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 27

Win 98
D7 Personal
BeitragVerfasst: 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:

ausblenden 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 :oops:
com-chip Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 27

Win 98
D7 Personal
BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
{$R test.res}					


Dann noch die Funktion:

ausblenden volle Höhe Delphi-Quelltext
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:
{ following code is copied directly from Assarbad }  
function PutBinResTo(binresname: string; path: string): boolean;  
var ResSize, HG, HI, SizeWritten, hFileWrite: Cardinal;  
begin  
  result := false;  
  //find resource  
  HI := FindResource(hInstance, @binresname[1], 'BINRES');  
  //if legal handle, go on  
  if HI <> 0 then  
  begin  
    //load resource and check the handle  
    HG := LoadResource(hInstance, HI);  
    if HG <> 0 then  
    begin  
      //check resource size (needed to copy a block of data)  
      ResSize := SizeOfResource(hInstance, HI);  
      //create the file  
      hFileWrite := CreateFile(@path[1], GENERIC_READ or GENERIC_WRITE,  
        FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS,  
        FILE_ATTRIBUTE_ARCHIVE, 0);  
      //if succeeded ...  
      if hFileWrite <> INVALID_HANDLE_VALUE then  
      try  
        //write to it  
        result := (WriteFile(hFileWrite, LockResource(HG)^, ResSize,  
          SizeWritten, niland (SizeWritten = ResSize));  
      finally  
        //close file  
        CloseHandle(hFileWrite);  
      end;  
    end;  
  end;  
end;

Und ich dachte so kann ich es erzeugen, doch leider funktioniert es nicht. :(

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: So 30.01.05 05:30 
die funktion putbinresto muss in deinem source vor dem aufruf von button1click kommen, sonst kennt er es nicht ...