![]() |
Re: Daten speichern
Du kannst nicht einfach die Funktion abschreiben. Du musst schon Werte einsetzen. Hier der richtige Code:
Delphi-Quellcode:
Ini := TIniFile.Create('data.ini');
Ini.WriteBool('Hier beliebigen Namen einer Sektion angeben', 'Hier einen beliebigen Namen für den Eintrag angeben', checkbox1.checked); Ini.Free; |
Re: Daten speichern
aha, na das muss man mir sagen, ich bin schließlich noch anfänger ;)
edit: naja, beim compilieren kommt jetzt kein fehler, aber gehn tuts trotzdem nicht :? |
Re: Daten speichern
Poste mal deinen gesamten code bitte
|
Re: Daten speichern
hier:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, XPMan, ComCtrls, IniFiles, Buttons, ImgList, ToolWin, ExtCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label20: TLabel; Label21: TLabel; StatusBar1: TStatusBar; XPManifest1: TXPManifest; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; Edit10: TEdit; Edit11: TEdit; Edit12: TEdit; Edit13: TEdit; Edit14: TEdit; Edit15: TEdit; Edit16: TEdit; Edit17: TEdit; Edit18: TEdit; Label22: TLabel; Edit19: TEdit; ToolBar1: TToolBar; ImageList1: TImageList; ToolButton1: TToolButton; ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton4: TToolButton; ToolButton5: TToolButton; Label23: TLabel; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; procedure FormCreate(Sender: TObject); procedure CheckBox4Click(Sender: TObject); procedure CheckBox3Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Ini:TIniFile; Form1: TForm1; implementation uses ABOUT; {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); begin AboutBox.ShowModal; end; procedure TForm1.ToolButton1Click(Sender: TObject); begin Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit1-Feld', Edit1.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit2-Feld', Edit2.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit3-Feld', Edit3.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit4-Feld', Edit4.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit5-Feld', Edit5.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit6-Feld', Edit6.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit7-Feld', Edit7.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit8-Feld', Edit8.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit9-Feld', Edit9.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit10-Feld', Edit10.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit11-Feld', Edit11.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit12-Feld', Edit12.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit13-Feld', Edit13.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit14-Feld', Edit14.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit15-Feld', Edit15.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit16-Feld', Edit16.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit17-Feld', Edit17.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit18-Feld', Edit18.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit19-Feld', Edit19.Text); Ini.Free; end; procedure TForm1.ToolButton2Click(Sender: TObject); begin Ini := TIniFile.Create('data.ini'); Edit1.Text := Ini.ReadString('Daten', 'Edit1-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit2.Text := Ini.ReadString('Daten', 'Edit2-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit3.Text := Ini.ReadString('Daten', 'Edit3-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit4.Text := Ini.ReadString('Daten', 'Edit4-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit5.Text := Ini.ReadString('Daten', 'Edit5-Feld', 'Default-Angabe'); Ini.Free; Ini := TIniFile.Create('data.ini'); Edit6.Text := Ini.ReadString('Daten', 'Edit6-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit7.Text := Ini.ReadString('Daten', 'Edit7-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit8.Text := Ini.ReadString('Daten', 'Edit8-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit9.Text := Ini.ReadString('Daten', 'Edit9-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit10.Text := Ini.ReadString('Daten', 'Edit10-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit11.Text := Ini.ReadString('Daten', 'Edit11-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit12.Text := Ini.ReadString('Daten', 'Edit12-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit13.Text := Ini.ReadString('Daten', 'Edit13-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit14.Text := Ini.ReadString('Daten', 'Edit14-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit15.Text := Ini.ReadString('Daten', 'Edit15-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit16.Text := Ini.ReadString('Daten', 'Edit16-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit17.Text := Ini.ReadString('Daten', 'Edit17-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit18.Text := Ini.ReadString('Daten', 'Edit18-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit19.Text := Ini.ReadString('Daten', 'Edit19-Feld', 'Default-Angabe'); end; procedure TForm1.ToolButton3Click(Sender: TObject); begin Edit1.Text:=''; Edit2.Text:=''; Edit3.Text:=''; Edit4.Text:=''; Edit5.Text:=''; Edit6.Text:=''; Edit7.Text:=''; Edit8.Text:=''; Edit9.Text:=''; Edit10.Text:=''; Edit11.Text:=''; Edit12.Text:=''; Edit13.Text:=''; Edit14.Text:=''; Edit15.Text:=''; Edit16.Text:=''; Edit17.Text:=''; Edit18.Text:=''; Edit19.Text:=''; end; procedure TForm1.ToolButton4Click(Sender: TObject); begin AboutBox.ShowModal; end; procedure TForm1.ToolButton5Click(Sender: TObject); begin Close; end; procedure TForm1.CheckBox1Click(Sender: TObject); begin if (CheckBox1.Checked=true) then Edit1.Enabled:=true; if (CheckBox1.Checked=false) then Edit1.Enabled:=false; end; procedure TForm1.CheckBox2Click(Sender: TObject); begin if (CheckBox2.Checked=true) then Edit5.Enabled:=true; if (CheckBox2.Checked=false) then Edit5.Enabled:=false; end; procedure TForm1.CheckBox3Click(Sender: TObject); begin if (CheckBox3.Checked=true) then Edit6.Enabled:=true; if (CheckBox3.Checked=false) then Edit6.Enabled:=false; if (CheckBox3.Checked=true) then Edit7.Enabled:=true; if (CheckBox3.Checked=false) then Edit7.Enabled:=false; if (CheckBox3.Checked=true) then Edit8.Enabled:=true; if (CheckBox3.Checked=false) then Edit8.Enabled:=false; if (CheckBox3.Checked=true) then Edit9.Enabled:=true; if (CheckBox3.Checked=false) then Edit9.Enabled:=false; if (CheckBox3.Checked=true) then Edit10.Enabled:=true; if (CheckBox3.Checked=false) then Edit10.Enabled:=false; if (CheckBox3.Checked=true) then Edit11.Enabled:=true; if (CheckBox3.Checked=false) then Edit11.Enabled:=false; end; procedure TForm1.CheckBox4Click(Sender: TObject); begin if (CheckBox4.Checked=true) then Edit12.Enabled:=true; if (CheckBox4.Checked=false) then Edit12.Enabled:=false; if (CheckBox4.Checked=true) then Edit13.Enabled:=true; if (CheckBox4.Checked=false) then Edit13.Enabled:=false; if (CheckBox4.Checked=true) then Edit14.Enabled:=true; if (CheckBox4.Checked=false) then Edit14.Enabled:=false; if (CheckBox4.Checked=true) then Edit15.Enabled:=true; if (CheckBox4.Checked=false) then Edit15.Enabled:=false; if (CheckBox4.Checked=true) then Edit16.Enabled:=true; if (CheckBox4.Checked=false) then Edit16.Enabled:=false; if (CheckBox4.Checked=true) then Edit17.Enabled:=true; if (CheckBox4.Checked=false) then Edit17.Enabled:=false; if (CheckBox4.Checked=true) then Edit18.Enabled:=true; if (CheckBox4.Checked=false) then Edit18.Enabled:=false; end; procedure TForm1.FormCreate(Sender: TObject); begin end; end. |
Re: Daten speichern
Und wo genau leigt jetzt der Fehler? :gruebel:
|
Re: Daten speichern
oh, in dem quelltext ist das mit dem checked wert der checkboxes ned drin, aber den quelltext von denen hab ich gemacht, wie gesagt wurde. es wird auch compiliert, aber wenn ich z.b. die checkbox anklicke und es speichere, neustarte und wieder öffne is das teil nicht wieder angeklickt, so wies gespeichert wurde.
|
Re: Daten speichern
Zitat:
|
Re: Daten speichern
Hallo Lukas,
schau dir mal die Änderungen an, die ich an deinem Code gemacht habe:
Delphi-Quellcode:
Freundliche Grüße vom marabu
unit Unit1;
type TForm1 = class(TForm) // ... procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); // ... private ini: TMemIniFile; end; var Form1: TForm1; implementation uses ABOUT; {$R *.dfm} procedure TForm1.ToolButton1Click(Sender: TObject); begin Ini.WriteString('Daten', Edit1.Name, Edit1.Text); Ini.WriteString('Daten', Edit2.Name, Edit2.Text); // ... end; procedure TForm1.ToolButton2Click(Sender: TObject); begin Edit1.Text := Ini.ReadString('Daten', Edit1.Name, 'Default-Angabe'); // ... end; procedure TForm1.CheckBox1Click(Sender: TObject); begin Edit1.Enabled := CheckBox1.Checked; end; procedure TForm1.FormCreate(Sender: TObject); begin Ini := TMemIniFile.Create(ExtractFilePath(ParamStr(0)) + 'data.ini'); end; procedure TForm1.FormDestroy(Sender: TObject); begin Ini.UpdateFile; end; end. |
Re: Daten speichern
Was wr damit sagen will: du musst die datei nich immer wieder neu öffnen und freigeben, es reicht wenn du das einmal tust
|
Re: Daten speichern
mal ne Auflistung der Fehler / Verbesserungswürdigen Stellen in deinem Code:
1. Einrückung du solltest deinen Quelltext immer einrücken (mit jedem begin etc. eine stufe weiter einrücken) wenn du mal 10000-Zeilen Codes mit 8facher Verschachtelung schreibst ist das nahezu überlebensnotwendig.
Delphi-Quellcode:
procedure xyz;
var a,b,i:integer; s:string; beign try begin for i:=0 to 10 do begin showmessage('i='+inttostr(i)); end; end excpet showmessage('fehler'); end; end; 2. Schreiben der INI-Dateien
Delphi-Quellcode:
du öffnest die Datei, schreibst, schliesst die Datei, öffnest sie wieder, schreibst,...
Ini := TIniFile.Create('data.ini');
Ini.WriteString('Daten', 'Edit1-Feld', Edit1.Text); Ini.Free; Ini := TIniFile.Create('data.ini'); Ini.WriteString('Daten', 'Edit2-Feld', Edit2.Text); Ini.Free; fährst du deinen Comuter hoch damit du ein Programm ausführen kannst, fährst ihn wieder herunter, fährst ihn aber gleich wieder hoch, und führst das nächste Programm aus? besser:
Delphi-Quellcode:
3. Lesen der INI-Dateien
ini:=tinifile.create('data.ini');
Ini.WriteString('Daten', 'Edit1-Feld', Edit1.Text); Ini.WriteString('Daten', 'Edit2-Feld', Edit2.Text); Ini.Free; du öffnest die Datei, liest einen Wert, vergisst aber, die Datei wieder zu schliessen, öffnest sie dann aber - obwohl sie schon geöffnet ist - gleich wieder... am schluss schliesst du die Datei überhaupt nicht mehr - wieder eine Fehlerquelle.
Delphi-Quellcode:
besser am Anfang einmal öffnen, alles lesen, und dann wieder schliessen:
Ini := TIniFile.Create('data.ini');
Edit1.Text := Ini.ReadString('Daten', 'Edit1-Feld', 'Default-Angabe'); Ini := TIniFile.Create('data.ini'); Edit2.Text := Ini.ReadString('Daten', 'Edit2-Feld', 'Default-Angabe'); //...
Delphi-Quellcode:
außerdem ist es ungeschickt, 'Default-Angabe' als Edittext zu setzen, falls der echte Wert nicht gelesen werden kann, wie z.B. beim ersten Programmstart. Verwende den Text, der dem User in diesem Fall angezeigt werden soll, anstatt 'Default-Angabe', wie z.B. einen leeren String: ''
Ini := TIniFile.Create('data.ini');
Edit1.Text := Ini.ReadString('Daten', 'Edit1-Feld', 'Default-Angabe'); Edit2.Text := Ini.ReadString('Daten', 'Edit2-Feld', 'Default-Angabe'); //... ini.free; 4. Zuweisung der Boolean (Ja-Nein-Werte) du machst gerade folgendes: Falls der wert der Checkbox.checked wahr ist, dann setze den Wert des Edit.Enabled auf wahr. Falls der wert der Checkbox.checked falsch ist, dann setze den Wert des Edit.Enabled auf falsch. klingt das nicht etwas umständlich?
Delphi-Quellcode:
einfacher wäre doch das:
if (CheckBox1.Checked=true) then Edit1.Enabled:=true;
if (CheckBox1.Checked=false) then Edit1.Enabled:=false; Falls der wert der Checkbox.checked wahr ist, dann setze den Wert des Edit.Enabled auf wahr, ansonsten setze den Wert des Edit.enabled auf falsch.
Delphi-Quellcode:
In einer If-Abfrage ist es allerdings absolut unnötig, ein =true abzufragen, denn das macht die If-Abfrage selbst. Sie überprüft, ob der Wert der gegebenen Variable true ist, also z.B. der Wert der Operation 'a'='a' ist true, während 'a'='b' false ist.
if CheckBox1.Checked=true then
Edit1.Enabled:=true else Edit1.Enabled:=false;
Delphi-Quellcode:
Aber wieso machst dus überhaupt so umständlich und sagst nicht gleich: "Gib dem edit.enabled denselben wert wie dem checkbox.checked"?
if CheckBox1.Checked then
Edit1.Enabled:=true else Edit1.Enabled:=false;
Delphi-Quellcode:
edit1.enabled:=checkbox1.checked;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 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