Seite 2 von 3

Re: Datei später einfügen

Verfasst: 24.04.2010 20:02
von rolaf
Lisa85 hat geschrieben:Nun das mit der Textdatei war nur ein Beispiel.
Es kann auch Audio sein oder ein Bild oder ein Video oder irgendeine Rohdatei.
Das fertige Programm soll sich selber auslesen können.
Es soll eine Datei ins fertige Programm geschrieben werden so dass das fertige Programm die Datei lesen und anzeigen kann.
Aber wie?
Im Prinzip nichts anders als mit einer Textdatei. Dann nimmst du eben ein Archiv mit sämlichen Dateien und fügst dem als erste Datei eine Steuerdatei bei, die deiner Exe die Anweisungen gibt was zu tun ist.

Die Exe ist nicht ein Klumpen wo man mal was anhängt und dann macht die das schon. Die Funktionalitäten mußt du vorher alle deiner Exe beibringen, womit wir wieder bei Kaerus Antwort sind.

Re: Datei später einfügen

Verfasst: 24.04.2010 20:04
von ts-soft
Hab ich doch schon geschrieben. Ob txt oder mucke oder virus macht beim anhängen keinen Unterschied.
Die von Dir erwähnten programme packen das vorher noch.
Aber ich merke schon, das ganze ist dir noch zu kompliziert, also übe erstmal was leichtes.

// edit
hier ein pseudocode zum erstellen:

Code: Alles auswählen

DataSection
  startsetup: IncludeBinary "Setup.exe" : endsetup :
EndDataSection

; packe alle Dateien.

; schreibe Setup.exe
FF = CreateFile(#PB_Any, "Setup.exe")
If FF
  WriteData(FF, ?startsetup, ?endsetup - ?startsetup)
  FF2 = ReadFile(#PB_Any, "meinpack.pack")
  If FF2
    length.q = Lof(FF2)
    *mem = AllocateMemory(length)
    If *mem
      ReadData(FF2, *mem, length)
      CloseFile(FF2)
      WriteData(FF, *mem, length)
      WriteQuad(FF, length)
      FreeMemory(*mem)
    EndIf
  CloseFile(FF)  
  EndIf
EndIf
//edit 2
Beispiel für Setup.exe:

Code: Alles auswählen

FF = ReadFile(#PB_Any, ProgramFilename())
If FF
  FileSeek(FF, Lof(FF) - SizeOf(Quad))
  length.q = ReadQuad(FF)
  FileSeek(FF, Lof(FF) - length - SizeOf(Quad))
  ; jetzt lesen und entpacken
  ; ....
  CloseFile(FF)
EndIf

Re: Datei später einfügen

Verfasst: 24.04.2010 20:18
von Lisa85
Es geht darum dass ich gerne einen Code haben möchte so dass ich sehe wie das gemacht wird.
Für jedes Verfahren gibt es hier ein Beispiel (Code) aber keins für dieses Verfahren?
Gibt es kein Beispiel wo gezeigt wird wie man das machen kann?
14 Mal habe ich gefragt wie man das machen kann aber niemand kann mir ein Code posten?
Ist es doch zu kompliziert und aufwendig?
Ich will das gerne wissen beziehungsweise ich will einen Code sehen wie das aufgebaut ist.
Kann niemand mir helfen?
Danke erstmal für eure Hilfe ohne Code.

Edit: Kay... tssoft hat jetzt was gepostet... endlich... mal anschauen...

Re: Datei später einfügen

Verfasst: 24.04.2010 20:34
von c4s
Lisa85 hat geschrieben:Kay... tssoft hat jetzt was gepostet... endlich
Dies ist kein Support-Forum!
Entweder du schaffst dir selber das Wissen an um halbwegs mitreden zu können oder du bist mit der Hilfe der Mitglieder zufrieden.

Re: Datei später einfügen

Verfasst: 24.04.2010 20:57
von Lisa85
Entweder du schaffst dir selber das Wissen an um halbwegs mitreden zu können oder du bist mit der Hilfe der Mitglieder zufrieden.
LOL :lol: :bounce:

Ich bin doch zufrieden mit der Hilfe der Mitglieder nur wundere ich mich dass hier im Board keine Codes vorhanden sind.

Re: Datei später einfügen

Verfasst: 24.04.2010 21:05
von Kaeru Gaman
weil die Wenigsten diese Funktionalität brauchen.

und du hast vier postings geschrieben, wobei die ersten Beiden erstmal das Problem überhaupt erläutern mußten.
keine 14, und explizit nach code hast du auch nicht gefragt.

Antworten bestehen in erster Linie nicht aus Code, sondern aus Information, wie man etwas lösen kann.

und weitergehend ist ein Forum kein Echtzeit-Medium, also freu dich lieber,
dass du innerhalb von dreieinhalb Stunden überhaupt ne Antwort bekommen hast!

Re: Datei später einfügen

Verfasst: 24.04.2010 22:25
von Max_der_Held
Ich sehe das so und korrigiere mich wenn ich falsch liege ->

du möchtest ein laufendes Programm (dein eigenes) Verändern! o.O
und DAS geht dank Windows nicht ohne weiteres.

genauer gesagt+Anleitung -> Ich nehme an, dass du, um nur eine Exe datei zu haben und nicht haufenweise Config files etc. alles am Ende der Exe anhängen willst (als Ressourcen) und da dann z.b. die veränderte Bildschirmauflösung (bei einem Spiel z.B.) rein speichern willst, sobald die der Benutzer ändert.

Du kannst ein 2. Programm machen, nennen wir es "SetExeHintern.exe" (um das "Der Exe in den Arsch beissen" aufzugreifen)
Das SetExeHintern.exe ist als Ressource im Hauptprogramm angehängt (mittels includebinary etc.)
jetzt erstellst du SetExehintern.exe im gleichen ordner als Datei.
Starte die SetExeHintern.exe, beende dann dein Hauptprogramm. SetExeHintern.exe verändert jetzt dein hauptprogramm, dann ruft SetExeHintern das hauptprogramm wieder auf und das Hauptprogrammm Löscht die SetExeHintern.exe wieder.

Problem -> Virenscanner mögen sowas evtl. nicht.. (btw. was willst du eigendlich machen..? einen intelligenten virus??^^)

Dann hast du nur eine einzige Exe-Datei die sich selbst verändern kann, ist doch cool, oder?
damit sollte dein Problem gelöst sein

aber, um Kaeru zu meinem Unwillen ( :P ;) ) recht zu geben -> wir können ja schlecht den sourcecode auch reinschreiben :( zumindest hab ich persönlich grad keine zeit mehr..
Das ist eine Sache des engagements ;)
ps: das 85.. lässt das auf eine Jahreszahl schließen? nur der Interesse halber ;) :) :)
lg und viel spaß

schau bei der hilfe mal nach includebinary und datasection und schau die beispiele im examples ordner von Purebasic dazu an ;)

Re: Datei später einfügen

Verfasst: 24.04.2010 23:03
von Thorium
Davon das die .exe läuft konnte ich nichts lesen.

Typischerweise braucht man das für selbstextrahierende Archive.
Ein anderes Anwendungsbeispiel wäre ein Interpreter an den man Bytecode hängt um ein Executable zu erstellen.

ts-soft hat ja schon einen sehr einfachen Weg beschrieben das zu tun. Im Grunde kann da auch jeder selbst drauf kommen, wenn man sich die Dateizugriffsbefehle anschaut.

Re: Datei später einfügen

Verfasst: 25.04.2010 09:12
von Pelagio
Erst einmal Moin Moin und willkommen ON BOARD Lisa85

Ich bin zwar nicht so ein Freak wie die meisten die Dir geantwortet haben aber ich wundere mich schon etwas da ich aus den Antworten meine zu entnehmen das man irgendwie aneinander vorbei redet.
Lisa85 hat geschrieben:Ich habe ein Programm und will später eine Datei in meinem Programm einfügen.
Das Problem ist dass das Programm schon fertig kompiliert ist.
Hier wären meine erste Verständnis Frage:
Das Programm liegt schon als EXE vor und wird nicht erst von Dir geschrieben um die Daten, wenn sie als EXE vorliegt, einzufügen?
Lisa85 hat geschrieben:Gibt es eine Möglichkeit wie ich eine Datei darein kriege so dass mein kompiliertes Programm auf die Datei zugreifen kann?
Meine zweite Verständnis Frage:
Welche Dateien sollen überhaupt, zu welchem Zweck eingefügt werden?

Wenn das kompilierte Programm nicht veränderbar ist kann man sowieso nur das tun was das Programm zulässt, dazu müsste man wissen wie es aufgebaut ist und ob es nur aus einer EXE oder ob es noch mehr Dateien benötigt (zBsp. DLL, INI oder so....) um lauffähig zu sein (Bsp. eine INI in der das aussehen der Datei hinterlegt ist).
Wenn man dies Programm selber kompilieren kann ist es möglich dies so zu tun das es Deinen Wünschen entspricht. Dazu müsste man aber wissen zu welchem Zweck diese Dateien eingefügt werden sollen (Bsp. nur um diese zu lesen oder um die Sprache zu ändern).

Re: Datei später einfügen

Verfasst: 25.04.2010 21:00
von a14xerus
ich glaube lisa will ein setupprogram erstellen.

also eine exe, die SPÄTER mit den daten gefüllt wird die die exe dann später selbr wieder auslesen und verarbeiten soll.

WENN das so ist, dann sollte lisa aber auch den begriff "setup" nutzen, dann wäre das allen klar ;)

und WENN das so ist, dann hat TS ja schon den richtigen Code geliefert :)