![]() |
Einstellungen speichern, wie?
Schreibe grad ein Prog um das Bild einer WebCam per FTP auf den Server zu übertragen.
Nun hab ich mir Editfelder angelegt um User, Host, Passwort, Path einzugeben. Ich möchte diese Eingaben irgendwie speichern, sodas Sie zum nächsten Programmstart wieder in den jeweiligen Edits stehen, wie realisiere ich soetwas? |
Re: Einstellungen speichern, wie?
ini-files oder registry. passwort einfach nur verschlüsselt speichern :wink:
|
Re: Einstellungen speichern, wie?
Ich würd Registry bevorzugen. Ist einfacher zu händeln, meiner Meinung nach
|
Re: Einstellungen speichern, wie?
Ein Hallöle von
![]() oder ganz einfach. in Datei speichern:
Delphi-Quellcode:
Dateiauslesen:
Var F: TextFile;
Begin AssignFile(F, 'Dateiname.txt'); Rewrite(F); WriteLn(F, Edit1.Text); {User} WriteLn(F, Edit2.Text); {Host} WriteLn(F, Edit3.Text); {Passwort} WriteLn(F, Edit4.Text); {Path} CloseFile(F); End;
Delphi-Quellcode:
http://www.delphipraxis.net/images/common/divider.jpg
Var F: TextFile;
S: String; Begin AssignFile(F, 'Dateiname.txt'); {$I-} Reset(F); {$I+} If IOResult = 0 Then Begin ReadLn(F, S); Edit1.Text := S; {User} ReadLn(F, S); Edit2.Text := S; {Host} ReadLn(F, S); Edit3.Text := S; {Passwort} ReadLn(F, S); Edit4.Text := S; {Path} End Else Begin Edit1.Text := ''; {User} Edit2.Text := ''; {Host} Edit3.Text := ''; {Passwort} Edit4.Text := ''; {Path} End; CloseFile(F); End; ![]() ![]() ![]() |
Re: Einstellungen speichern, wie?
Oder RxLib bzw. JediVcl einbinden die bringen u.a. Komponenten mit um Einstellungen bzw. Werte vom Komponenten in Ini oder Registry zu speichern.
Gruß Frank |
Re: Einstellungen speichern, wie?
Die ini-Files sind doch auch einfach nur Textfile (berichtigt mich wenn ich mich irre).
Wie kann ich das Passwort in der ini verschlüsslet speichern? |
Re: Einstellungen speichern, wie?
hallo,
Indem du das Passwort vor dem Speichern verschlüsselst und nach dem Laden wieder entschlüsselst. :mrgreen: |
Re: Einstellungen speichern, wie?
[dp]verschlüsselung[/dp] :wink:
Was gutes ist zum Beispiel eine One-Way-Verschlüsselung: Dabei wird z.B. beim speichern aus dem Passwort ein ![]() Bei prüfen des Passwortes, wird vom eingegebenen Passwort auch der Hash gebildet und die Hash's einfach verglichen. Der Vorteil One-Way-Verschlüsselung (Ein-Wege-Verschlüsselung) ist der, dass aus dem Hash nicht mehr auf des Passwort, was da drin gespeichert ist, zurück geschloßen wird, mann kann also nicht durch Entschlüßelung des Hash's das Passwort erhalten, deswegen auch Ein-Wege-... . http://www.delphipraxis.net/images/common/divider.jpg ![]() ![]() ![]() |
Re: Einstellungen speichern, wie?
Zitat:
@sanchez: Rat mal was ich gefragt hab :gruebel: |
Re: Einstellungen speichern, wie?
Welche der vielen komponenten in JediVcl benutze ich denn, um in einer datei zu speichern, dass z.b. eine checkbox checked ist?
und vor allem wie? Gruß, dopeline |
Re: Einstellungen speichern, wie?
nimm ne TIniFile und schau dir WriteBool(ean) [bin mir nciht ganz sicher], WriteString... an.
Das ist ne Delphi-Standard-Kompo und für diesen Zweck wie geschaffen! |
Re: Einstellungen speichern, wie?
hmm.. irgendwie hab ich da was grundlegendes nicht begriffen. kann mir jemand auf die sprünge helfen?
ich habe hier ein Formular für die Einstellungen zum Hauptprogramm: ![]() ich will beim klick auf "Einstellungen Speichern" die einstellungen (ob die checkboxen checked sind, oder nicht). beim erneuten starten des programmes soll diese datei ausgelesen werden und dementsprchend die checkboxen checked sein... allerdings komme ich nicht mit den WriteBool-Anweisungen klar... wie benutze ich die in diesem fall? also so funktioniert es schon mal nicht: :roll:
Delphi-Quellcode:
(cCheckBox4 --> "Statusleiste anzeigen")
Ini.WriteBool( 'Programm', 'Stausleiste', CheckBox4 = CheckBox4.checked );
wie macht man das? Gruß, dopeline |
Re: Einstellungen speichern, wie?
Delphi-Quellcode:
Kuck doch mal in der Hilfe. :roll:
Ini.WriteBool( 'Programm', 'Stausleiste', CheckBox4.checked );
|
Re: Einstellungen speichern, wie?
ähm... ja... :oops: :oops: :oops:
danke! jetzt wird es in die datei geschrieben. super! so, nun zum einlesen (im OnCreate-Ereignis des Hauptformulars)... denn da gibts ne tolle fehlermeldung beim starten des progs. "Zugriffsverletzung in der Adresse ..." und er verweist mich an die stelle, wo ich versucht habe die daten einzulesen:
Delphi-Quellcode:
wo liegt hier der fehler? habe heute fußballgroße tomaten auf den augen :cyclops:
Begin
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\options.cfg'); try if Ini.ReadBool( 'Programm', 'Stausleiste', false ) then FormOptionen.CBStatus.checked; .... // hier folgen noch mehr aufrufe... finally Ini.Free end; dopeline |
Re: Einstellungen speichern, wie?
Delphi-Quellcode:
So hätte ich es gemacht.
CheckBox4.Checked := ini.ReadBool(...);
|
Re: Einstellungen speichern, wie?
meinst du so?:
Delphi-Quellcode:
das funktioniert leider nicht. da kommt die gleiche fehlermeldung beim ausführen....
FormOptionen.CheckBox4.Checked := ini.ReadBool( 'Programm', 'Stausleiste', false );
Gruß, dopeline |
Re: Einstellungen speichern, wie?
Heißt die Sektion wirklich
Zitat:
|
Re: Einstellungen speichern, wie?
in deinem code fehlt noch ein "end;", ka ob du es nur hier im forum vergessen hast
|
Re: Einstellungen speichern, wie?
also jetzt mal ganz komplett:
wenn ich in dem options-fenster auf speichern klicke passiert folgendes:
Delphi-Quellcode:
und im OnCreate-Ereignis kommt das:
procedure TFormOptionen.BitBtn2Click(Sender: TObject);
var Ini: TIniFile; begin Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\options.cfg'); try Ini.WriteString( 'Programm', 'Pfad', Verz ); Ini.WriteBool( 'Programm', 'Statusleiste', CBStatus.checked ); Ini.WriteBool( 'Programm', 'Datum-Zeit', CBDateTime.checked ); Ini.WriteBool( 'Programm', 'Geburtstag', CBGeburt.Checked ); Ini.WriteBool( 'Programm', 'Deutsch', RBDeutsch.checked ); Ini.WriteBool( 'Programm', 'Englisch', RBEnglisch.checked ); Ini.WriteBool( 'Tabelle', 'Tabelle-vertikal', CBVertLine.checked ); Ini.WriteBool( 'Tabelle', 'Tabelle-horizontal', CBHorzLine.checked ); Ini.WriteBool( 'Tabelle', 'Tabelle-spalten', CBSpalten.checked ); finally Ini.Free; end; end;
Delphi-Quellcode:
Ini2, weil ich noch eine andere variable namens Ini benutze.
procedure TFormHaupt.FormCreate(Sender: TObject);
var Ini2 : TIniFile; begin Ini2 := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\options.cfg'); try FormOptionen.CBStatus.Checked := ini2.ReadBool( 'Programm', 'Statusleiste', false ); FormOptionen.CBDateTime.checked := Ini2.ReadBool( 'Programm', 'Datum-Zeit', false ); FormOptionen.CBGeburt.checked:= Ini2.ReadBool( 'Programm', 'Geburtstag', false ); FormOptionen.RBDeutsch.checked :=Ini2.ReadBool( 'Programm', 'Deutsch', false ); FormOptionen.RBEnglisch.checked := Ini2.ReadBool( 'Programm', 'Englisch', false ); FormOptionen.CBVertLine.checked := Ini2.ReadBool( 'Tabelle', 'Tabelle-vertikal', false ); FormOptionen.CBHorzLine.checked := Ini2.ReadBool( 'Tabelle', 'Tabelle-horizontal', false ); FormOptionen.CBSpalten.checked := Ini2.ReadBool( 'Tabelle', 'Tabelle-spalten', false ); finally Ini2.Free end; irgendwie will das nicht so, wie ich will :x Gruß, dopeline |
Re: Einstellungen speichern, wie?
bei dem im OnCreate Teil fehlt ein "End". Nur hier oder auch in deinem Code?
Gibts die Optionen-Form schon, wenn deine OnCreate-Funktion aufgerifen wird? Was genau geht schief? Mir persönlich fällt so schnell kein Fehler auf... |
Re: Einstellungen speichern, wie?
das end habe ich vergessen reinzuschreiben. denn nach dem auslesen der einstellungen passieren noch ganz viele andere sachen. nachdem die fehlermeldung kommt, markiert er mir im OnCreate die erste zeile
Delphi-Quellcode:
er kann die einstellungen anscheinend nicht richtig auslesen, oder zumindest nicht richtig umsetzen...
Ini.ReadBool( 'Programm', 'Statusleiste', CBStatus.checked );
beim compilieren gibt es keine probleme. der fehler tritt definitiv erst beim STARTEN des programmes auf und nicht beim compilieren. ein laufzeitfehler... //Edit: WriteBool --> ReadBool Gruß, dopeline |
Re: Einstellungen speichern, wie?
WriteBool schreibt auch... versuchs mal mit ReadBool...
|
Re: Einstellungen speichern, wie?
oh sorry ich habe aus dem falschen ereignis kopiert! im oncreate steht ReadBool (s.o.)...
dopeline |
Re: Einstellungen speichern, wie?
kanns du den code davon nochmal posten?
|
Re: Einstellungen speichern, wie?
Wenn ich auf "Einstellungen Speichern" klicke:
Delphi-Quellcode:
und im OnCreate-Ereignis kommt das:
procedure TFormOptionen.BitBtn2Click(Sender: TObject);
var Ini: TIniFile; begin Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\options.cfg'); try Ini.WriteString( 'Programm', 'Pfad', Verz ); Ini.WriteBool( 'Programm', 'Statusleiste', CBStatus.checked ); Ini.WriteBool( 'Programm', 'Datum-Zeit', CBDateTime.checked ); Ini.WriteBool( 'Programm', 'Geburtstag', CBGeburt.Checked ); Ini.WriteBool( 'Programm', 'Deutsch', RBDeutsch.checked ); Ini.WriteBool( 'Programm', 'Englisch', RBEnglisch.checked ); Ini.WriteBool( 'Tabelle', 'Tabelle-vertikal', CBVertLine.checked ); Ini.WriteBool( 'Tabelle', 'Tabelle-horizontal', CBHorzLine.checked ); Ini.WriteBool( 'Tabelle', 'Tabelle-spalten', CBSpalten.checked ); finally Ini.Free; end; end;
Delphi-Quellcode:
Gruß, dopeline
procedure TFormHaupt.FormCreate(Sender: TObject);
var Ini2 : TIniFile; begin Ini2 := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\options.cfg'); try FormOptionen.CBStatus.Checked := ini2.ReadBool( 'Programm', 'Statusleiste', false ); FormOptionen.CBDateTime.checked := Ini2.ReadBool( 'Programm', 'Datum-Zeit', false ); FormOptionen.CBGeburt.checked:= Ini2.ReadBool( 'Programm', 'Geburtstag', false ); FormOptionen.RBDeutsch.checked :=Ini2.ReadBool( 'Programm', 'Deutsch', false ); FormOptionen.RBEnglisch.checked := Ini2.ReadBool( 'Programm', 'Englisch', false ); FormOptionen.CBVertLine.checked := Ini2.ReadBool( 'Tabelle', 'Tabelle-vertikal', false ); FormOptionen.CBHorzLine.checked := Ini2.ReadBool( 'Tabelle', 'Tabelle-horizontal', false ); FormOptionen.CBSpalten.checked := Ini2.ReadBool( 'Tabelle', 'Tabelle-spalten', false ); finally Ini2.Free end; |
Re: Einstellungen speichern, wie?
ich denke mal weil "FormOptionen" beim create von "FormHaupt" noch nicht create'd wurde. wieso machst es nicht im oncreate des option-fensters?
btw du kannst "ini2" auch "ini" nennen, da das andere "ini" lokal ist |
Re: Einstellungen speichern, wie?
kann ich denn irgendwo die erstellungsreihenfolge der formulare verändern? in dem moment, wenn er die checkboxen checked, wird ja das ereignis ausgelöst, was bewirkt, dass z.b. die statusleiste angezeigt wird.
mein ziel ist es, die einstellungen, die ich in dem options-formular vornehme, in einer datei zu speichern. beim programmstart sollen die einstellungen aus der datei gelesen werden und entsprechend umgesetzt werden. also z.b. die vertikalen linien des stringgrids sollen nicht angezeigt werden usw. vielleicht gibt es ja noch eine andere möglichkeit der umsetzung.... jedenfalls komme ich da nicht weiter... :cry: und das mit ini2: ich benutze noch eine andere variable 'ini'. wenn ich eine datei öffne, wird der pfad in eine datei geschrieben und beim nächsten öffnen wird die datei in das dateimenü gehängt... zuletzt geöffnete dateien also... Gruß, dopeline |
Re: Einstellungen speichern, wie?
Moin dopeline,
Zitat:
In der Projektdatei kannst Du die Reihenfolge zwar ändern, aber dabei ist zu beachten, dass das erste erzeugte Formular immer zum Hauptformular der Anwendung wird. Was spricht dagegen, wenn Du Dir ein Settings Objekt erstellst, dass Du dann als Eigenschaft des Hauptformulares einbindest, und auf das dann alle Fenster beim OnCreate zugreifen, um ihre Einstellungen auszulesen? |
Re: Einstellungen speichern, wie?
ähm.... kannst du mir sagen, wie man das anstellt? ich habe keinen blassen schimmer....
Danke! Gruß, dopeline |
Re: Einstellungen speichern, wie?
Hallo dopline,
das von Christian Seehase vorgeschlagene Vorgehen, ist in dem Thread ![]() |
Re: Einstellungen speichern, wie?
juhu ich habs!
habe einfach das, was im oncreate des hauptformulars stand, ins oncreate des options-formulars geschoben! klappt super! lag wirklich daran, dass beim versuch die checkboxen zu checken, das formular noch gar nicht vorhanden war... :roll: Danke euch! Gruß, dopeline |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 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