Seite 1 von 2

Konfigurationsdaten im Programm speichern

Verfasst: 22.07.2013 12:28
von Daffy0815
Hallo Leute,

üblicherweise werden vom Benutzer im Programm festgelegte Konfigurationsdaten bei Windows z. B. in der Registrierungsdatei oder als extra ".ini"-Datei abgelegt.
Gibt es auch die Möglichkeit solche innerhalb des Programms geänderte Daten im Programm selbst abzulegen?

Gruß

Daffy

Re: Konfigurationsdaten im Programm speichern

Verfasst: 22.07.2013 12:35
von mk-soft
Nicht sinnvoll. Antivirenprogramme könnten Alarm schlagen...

Re: Konfigurationsdaten im Programm speichern

Verfasst: 22.07.2013 12:44
von Daffy0815
Reagieren die wirklich darauf wenn sich das Executable "während der Fahrt" ändert?

Gruß

Daffy

Re: Konfigurationsdaten im Programm speichern

Verfasst: 22.07.2013 12:44
von RSBasic
Was meinst du mit "innerhalb des Programms"?
In deiner Executable-Datei oder im Programmverzeichnis (C:\Program Files (x86)\MyProg\)?

Deine Programmeinstellungen kannst du im Anwendungsdatenverzeichnis (AppData) anlegen.

Code: Alles auswählen

GetEnvironmentVariable("appdata") + "\Name des Entwicklers\Name des Programms\Deine Einstellungsdatei.pref"
\\Edit:
Daffy0815 hat geschrieben:Reagieren die wirklich darauf wenn sich das Executable "während der Fahrt" ändert?
Während der Laufzeit kannst du deine Executable-Datei sowieso nicht ändern, weil die Datei in Benutzung ist. Aber selbst wenn deine EXE-Datei nicht gerade benutzt wird, sollte man EXE-Dateien nicht nachträglich modifizieren, weil Antiviren-Programme wirklich Alarm schlagen können.

Re: Konfigurationsdaten im Programm speichern

Verfasst: 22.07.2013 12:48
von Daffy0815
@RSBasic

Das ist mir alles schon klar!

Es geht mir eigentlich mehr darum einem "unbedarften" Anwender ein vorkonfiguriertes "EXE" in die Hand drücken zu können welches er ohne viel "Setup-Klamauk"
direkt starten und bei Bedarf auch ändern kann.

Gruß

Daffy

Re: Konfigurationsdaten im Programm speichern

Verfasst: 22.07.2013 12:58
von RSBasic
Wenn deine Programmeinstellungen direkt in deinem Code festgelegt sind, die mitkompiliert werden: Klar kannst du machen.
Was meinst du mit "bei Bedrf auch ändern"?
Soll deine EXE-Datei nachträglich modifiziert werden? Wenn du das meinst: Nein, das würde ich nicht machen, weil das 1. ein schlechter Weg ist, um Programmeinstellungen zu ändern und 2. Antiviren-Programme können Alarm schlagen.

Re: Konfigurationsdaten im Programm speichern

Verfasst: 22.07.2013 13:04
von Daffy0815
Schade, ich dachte dabei z. B. daran die verwendete Übertragungsrate einer Schnittstelle mit 115200 Baud als Standardwert im Programm festzulegen und falls der Anwender diese z. B. auf 57600 Baud ändert diese Einstellung beim Verlassen des Programms im Programm selbst zu verankern.

Das dies nicht die übliche Methode ist und welche anderen Wege es gibt weiß ich!
Ist halt alles immer so ein elender Aufwand mit diesen Konfiguartionsdateien.
Muß man prüfen ob sie da sind und gegebenenfalls erzeugen.
Falls sie da sind muß man prüfen ob sie zur Programmversion passen und gegebenfalls korrigieren usw....

Gruß

Daffy

Re: Konfigurationsdaten im Programm speichern

Verfasst: 22.07.2013 13:37
von RSBasic
Sorry, dass ich dir das so sagen muss, aber das gehört einfach dazu. :D Das ist programmieren.^^
Und so aufwändig ist es doch nicht. Es sind doch nur so circa 20 Codezeilen fürs Laden und Speichern der Programmeinstellungen.
Erstell einfach dafür automatisierte Prozeduren, die du einfach in anderen Projekten wiederverwenden kannst.

Re: Konfigurationsdaten im Programm speichern

Verfasst: 22.07.2013 13:43
von Daffy0815
Das ist "WINDOWS-PROGRAMMIEREN"!
Selbst das kleinste Programm wird ein Monster :mrgreen:

Re: Konfigurationsdaten im Programm speichern

Verfasst: 22.07.2013 14:01
von sibru
richt nach Preference (.INI oder .PREF-Datei): bei ReadPreference[typ](Keyword$, StandardWert.[typ]) kannst ´n Standartwert mitgeben, der benutzt wird, wenn´s zum KeyWord$ noch keinen Eintrag gibt: das währe die richtige Stelle für im Source fixierte Vorgeben wie Deine BaudRate...

Code: Alles auswählen

PrefFile$ = "Setup.INI"

;im Vorlauf:
If OpenPreferences(PrefFile$)   ;Setup.INI öffnen
  Baud.l=ReadPreferenceLong("Baud",115200) ;falls Eintrag "Baud" noch nicht existiert: Vorgabewert setzen (z.Bsp. nach Prg.Update mit neuen Einträgen)
  ;hier können noch weitere Setup-Daten eingelegen / vorgegeben werden
  ClosePreferences()
Else ;Setup.INI gibt´s noch nicht
  Baud = 115200 ;Vorgabe-Werte für den 1. ProgrammLauf
  PrefNeu = 1 ;Flag: Setup.INI neu aufbauen
EndIf


;im Hauptlauf:
;hier Setup-Abfragen möglich wie z.Bsp.            vvvv
PortNr = OpenSerialPort(#PB_Any, SerialPortName$, Baud, Paritaet, Daten, Stop, HandshakeModus, EingabePufferGroesse, AusgabePufferGroesse)
;auch Setup-Änderungen durchführen:
Baud = Irgenwie(UserAuswahl)


;im Nachlauf:
If PrefNeu
  ok = CreatePreferences(PrefFile$) ;Datei neu aufbauen
Else
  ok = OpenPreferences(PrefFile$) ;bestehende Datei updaten / erweitern
EndIf
If ok ;Datei (neu oder auch bestehend) ist auf
  WritePreferenceLong("Baud",Baud) ;(geänderte) Datenwerte speichern
  ;hier können noch weitere Setup-Daten gespeichert
  ClosePreferences()
EndIf
also nicht wirklich Monstermäßig... und nur "mach ma" + [Enter] reicht da nicht so wirklich...

viel Erfolg !!!