Entwickler-Ecke

Dateizugriff - variablen intern speichern


kondor - Mo 10.02.03 02:30
Titel: variablen intern speichern
Verschiedene Variablen werden innerhalb des Programmablaufes geändert. Doch wenn ich das Programm schließe gehen die Änderungen verloren.
Gibt es eine Möglichkeit diese Werte intern zu speichern?


bis11 - Mo 10.02.03 02:45

Hi,

Du kannst diese Daten in einer INI-Datei speichern oder in der Registry oder Du machst Dir ein eigenes Dateiformat, wo die Werte der Vaiablen drin gespeichert werden und ließt diese dann beim Programmstart einfach aus.


kondor - Mo 10.02.03 03:09

Das Programm sollte aber nur aus einer einzigen Datei bestehen.

Dass mit der Registry ist eine gute idee; jedoch sollten die Daten, außer im Programm, nirgends zu finden sein, nichteinmal in der Registry.

Ich habe versucht, Werte in versteckten labels zu speichern, um sie danach wieder herauszulesen. Das Programm merkt sich aber beim start nur die Werte, die von delphi bei der Compilierung zugewiesen wurden.

Es muss ja irgendeine Möglichkeit geben, irgendwo im Programm Daten permanent zu speichern...

hilfeee.....


Ex0rzist - Mo 10.02.03 05:01

Um geänderte Variablen in der Exe-Datei zu speichern, müsste diese neu compiliert werden.

Es bleibt dir wohl nur die Registry oder Ini-Dateien.
Dort kannst du diese Daten ja verschlüsselt abspeichern.


kondor - Mo 10.02.03 05:29

ok! ich danke euch!

dann werde ich mich trotzdem noch einen Tutorial über delphi und registry geben müssen ;)


Anonymous - Mo 10.02.03 22:27

Es geht schon was du vorhast. Es gibt sogar viele Möglichkeiten. Allerdings muß man da schon ein wenig in Delphi draufhaben um es hinzukriegen.

Die einfachste ist die Ini-Datei beim beenden des Programms zum Programm als eine Art Bagage anzuhängen. Beim Start muß dan das Programm und und die Ini wieder voneinander getrennt werden. Dann beim beenden des Programms wieder als Bagabe hinzufügen usw.

Aber auch für diese Methode brauchst du einiges an Delphiwissen. Da du aber die Frage gestellt hast, gehe ich davon aus, daß du ein Anfänger bist.


kondor - Di 11.02.03 01:57

thx

für mich war es schwer zu verstehen, dass man wegen eines fensters, der nur 1x (beim ersten aufruf des programmes) erscheinen soll, sich soviel Mühe geben muss... letztendlich sollte nur eine boolean-variable gespeichert werden...

> Es gibt sogar viele Möglichkeiten
was hätte ich noch zur Auswahl?


Klabautermann - Di 11.02.03 10:49

Hallo,
kondor hat folgendes geschrieben:
> Es gibt sogar viele Möglichkeiten
was hätte ich noch zur Auswahl?

du könntest die Werte auch diereckt an die EXE anhängen. Das ist aber noch etwas komplizierter, du musst aber keine INI-Datei anlegen, und diese dementsprechend auch nicht abtrennen, bevor du drauf zugreifst.
Du musst dir dafür aber merken wo die EXE aufhört und die angehängten Daten anfangen, dies musst du in den Angehängten Daten machen.
Jede Lösung die mir einfällt, basiert auf den anhängen von Daten an die EXE.
Alles in allen also keine sache für anfänger.

kondor hat folgendes geschrieben:
für mich war es schwer zu verstehen, dass man wegen eines fensters, der nur 1x (beim ersten aufruf des programmes) erscheinen soll, sich soviel Mühe geben muss

Man mus sich keine besondere Mühe geben wenn man das vorgesehende Prinzieb verwendet - also eine Datei Anlegt. Da du aber mit dem Standart brechen willst musst du dir entsprechend viel Arbeit machen.

Gruß
Klabautermann

PS: Ich habe zu DOS zeiten mal ein Programm [http://www.oitmann.de/meineprogs/adbdos.html] geschrieben, dass beim ersten Start den Hilfetext anzeigt. Dieses erzeugt danach eine 0-Byte Datei. Ist diese vorhanden wird der Hilfetext nicht nocheinmal angezeigt. Das ist ein einfacher Boolean Wert, der eben nicht in eine Datei gespeichert wird, die Datei selbst ist diser Wert. Es hat sich eigentlich nie jemand beschwert, das da eine "unnütze" Datei angelegt wird. Zu seiner Zeit gab es über 100 Benuzter (Privatpersonen) dieses Programms.


matze - Di 11.02.03 18:30

schjau mal im EDH ( http://www.delphi-treff.de ) da gibts den Easy Delphi Helper. in dem ist ein Tut drin, das die zeigt wie man dateien miteinander verschmelzen kann.
du machst beim beenden des proggis einfach ne INI datei und verschmilzt sie dann mit deiner EXE.
Beim Start der EXE trennst du die dann wieder. so kannst du auch die EXE weitergeben ohna dass die einstellungen flöten gehen !!
man kann die allerdings dann recht simpel mit nem HEX editor ändern !!!


Anonymous - Di 11.02.03 23:10

kondor hat folgendes geschrieben:
für mich war es schwer zu verstehen, dass man wegen eines fensters...


Wenn du willst, dann kannst du es auch weiter nicht verstehen, aber so ist es. Nur weil ich gesagt habe, daß es Möglichkeiten gibt, so heißt es nicht, daß es normal ist. Es ist nur mit Tricks möglich. Da du aber schon die Frage gestellt hast bedeutet es, daß du wenig Ahnung von Programmierung hast. Was nützen dir also die Möglichkeiten wenn du sie nicht umsetzen kannst.

Aber hier mal paar Möglichkeiten:

Du baust einen Decompiler und dekompilierst dein Programm. Die Ressorce kannst du dann verändern und das Programm wieder kompilieren.

Die andere Möglichkeit ist eine Bagage anzuhängen. Die Möglichkeit hab ich oben bereits beschrieben.

Die dritte ist ein Patchprogramm. Du suchst deine Variable und änderst diese.

Ich schätze, daß die dritte Möglichkeit für dich die einfachste und beste ist.


Indeterminatus - Do 27.02.03 11:42

Ich kann auch nur zur 3. Möglichkeit raten, die erscheint mir noch am leichtesten zu realisieren ... wenn Du das nicht willst kannst ja den 2. Vorschlag ausprobiern ... zum erstgenannten würd ich nur im "Notfall" zurückgreifen, weil Du dafür (zumindest IMHO) am meisten Erfahrung in Programmierung benötigst ...

just my 2 cents ...

_______________________________________
Indeterminatus

---=si tacuisses, philosophus mansisses=---


FloFri - Di 11.03.03 12:09

Ihr werdet es nicht glauben, aber ich habe die perfekte Lösung für das Problem gefunden. Man kann nämlich die Ressourcen einer exe ohne Probleme ändern.

Schaut mal hier:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Resources/IntroductiontoResources/UsingResources.asp