Speicherbereich übernehmen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Elektrolurch
Beiträge: 168
Registriert: 11.10.2007 16:48
Wohnort: 49°26'51.46"N - 8°59'49.06"E
Kontaktdaten:

Speicherbereich übernehmen

Beitrag von Elektrolurch »

Hi All
ich habe gerade mit folgendem Code ein kleines Programm in den Speicher geladen um es dann wieder zu schreiben.
Und oh Wunder es war ein Linuxprogramm und es läuft noch obwohl mein Progrämmchen unter Vista lief.

Code: Alles auswählen

   If File.s
    If ReadFile(0, File.s) 
      length = Lof(0)
      *MemoryID = AllocateMemory(length)
      If *MemoryID
        bytes = ReadData(0, *MemoryID, length)
        Debug "Anzahl der gelesenen Bytes: " + Str(bytes)
      EndIf
      CloseFile(0)
    EndIf
  EndIf
  
  
  If CreateFile(0,Ziel.s)
  WriteData(0,*MemoryID, length) 
  EndIf
  CloseFile(0)
Nun habe ich folgende Idee, kann ich den Speicher irgendwie in mein PBProgramm aufnehmen, um bei Bedarf diese Programm wieder generieren zu können.
Das hätte für mich den Vorteil, dass ich auf meinem Stick nur ein EXE File zu transportieren hätte.
Hat da jemand eine Idee ?

Bye Andre
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Benutzeravatar
Elektrolurch
Beiträge: 168
Registriert: 11.10.2007 16:48
Wohnort: 49°26'51.46"N - 8°59'49.06"E
Kontaktdaten:

Beitrag von Elektrolurch »

Hi Kaeru Gaman

Gute Idee, leider habe ich mit dieser Funktion noch nichts gemacht.
Ich habe jetzt mal die Hilfe und die Beispielcodes etwas studiert und mal schnell was abgekupfert.

Code: Alles auswählen

Ziel.s="e:\File2"
FileStart: 
  IncludeBinary "e:\File1" 
FileEnd: 
 
If CreateFile(0, Ziel.s) 
  WriteData(0, ?FileStart, ?FileEnd - ?FileStart) 
  CloseFile(0) 
EndIf
Leider funktioniert es nicht und mit der Fehlermeldung kann ich nichts anfangen.

Code: Alles auswählen

Invalid memory access (write eror at address 9)
Was soll mir das sagen.

Bye Andre
Benutzeravatar
Elektrolurch
Beiträge: 168
Registriert: 11.10.2007 16:48
Wohnort: 49°26'51.46"N - 8°59'49.06"E
Kontaktdaten:

Beitrag von Elektrolurch »

Hi

Hab es selbst gemerkt. :oops:

Code: Alles auswählen

[DataSection
FileStart: 
  IncludeBinary "e:\File1" 
FileEnd: 
EndDataSection
Ziel.s = "e:\File2" 
If CreateFile(0, Ziel.s) 
  WriteData(0, ?FileStart, ?FileEnd - ?FileStart) 
  CloseFile(0) 
EndIf
So müßte es gehen.
Danke :allright:

Bye Andre
Antworten