AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Daten speichern

Ein Thema von LukeGee · begonnen am 4. Mär 2006 · letzter Beitrag vom 11. Jan 2007
Antwort Antwort
Seite 4 von 4   « Erste     234   
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#31

Re: Daten speichern

  Alt 5. Mär 2006, 22:15
Delphi-Quellcode:
procedure TForm1.ToolButton1Click(Sender: TObject);
var i:integer;
begin
   Ini := TIniFile.Create('data.ini');
    for i := 1 to 19 do begin
     Ini.WriteString('Daten', 'Edit1'+inttostr(i)+'-Feld', TEdit(FindComponent('Edit'+inttostr(i))).text);
    end;
   Ini.Free;
end;
Wäre deutsöich kürzer für den ersten teil

und

Delphi-Quellcode:
procedure TForm1.ToolButton2Click(Sender: TObject);
var i:integer;
begin
   Ini := TIniFile.Create('data.ini');
    for i := 1 to 19 do begin
     TEdit(FindComponent('Edit'+inttostr(i))).text=Ini.ReadString('Daten', 'Edit1'+inttostr(i)+'-Feld', 'Default-Wert');
    end;
   Ini.Free;
end;
für den 2 ten Teil

PS: Code net überprüft müsste aber funzen
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
LukeGee

Registriert seit: 20. Feb 2006
89 Beiträge
 
Delphi 2005 Personal
 
#32

Re: Daten speichern

  Alt 6. Mär 2006, 13:22
Zitat von ichbins:
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"?

edit1.enabled:=checkbox1.checked;
Vielen Dank für die Korrektur. Geht ja wirklich viel einfacher
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#33

Re: Daten speichern

  Alt 6. Mär 2006, 17:00
Bei der gelegenheit könnte man für sowas eigentlich ne eigene unit schreiben
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Marduk

Registriert seit: 28. Okt 2006
6 Beiträge
 
Delphi 3 Professional
 
#34

Re: Daten speichern

  Alt 11. Jan 2007, 14:07
Zitat von Dj_Base:
Um dir diesen Umstand zu nutze machen zu können, muss du die Unit IniFiles einbinden.
Und dann musst folgendes für das Speichern der Daten tun:
Delphi-Quellcode:
var Ini: TIniFile //Variable vom Typ TIniFile.
begin
Ini := TIniFile.Create('data.ini'); //Ini-Datei öffnen bzw. erstellen
//Speichert Edit1.Text in der Kategorie Daten als wert von Edit-Feld
Ini.WriteString('Daten', 'Edit-Feld', Edit1.Text);
Ini.Free; //Und wieder freigeben
end;
Die Ini-datei sieht nun so aus:
Delphi-Quellcode:
[Daten]
Edit-Feld=Hier der Inhalt deines Edit-Feldes ...
hab ich mir mal so geklaut und sieht demantsprechend so aus:

Delphi-Quellcode:
procedure TForm1.bt1onclick(Sender: TObject);
var
ini:TIniFile;
begin
    ini:= TIniFile.Create('data.ini');
    ini.writestring('Daten','Zeit',edit1.text);
    ini.free;
end;
das Prog lässt sich auch ohne Probleme ausführen, erzeugt aber keine Datei im Ordner mit der Projekt.exe. Erstelle ich manuell eine data.ini im Ordner mit der exe, so verändert sich selbige nicht.
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#35

Re: Daten speichern

  Alt 11. Jan 2007, 14:17
Probiere mal folgende änderung aus:
    ini:= TIniFile.Create(ExtractFilePath(ParamStr(0))+'data.ini');
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Marduk

Registriert seit: 28. Okt 2006
6 Beiträge
 
Delphi 3 Professional
 
#36

Re: Daten speichern

  Alt 11. Jan 2007, 16:27
Danke, das war's!
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#37

Re: Daten speichern

  Alt 11. Jan 2007, 17:58
Moin
Nochmal ne kurze Erklärung zu Ini-Dateien:
Wenn das hier
ini:= TIniFile.Create('data.ini'); gemacht wird, dann wird die IniDatei im Windows-Ordner abgelegt bzw erstellt
wobei es völlig egal ist, ob du sie nun data.ini oder data.txt oder data.bla nennst...
Bemüh mal die Suchfunktion deines Rechners und schau dir mal an, wo deine 'vermisste' data.ini gelandet ist...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 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