EXE einmal Konfigurieren und dann nie wieder...

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Du musst es natürlich anpassen und auch Infos an die EXE anhängen.

Code: Alles auswählen

If ReadFile(0, ProgramFilename())
  FileSeek(0, FileSizeStubs)
  ; und jetzt daten lesen
EndIf
FileSizeStubs ist die Dateigröße ohne ExtraDaten, zb. 10 Kb, deine Exe mit Infos wird 11KB groß, und du Ließt einfach alles nach 10Kb ein und wertest es aus. So kanns du beliebige Infos an die Exe heften/lesen.

Hier mache ich das genauso:

http://www.purebasic.fr/german/viewtopi ... =puresetup
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Ronny S.
Beiträge: 73
Registriert: 24.11.2008 16:08

Beitrag von Ronny S. »

Ist wieder ein heisses Topic geworden was ich da so lese.
Ich sage immer, wenn es wirklich nicht funktionieren sollte, hilft in den meisten fällen immer :

Code: Alles auswählen

cmd.exe
Format C:
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

Beitrag von ts-soft »

Hier mal ein besseres Beispiel:
Erstmal die Exe, welche Daten von sich selbst liest, in diesem Beispiel gibts
sie nur einen Text im MessageRequester aus!

Code: Alles auswählen

EnableExplicit

Define.q FileSizeStubs = 7168; 2x erstellen um beim zweiten mal den richtigen Wert zu haben
Define.s Text
If ReadFile(0, ProgramFilename())
  FileSeek(0, FileSizeStubs)
  Text = ReadString(0)
  CloseFile(0)
  
  MessageRequester("Test", Text)
EndIf
Jetzt unser "Compiler" :mrgreen:

Code: Alles auswählen

EnableExplicit

DataSection
  stubs: IncludeBinary "stubs.exe" : stubs_end:
EndDataSection

Procedure CreateExe(FileName.s)
  Protected FF = CreateFile(#PB_Any, FileName)
  
  If FF
    WriteData(FF, ?stubs, ?stubs_end - ?stubs)
    ProcedureReturn FF
  EndIf
EndProcedure

Procedure AppendText(File, Text.s)
  If IsFile(File)
    WriteString(File, Text)
  EndIf  
EndProcedure

Define File = CreateExe("test.exe")

If File
  AppendText(File, "Hat geklappt")
  CloseFile(File)
EndIf
Hiermit wird die Exe erstellt, der wir den Text "Hat geklappt" mitgeben
Einfach test.exe starten
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
Oliver1994
Beiträge: 321
Registriert: 15.06.2008 21:52

Beitrag von Oliver1994 »

Super! Danke! Ihr habt mir alle sehr geholfen!

Gruß

JENS
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

Ergebnis von immerhin stolzen 4 Seiten.
Win11 x64 | PB 6.20
Oliver1994
Beiträge: 321
Registriert: 15.06.2008 21:52

Beitrag von Oliver1994 »

Da ich keinen neuen Thread aufmachen will... Wie geht das das man überprüft ob es einen Ordner schon gibt?
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

IsDirectory()?
Win11 x64 | PB 6.20
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

Beitrag von ts-soft »

FileSize
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
Oliver1994
Beiträge: 321
Registriert: 15.06.2008 21:52

Beitrag von Oliver1994 »

Über die Funktion bin ich auch gestolpert... Allerdings hat mich hier die Hilfe verunsichert...

Danke!

Gruß

JENS
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

Ich nehm meinen letzten Post zurück
war quatsch :roll:
Win11 x64 | PB 6.20
Antworten