Datei später einfügen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: Datei später einfügen

Beitrag 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.
Zuletzt geändert von rolaf am 24.04.2010 20:05, insgesamt 1-mal geändert.
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Datei später einfügen

Beitrag 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
Zuletzt geändert von ts-soft am 24.04.2010 23:13, insgesamt 5-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Lisa85
Beiträge: 22
Registriert: 24.04.2010 18:17

Re: Datei später einfügen

Beitrag 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...
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Datei später einfügen

Beitrag 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.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Lisa85
Beiträge: 22
Registriert: 24.04.2010 18:17

Re: Datei später einfügen

Beitrag 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.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Datei später einfügen

Beitrag 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!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: Datei später einfügen

Beitrag 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 ;)
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Datei später einfügen

Beitrag 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.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Re: Datei später einfügen

Beitrag 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).
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS]. :allright:
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Re: Datei später einfügen

Beitrag 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 :)
Antworten