folgende Idee wollte ich gerne umsetzen:
Ein Programm in Lazarus hat nur einen "einzige" .exe Datei.
Wenn man dem Benutzer ermöglicht Einstellungen zu machen, wäre es natürlich sinnvoll diese auch abzuspeichern.
Einige Programme machen sowas in der Windows Registry oder in einer Konfigurationsdatei.
Zieht man mit dem Programm auf einen anderen Rechner um, MUSS man auch immer die Konfigurationsdatei mit schleppen.
Etwas in der Registry eintragen ist für mich ein absolutes tabu, das geht auf einem anderen Rechner dann garnicht mehr.
So hatte ich die Idee, einfach Werte in die eigene .exe Datei zu schreiben.
Dazu müsste ich einen Bereich innerhab der Datei haben, wo ich genau weis, WO meine Werte stehen.
Da dies jedoch nicht festgelegt werden kann, wo welcher Code steht, habe ich mir eine Identifizierung angelegt.
Diese gilt es nun in der Datei zu finden und dann weis ich, dahinter folgen meine speziellen Daten.
Beispiel:
const x:integer=1234;
Der Wert 1234 taucht irgendwo im Code auf und wenn ich weis wo, dann könnte ich den Wert in der .exe Datei entsprechend ändern.
So habe ich mir mal folgenden Code zusammengebaut, der auch wirklich funktioniert bis auf:
Ich darf meine eigene .exe nicht überschreiben !!!!!

So habe ich testweise erstmal eine Project2.exe Datei erzeugt um mein Vorgehen zu verifizieren.
Fazit: es funktioniert.
Es scheint aber so, dass das Betriebssystem es nicht zulässt die gestartete .exe zu manipulieren ????
Und genau da stellt sich die Frage an euch:
Wie kann ich dieses letzte "kleine" Problemchen lösen ?
Ich hab euch mal den Testcode hier reingepackt. Das Programm Project1.exe wird gestartet.
Es erscheint in Caption die Anzahl der Programmstarts, also beim ersten mal eine 1
zudem wird eine Booleanwert ausgegeben ob es eine Erstbenutzung ist.
Und ein Name, der später verändert werden soll.
Mit dem Drücken des Buttons, wird die gesamte Project1.exe Datei in den Speicher eingelesen und an der "richtigen" Stelle im Speicher manipuliert
und dann wieder zurück auf Platte geschrieben.
!!!! Hinweis: ich schreibe eine Datei auf eure Festplatte, dies befindet sich dann im gleichem Verzeichnis,
zumindest bei mir mit Windows.
Da es "momentan" nicht möglich ist, es wieder Project1.exe zu nenen, wird momentan eine Project2.exe erzeugt
um das Vorgehen überhaupt zu verifizieren.
Die neu erstellte Project2.exe kann dann gestartet werden und man sieht, dass sich die Parameter korrekt verändert haben.
Welchen Trick kann ich anwenden, damit ich die Datei wieder Project1.exe nennen darf ? also dass sie sich selbst überschreibt ?
Siro