![]() |
Einstellungen speichern/laden
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute ich möchte gerne die getätigten Einstellungen welche ich in meinen Programm gemacht habe speichern und beim Laden wieder ausführen...
Ich hänge mein Programm mal an... Es geht hauptsächlich darum: 1. Welcher HotKey zugewiesen wurde (JvHotKey1, + Button1 zum setzten) 2. Welches Tapi gerät ausgewählt wurde (groupbox1) 3. Ob Tapi Aktiviert wurde.. (checkbox1) Wir mach ich das ich hab mir schon bei dsdt.de die Ini Sache angeschaut... |
Re: Einstellungen speichern/laden
dann benutz doch die inis :)
|
Re: Einstellungen speichern/laden
|
Re: Einstellungen speichern/laden
Die Ini-Sache ist zwar ganz schön aber für einen Anfänger wie mich sehr kompliziert...
|
Re: Einstellungen speichern/laden
Delphi-Quellcode:
uses ...,inifiles;
var ini : Tinifile; procedure .... begin ini := Tinifile.Create(ExtractFilePath(Application.Exename)+'Einstellungen\Einstellungen.dat'); ini.WriteString('tapi','aktiviert','Ja/nein'); ini.Free; end; procedure .... var aha :string; begin ini := Tinifile.Create(ExtractFilePath(Application.Exename)+'Einstellungen\Einstellungen.dat'); aha := ini.ReadString('tapi','aktiviert',''); ini.Free; if aha = 'Ja' then aktiviert:=true; end; |
Re: Einstellungen speichern/laden
So hier? Für die Checkbox?..
Delphi-Quellcode:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
var s: string; begin if form1.CheckBox1.Checked = true then begin s:= 'yes'; end else begin s:= 'false'; end; ini := Tinifile.Create(ExtractFilePath(Application.Exename)+'Einstellungen.dat'); ini.WriteString('tapi','aktiviert',s); ini.Free; end; |
Re: Einstellungen speichern/laden
Das geht auch einfacher :wink: :
Delphi-Quellcode:
Am besten packst Du das ganze in einen try-finally-Block, damit die Ini auf jeden Fall freigegeben wird, auch wenn beim Schreiben in die Datei ein Fehler auftritt.
procedure SaveToIni;
var Ini: TIniFile; begin Ini := TIniFile.Create(ExtractFilePath(Application.Exename)+'Einstellungen.dat'); try Ini.WriteBool('TAPI', 'Aktiviert', CheckBoxXYZ.Checked); finally Ini.Free; end; end; MfG |
Re: Einstellungen speichern/laden
Warum muss der SettingsDialog unbedingt wissen, wie er seine Zustände persistent machen kann? Besser ist, man kapselt die Einstellungen und greift über properties auf sie zu. Ein wenig Code - nur um das Prinzip zu verdeutlichen:
Delphi-Quellcode:
Freundliche Grüße vom marabu
unit Config;
interface uses Classes, IniFiles; resourcestring GENERAL_SECTION = 'General'; SHORTCUT_KEY = 'ShortCut'; DEVICEINDEX_KEY = 'DeviceIndex'; ACTIVE_KEY = 'Active'; type TSettings = class(TMemIniFile) private function GetShortCut: TShortCut; procedure SetShortCut(ShortCut: TShortCut); function GetDeviceIndex: Integer; procedure SetDeviceIndex(DeviceIndex: Integer); function GetActive: Boolean; procedure SetActive(Active: Boolean); public property ShortCut: TShortCut read GetShortCut write SetShortCut; property DeviceIndex: Integer read GetDeviceIndex write SetDeviceIndex; property Active: Boolean read GetActive write SetActive; end; implementation uses Menus; function TSettings.GetShortCut: TShortCut; begin Result := TextToShortCut(ReadString(GENERAL_SECTION, SHORTCUT_KEY, '')); end; procedure TSettings.SetShortCut(ShortCut: TShortCut); begin WriteString(GENERAL_SECTION, SHORTCUT_KEY, ShortCutToText(ShortCut)); end; function TSettings.GetDeviceIndex: Integer; begin Result := ReadInteger(GENERAL_SECTION, DEVICEINDEX_KEY, -1); end; procedure TSettings.SetDeviceIndex(DeviceIndex: Integer); begin WriteInteger(GENERAL_SECTION, DEVICEINDEX_KEY, DeviceIndex); end; function TSettings.GetActive: Boolean; begin Result := ReadBool(GENERAL_SECTION, ACTIVE_KEY, false); end; procedure TSettings.SetActive(Active: Boolean); begin WriteBool(GENERAL_SECTION, ACTIVE_KEY, Active); end; end. |
Re: Einstellungen speichern/laden
Erstma vielen Dank f+r eure Ideen aber wie ich schon gesagt habe ich bin noch Anfänger und es muss nicht allzu kompliziert sein...
:roll: :oops: |
Re: Einstellungen speichern/laden
Wieso Speicherst Du die Einstellungen nicht in der Registry, ini-Files sind IMHO so was von lästig für die Anwender.
grz zer00 |
Re: Einstellungen speichern/laden
Weil ich auf dem System keine Rückstände hinterlassen will
Komisch speichern geht nur laden nicht...
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
var d :string; begin ini := Tinifile.Create(ExtractFilePath(Application.Exename)+'Einstellungen.dat'); ini.ReadString('tapi','aktiviert',d); if d = 'yes' then form1.CheckBox2.Checked:=true; if d = 'false' then form1.CheckBox2.Checked:=false; ini.Free; |
Re: Einstellungen speichern/laden
Die Methode ReadString() ist eine Funktion - was machst du denn mit dem Rückgabewert?
marabu |
Re: Einstellungen speichern/laden
naja die Variable d auslesen oder????
|
Re: Einstellungen speichern/laden
Was mach ich falsch? Helft mir!!!
Wenn ich es so probiere stürzt die Anwendung komplett ab..
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
var a :string; begin ini := Tinifile.Create(ExtractFilePath(Application.Exename)+'Einstellungen.ini'); a := ini.ReadString('tapi','aktiviert',''); ini.Free; if a = 'yes' then form1.CheckBox2.Enabled:=true else form1.CheckBox2.Enabled:=falsE; end; end. |
Re: Einstellungen speichern/laden
Zitat:
|
Re: Einstellungen speichern/laden
Die Diskussion pro - contra Registry oder Dateien gehört nicht hier her. Er hat sich nun mal für Dateien entschieden. Und jeden Recht machen kann man es eben nicht.
|
Re: Einstellungen speichern/laden
Hi,
Delphi-Quellcode:
Aber Vorsicht: Form1 muss zu diesem Zeitpunkt bereits vorhanden sein! Besser ist es sicher, die Einstellungen unabhaengig vom Dialog einzulesen. Vgl. Antwort von marabu!
procedure TForm2.FormCreate(Sender: TObject);
var INI:tIniFile; begin Ini := Tinifile.Create(ExtractFilePath(Application.Exename)+'Einstellungen.ini'); try Form1.CheckBox2.Enabled := (ini.ReadString('tapi','aktiviert','yes')='yes'); finally Ini.Free; end; end. |
Re: Einstellungen speichern/laden
Zitat:
grz zer00 |
Re: Einstellungen speichern/laden
Was für ein Fehler kommt den ???
|
Re: Einstellungen speichern/laden
Hi.
Zitat:
Wie Marabu schon sagte... ReadString ist eine Funktion ;-).
Code:
Du nimmst also d als Standardwert und verwirfst das Ergebnis ;-)
-> Wert := ReadString(Abschnitt, Schlüssel, [size=18][b]Standardwert[/b][/size]) <-
PS: Gute Nacht! :hi: *ratzepüh* |
Re: Einstellungen speichern/laden
Entschuldige bitte das mein Programm ein 2 Jahre Programm ist was du sowieso nicht brauchst...
:( |
Re: Einstellungen speichern/laden
Wie meinst du das..
Ich Verstehe das wirklich absolut garnich X-(
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
var a :string; begin ini := Tinifile.Create(ExtractFilePath(Application.Exename)+'Einstellungen.ini'); a := ini.ReadString('tapi','aktiviert','yes'); ini.Free; if a = 'yes' then form1.CheckBox2.Enabled:=true else form1.CheckBox2.Enabled:=falsE; end; |
Re: Einstellungen speichern/laden
Liste der Anhänge anzeigen (Anzahl: 1)
Mit dem Code von NormanNG tritt immernoch ein Fehler auf...
Image... |
Re: Einstellungen speichern/laden
Tschuldigung Knotti. Ich wollte dich nicht verletzen.
Du hast es übrigens offenbar - entgegen deiner eigenen Meinung - doch verstanden. Der Code, den du zuletzt gepostet hast, ist richtig so. :thumb: Die drei :mrgreen:s waren da, weil ich es so komisch fand, dass keiner sonst den Fehler bemerkt hat. Hoffe, du bist mir nicht allzu böse. OK? :cheers: (<- Apfelschorle) PS: So. Jetzt muss ich aber ins Bett... Gute Nacht! *schnarch* |
Re: Einstellungen speichern/laden
@Wandteufel danke für deine Entschuldigung nur die Bemerkung war nicht gegen dich gerichtig...
Sondern gegen Zitat:
Und wenn mir mein Programmkomisch findet dann sagt es doch dann hör ich auf zu Programmieren und das Thema ist gegessen... Dann Müll ich euch hier nicht mehr mit Noob-Beiträgen voll und spiele wieder ATC beim Flugsimulator 2004.. |
Re: Einstellungen speichern/laden
Hi Knotti,
ich finde dein Programm nicht komisch. Ändere doch den Code mal kurz so ab:
Delphi-Quellcode:
Wenn die Meldung ausgegeben wird, dann ist Form1 noch nicht initialisiert.
procedure TForm2.FormCreate(Sender: TObject);
var ini: TIniFile; begin ini := TInifile.Create(ExtractFilePath(Application.Exename) + 'Einstellungen.ini'); if Assigned(Form1) then try Form1.CheckBox2.Enabled := (ini.ReadString('tapi', 'aktiviert', 'yes') = 'yes'); finally Ini.Free; end else ShowMessage('Hallo Norman'); end. marabu |
Re: Einstellungen speichern/laden
Ja er gibt Hallo Norman aus..
Und nun? Form2 ist das Hauptformular allerdings wird es durch einen Timer gleich versteckt.. Form 2 ist nur sichtbar wenn man auf Eigenschaften drückt.. Wenn ich die Prozedur in die Form1 reinschreibe geht sie... :stupid:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var ini: TIniFile; begin ini := TInifile.Create(ExtractFilePath(Application.Exename) + 'Einstellungen.ini'); if Assigned(Form1) then try Form1.CheckBox2.checked := (ini.ReadString('tapi', 'aktiviert', 'yes') = 'yes'); finally Ini.Free; end else ShowMessage('Hallo Norman'); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz