AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datei Binder/Joiner

Ein Thema von CodenameCookie · begonnen am 6. Jan 2006 · letzter Beitrag vom 6. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von CodenameCookie
CodenameCookie

Registriert seit: 12. Mai 2005
87 Beiträge
 
Delphi 6 Personal
 
#1

Datei Binder/Joiner

  Alt 6. Jan 2006, 20:22
Hallöchen Community,

suche eine möglichkeit oder sogar vielleicht ein sourcecode (example) 2 Dateien ineinander zu verschmelzen (binden) . Habe mich schoneinmal umgesehen , es gab das Thema schoneinmal . Es soll kein Trojaner werden !

Vielen Dank im Vorraus

Grüsse CC
M.
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Datei Binder/Joiner

  Alt 6. Jan 2006, 20:28
Stub.dpr
Delphi-Quellcode:
{A very Lite stub for extraction and execution of multiple files.
Author: TM
}

program Stub;

uses
  Windows, ShellApi;

function EnumNamesFunc(hModule:THANDLE; lpType, lpName:PChar; lParam:DWORD):BOOL; stdcall;
var
  Info, FH, BW:DWORD;
begin
  Result:= True;
  Info:= FindResource(0, lpName, lpType);
  FH:= CreateFile(PChar('C:\'+lpName), GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  WriteFile(FH, LockResource(LoadResource(0, Info))^, SizeOfResource(0, Info), BW, nil);
  CloseHandle(FH);
  ShellExecute(0, 'OPEN', PChar('C:\'+lpName), '', '', 0);
end;

begin
  EnumResourceNames(0, RT_RCDATA, @EnumNamesFunc, 0);
end.
Binder:
Delphi-Quellcode:
{Ex Binder v0.1
Just an example of using Resources to bind multiple files into
a single executable.
Author: TM
}


unit untMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TfrmMain = class(TForm)
    BtnOpen1: TButton;
    Bevel1: TBevel;
    BtnBuild: TButton;
    OD: TOpenDialog;
    LstFile: TListBox;
    procedure BtnOpen1Click(Sender: TObject);
    procedure BtnBuildClick(Sender: TObject);
    procedure LstFileDblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.BtnOpen1Click(Sender: TObject);
begin
  if OD.Execute then
    LstFile.Items.Add(OD.FileName);
end;

procedure TfrmMain.BtnBuildClick(Sender: TObject);
var
  I:Integer;
  H, Size, FH, BR:DWORD;
  Local:String;
  Buf:Pointer;
begin
  Local:= ExtractFilePath(ParamStr(0));
  CopyFile(PChar(Local+'Stub\Stub.exe'), PChar(Local+'Out.exe'), False);
  H:= BeginUpdateResource(PChar(Local+'Out.exe'), True);
  for I:= 0 to LstFile.Items.Count-1 do begin
    FH:= CreateFile(PChar(LstFile.Items[I]), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
    Size:= GetFileSize(FH, nil);
    GetMem(Buf, Size);
    ReadFile(FH, Buf^, Size, BR, nil);
    CloseHandle(FH);
    UpdateResource(H, RT_RCDATA, PChar(UpperCase(ExtractFileName(LstFile.Items[I]))), MAKEWord(LANG_NEUTRAL, SUBLANG_NEUTRAL), Buf, Size);
    FreeMem(Buf);
  end;
  EndUpdateResource(H, False);
end;

procedure TfrmMain.LstFileDblClick(Sender: TObject);
begin
  if LstFile.ItemIndex <> -1 then
    LstFile.Items.Delete(LstFile.ItemIndex);
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Datei Binder/Joiner

  Alt 6. Jan 2006, 20:37
was ist das für ein monstercode?

Also einfach aneinanderhängen?

Delphi-Quellcode:
var s1,s2: TStream;
begin
  s1 := TFileStream.Create('C:\test\1.txt',fmOpenWrite);
  s2 := TFileStream.Create('C:\test\2.txt',fmOpenRead);

  s1.Position := s1.Size;
  s2.Position := 0;
  s1.CopyFrom(s2,s2.Size);
end;
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Datei Binder/Joiner

  Alt 6. Jan 2006, 20:47
Zitat von DGL-luke:
Also einfach aneinanderhängen?
Exakt. Er hat nur ein einfaches selbstentpackendes Archiv raus gemacht. Willst du die dateien wieder trennen, sollte man sich noch merken, wo eine Datei anfängt und die andere aufhört.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Datei Binder/Joiner

  Alt 6. Jan 2006, 20:48
monstercode?
das sind stub(7 Zeilen..) + builder, und stub kann unbegrenzt dateien drinnen haben ..
btw. code ist nicht von mir, sondern von TM
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Datei Binder/Joiner

  Alt 6. Jan 2006, 20:50
Naja... is mir jetzt auch klar, dass das ein sfx-modul ist...
Aber für Aufgabenstellung sollte meins ja wohl reichen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#7

Re: Datei Binder/Joiner

  Alt 5. Jan 2008, 02:11
ich beschäftige mich erade auch mit dem thema

jetzt ist aber meine Frage:


welche aufgaben hat die ".stub" (die beliebig viele daten drin haben kann)
und warum braucht man die um zum beispiel zwei .exe zu verbinden ??


mfg
counter
  Mit Zitat antworten Zitat
TonyMontana
(Gast)

n/a Beiträge
 
#8

Re: Datei Binder/Joiner

  Alt 5. Jan 2008, 06:45
Bei mir funktioniert der Quelltext des obigen Programms nicht korrekt!
Die letzte Datei, die entpackt wirdi st immer 0 Byte groß
Kann mir jemand weiterhelfen?

Ach ja und warum müssen die Resourcen Uppercase gespeichert werden(funktioniert nur so!)?
Die Dateinamen sehen dann nämlich nach dem Entpacken nicht so toll aus
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

Re: Datei Binder/Joiner

  Alt 5. Jan 2008, 14:49
Bei mir funktionierte dieser Code damals wunderbar. Ressourcen sind IMHO immer UpperCase, auch wenn du sie nicht UpperCase speicherst. Der Name, den du ausließt wird wieder in Großbuchstaben sein.

Warum die letzte Datei bei dir immer 0 Byte ist kann ich dir nicht sagen, wohl aber, dass man diesen Joiner um einiges verbessern kann, indem man zusätzlich eine Datei mit allen Dateipfäden / Dateinamen anhängt, anhand derer die Dateien dann richtig benannt und in andere Verzeichnisse als C: kopiert werden können. (Man könnte sie evtl. auch noch ausführen lassen oder sowas wie {APPDATA} als Umgebungsvariablen im Pfadnamen zulassen)
  Mit Zitat antworten Zitat
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#10

Re: Datei Binder/Joiner

  Alt 5. Jan 2008, 19:18
ich mein wenn ich den code öffne und starte dann sieht das programm ja nun ganz simpel aus

aber wo hau er denn die .exe hin die zusammengefügt wird?
(darum denk ich fast dass es bei mir auch nicht funzt, finde die nämlich nicht)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:52 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