Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Daten speichern (https://www.delphipraxis.net/64519-daten-speichern.html)

konda 5. Mär 2006 16:50

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;

LukeGee 5. Mär 2006 16:52

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 :?

inherited 5. Mär 2006 17:34

Re: Daten speichern
 
Poste mal deinen gesamten code bitte

LukeGee 5. Mär 2006 17:46

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.

konda 5. Mär 2006 17:51

Re: Daten speichern
 
Und wo genau leigt jetzt der Fehler? :gruebel:

LukeGee 5. Mär 2006 17:54

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.

konda 5. Mär 2006 18:00

Re: Daten speichern
 
Zitat:

Zitat von LukeGee
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.

Ja klar ist die Checkbox nicht angeklickt. Du speicherst den Wert ja auch nicht ab.

marabu 5. Mär 2006 18:05

Re: Daten speichern
 
Hallo Lukas,

schau dir mal die Änderungen an, die ich an deinem Code gemacht habe:

Delphi-Quellcode:
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.
Freundliche Grüße vom marabu

inherited 5. Mär 2006 18:52

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

ichbins 5. Mär 2006 20:45

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:
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;
du öffnest die Datei, schreibst, schliesst die Datei, öffnest sie wieder, schreibst,...

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:
ini:=tinifile.create('data.ini');
Ini.WriteString('Daten', 'Edit1-Feld', Edit1.Text);
Ini.WriteString('Daten', 'Edit2-Feld', Edit2.Text);
Ini.Free;
3. Lesen der INI-Dateien

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:
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');

//...
besser am Anfang einmal öffnen, alles lesen, und dann wieder schliessen:

Delphi-Quellcode:
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;
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: ''

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:
if (CheckBox1.Checked=true) then Edit1.Enabled:=true;
if (CheckBox1.Checked=false) then Edit1.Enabled:=false;
einfacher wäre doch das:

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:
if CheckBox1.Checked=true then
  Edit1.Enabled:=true
else
  Edit1.Enabled:=false;
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.

Delphi-Quellcode:
if CheckBox1.Checked then
  Edit1.Enabled:=true
else
  Edit1.Enabled:=false;
Aber wieso machst dus überhaupt so umständlich und sagst nicht gleich: "Gib dem edit.enabled denselben wert wie dem checkbox.checked"?

Delphi-Quellcode:
edit1.enabled:=checkbox1.checked;


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.
Seite 3 von 4     123 4      

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