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;