@Froggerprogger
Vielen Dank für dein Beispiel!
Ich tue mir oft schwer mit der Syntax der Parameterübergabe.
Dein Programm ReplaceFileData.pb ist Spitze!
Es macht genau das, was ich wollte und ich brauche mich nicht mit Speicherbefehlen herumzuschlagen.
Ich habe mal das folgende kleine Beispiel erstellt:
Code: Alles auswählen
;=== Start der Programm1.exe ===
Restore Platzhalter
Read Platzhalter$
Platzhalter$ = RTrim(Platzhalter$)
MessageRequester("ReplaceFileData-Beispiel",Platzhalter$,0)
DataSection
Platzhalter:
Data.s "Platzhalter-String, der ersetzt werden soll"
EndDataSection
;=== Ende der Programm1.exe ===
Code: Alles auswählen
;=== Start von Programm2.exe ===
IncludeFile "ReplaceFileData_Include.pb"
InputFile$ = "Programm1.exe"
OutputFile$ = "Programm1.exe"
Suchen$ = "Platzhalter-String, der ersetzt werden soll"
Ersetzen$ = "Geänderter String in der DataSection"
laenge.l = Len(Suchen$)
If Len(Ersetzen$) > laenge
Ersetzen$ = Left(Ersetzen$,laenge)
Else
Ersetzen$ + Space(laenge-Len(Ersetzen$))
EndIf
ReplaceFileData(InputFile$, OutputFile$, @Suchen$, laenge, @Ersetzen$, laenge)
;=== Ende von Programm2.exe ===
Die Programm1.exe ist die EXE-Datei, deren Platzhalterstring von der Programm2.exe geändert werden soll.
Vor der Änderung gibt die Programm1.exe den standardmäßigen Platzhalterstring aus.
Für die Programm2.exe habe deine ReplaceFileData.pb in ReplaceFileData_Include.pb umbenannt und eingebunden.
Zuerst werden die Übergabeparameter vorbereitet.
Bedingung ist, dass der Suchen-String und der Ersetzen-String die gleiche Länge haben wie der Platzhalter in der Programm1.exe, sonst wird diese beschädigt und kann nicht mehr gestartet werden.
Ist Ersetzen$ länger als Suchen$, wird Ersetzen$ auf die Länge von Suchen$ gekürzt, ansonsten wird der Rest von Ersetzen$ mit Leerzeichen aufgefüllt.
Beim Start der Programm2.exe wird mit deiner Funktion ReplaceFileData() der Platzhalterstring in Programm1.exe mit dem Inhalt von Ersetzen$ überschrieben.
Wird Programm1.exe danach gestartet, wird der geänderte String aus der DataSection ausgelesen und angezeigt.
Überflüssige Leerzeichen rechts wurden vorher mit Rtrim entfernt.
Jetzt kenne ich einige alternative Möglichkeiten Strings in einer anderen EXE-Datei zu ändern.
Das einzige Problem, das ich noch habe, um mein Programm fertigzustellen ist, dass ich nicht weiß, wie ich das Icon einer bestehenden Programm1.exe mit einer Programm2.exe dauerhaft zuweisen kann.
Aber diese Frage habe ich in einem anderen Thema gepostet.
@All
Danke für eure Hilfe
