Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Einstellungen speichern, wie? (https://www.delphipraxis.net/13050-einstellungen-speichern-wie.html)

chris_82 10. Dez 2003 09:23


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?

ims 10. Dez 2003 09:30

Re: Einstellungen speichern, wie?
 
ini-files oder registry. passwort einfach nur verschlüsselt speichern :wink:

Nalincah 10. Dez 2003 09:47

Re: Einstellungen speichern, wie?
 
Ich würd Registry bevorzugen. Ist einfacher zu händeln, meiner Meinung nach

himitsu 10. Dez 2003 09:53

Re: Einstellungen speichern, wie?
 
Ein Hallöle von http://www.FrankNStein.de/Smiley-Wolke.gif,

oder ganz einfach.

in Datei speichern:
Delphi-Quellcode:
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;
Dateiauslesen:
Delphi-Quellcode:
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;
http://www.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

Sourcemaker 10. Dez 2003 10:22

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

chris_82 11. Dez 2003 10:32

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?

Sanchez 11. Dez 2003 10:36

Re: Einstellungen speichern, wie?
 
hallo,

Indem du das Passwort vor dem Speichern verschlüsselst und nach dem Laden wieder entschlüsselst.
:mrgreen:

himitsu 11. Dez 2003 10:45

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 Hier im Forum suchenHash gebildes und dieser gepeichert.
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
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

chris_82 11. Dez 2003 11:13

Re: Einstellungen speichern, wie?
 
Zitat:

Indem du das Passwort vor dem Speichern verschlüsselst und nach dem Laden wieder entschlüsselst.

@sanchez: Rat mal was ich gefragt hab :gruebel:

dopeline 13. Dez 2003 18:50

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

nailor 13. Dez 2003 18:54

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!

dopeline 13. Dez 2003 20:30

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:

http://www.korbjuhn.de/optionen.gif

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:
Ini.WriteBool( 'Programm', 'Stausleiste', CheckBox4 = CheckBox4.checked );
(cCheckBox4 --> "Statusleiste anzeigen")

wie macht man das?


Gruß, dopeline

Luckie 13. Dez 2003 20:32

Re: Einstellungen speichern, wie?
 
Delphi-Quellcode:
Ini.WriteBool( 'Programm', 'Stausleiste', CheckBox4.checked );
Kuck doch mal in der Hilfe. :roll:

dopeline 13. Dez 2003 21:04

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:
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;
wo liegt hier der fehler? habe heute fußballgroße tomaten auf den augen :cyclops:


dopeline

Luckie 13. Dez 2003 21:07

Re: Einstellungen speichern, wie?
 
Delphi-Quellcode:
 CheckBox4.Checked := ini.ReadBool(...);
So hätte ich es gemacht.

dopeline 13. Dez 2003 21:29

Re: Einstellungen speichern, wie?
 
meinst du so?:
Delphi-Quellcode:
FormOptionen.CheckBox4.Checked := ini.ReadBool( 'Programm', 'Stausleiste', false );
das funktioniert leider nicht. da kommt die gleiche fehlermeldung beim ausführen....

Gruß, dopeline

Luckie 13. Dez 2003 21:35

Re: Einstellungen speichern, wie?
 
Heißt die Sektion wirklich
Zitat:

'Stausleiste'
Oder nicht eher: Statusleiste?

Pseudemys Nelsoni 13. Dez 2003 21:37

Re: Einstellungen speichern, wie?
 
in deinem code fehlt noch ein "end;", ka ob du es nur hier im forum vergessen hast

dopeline 13. Dez 2003 21:54

Re: Einstellungen speichern, wie?
 
also jetzt mal ganz komplett:

wenn ich in dem options-fenster auf speichern klicke passiert folgendes:
Delphi-Quellcode:
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;
und im OnCreate-Ereignis kommt das:
Delphi-Quellcode:
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;
Ini2, weil ich noch eine andere variable namens Ini benutze.

irgendwie will das nicht so, wie ich will :x


Gruß, dopeline

nailor 13. Dez 2003 21:59

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...

dopeline 14. Dez 2003 14:30

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:
Ini.ReadBool( 'Programm', 'Statusleiste', CBStatus.checked );
er kann die einstellungen anscheinend nicht richtig auslesen, oder zumindest nicht richtig umsetzen...
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

Pseudemys Nelsoni 14. Dez 2003 14:33

Re: Einstellungen speichern, wie?
 
WriteBool schreibt auch... versuchs mal mit ReadBool...

dopeline 14. Dez 2003 14:37

Re: Einstellungen speichern, wie?
 
oh sorry ich habe aus dem falschen ereignis kopiert! im oncreate steht ReadBool (s.o.)...

dopeline

Pseudemys Nelsoni 14. Dez 2003 14:38

Re: Einstellungen speichern, wie?
 
kanns du den code davon nochmal posten?

dopeline 14. Dez 2003 14:43

Re: Einstellungen speichern, wie?
 
Wenn ich auf "Einstellungen Speichern" klicke:
Delphi-Quellcode:
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;
und im OnCreate-Ereignis kommt das:
Delphi-Quellcode:
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;
Gruß, dopeline

Pseudemys Nelsoni 14. Dez 2003 14:54

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

dopeline 14. Dez 2003 15:25

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

Christian Seehase 14. Dez 2003 20:58

Re: Einstellungen speichern, wie?
 
Moin dopeline,

Zitat:

Zitat von dopeline
kann ich denn irgendwo die erstellungsreihenfolge der formulare verändern?

Jain.
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?

dopeline 15. Dez 2003 09:44

Re: Einstellungen speichern, wie?
 
ähm.... kannst du mir sagen, wie man das anstellt? ich habe keinen blassen schimmer....

Danke!


Gruß, dopeline

choose 15. Dez 2003 09:48

Re: Einstellungen speichern, wie?
 
Hallo dopline,

das von Christian Seehase vorgeschlagene Vorgehen, ist in dem Thread Übergabe von Einstellungen, wie am elegantesten? bereits diskutiert worden.

dopeline 15. Dez 2003 14:33

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 08:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz