![]() |
Edit-Felder in Stringliste speichern
Ich möchte 10 Edit-Felder in einer Stringliste speichern. :-D
Das soll eine Eingabe-Maske werden, und beim Neustart sollen die Felder wieder mit den Einträgen (von der Stringlist)gefüllt werden. 8) Problem ist wenn ein oder mehrere Edits leer bleiben, dann erhält man immer eine Exception : "Listenindex überschreitet das Maximum"
Delphi-Quellcode:
Weiss jemand, wie man das am besten macht ? :corky:procedure TForm4.Button1Click(Sender: TObject); var i:Integer; begin for i :=0 to ComponentCount -1 do begin if Components[i] is TEdit then Stringliste.Strings[i]:= TEdit(Components[i]).Text; end; Stringliste.SaveToFile('TEST.txt'); Form4.Close; end; procedure TForm4.FormCreate(Sender: TObject); begin Stringliste := TSTringlist.Create; end; |
Re: Edit-Felder in Stringliste speichern
dann nimm doch einfach ein stringgrid :-)
|
Re: Edit-Felder in Stringliste speichern
Warum nicht TStringList.Add() ?
// edit: Was soll denn eigentlich
Delphi-Quellcode:
bewirken????
TEdit(Components[i];
|
Re: Edit-Felder in Stringliste speichern
weil das wieder 'n typische :glaskugel: geschichte ist ...
|
Re: Edit-Felder in Stringliste speichern
Zitat:
|
Re: Edit-Felder in Stringliste speichern
Zitat:
Delphi-Quellcode:
TEdit(Components[i]).text
|
Re: Edit-Felder in Stringliste speichern
Ok!
Men Vorschlag:
Delphi-Quellcode:
// ..
for i:=0 to ComponentCount-1 do if Components[i] is TEdit then StringList.Add(TEdit(Components[i]).Text); // .. // edit: Gibt es die StringListe überhaupt? |
Re: Edit-Felder in Stringliste speichern
Zitat:
|
Re: Edit-Felder in Stringliste speichern
die frage ist doch auch, was "stringliste" in seinem code ist .. und was sie macht...
|
Re: Edit-Felder in Stringliste speichern
Zitat:
|
Re: Edit-Felder in Stringliste speichern
Also bei mir nicht.
Hab's mit 3 Edits versucht, eines davon ist leer. |
Re: Edit-Felder in Stringliste speichern
Okay
Aber wie schreib ich das beim Programmstart, wenn die Stringlist die Strings in die Edit-Felder schreibt, und einige Felder leer sind ?
Delphi-Quellcode:
procedure TForm4.FormShow(Sender: TObject);
begin Stringliste.LoadFromFile('TEST.txt'); ..... end; |
Re: Edit-Felder in Stringliste speichern
wie meinst du das? :glaskugel:
poste doch endlich mal etwas mehr code... als die verstümmtelten fragemente, mit dennen man nix anfangen kann ... |
Re: Edit-Felder in Stringliste speichern
Die Strings werden gespeichert und beim Programmstart werden dieselben Werte
wieder in die Edits eingfügt. Praktisch umgekehrt |
Re: Edit-Felder in Stringliste speichern
und wie machst du das? :glaskugel:
|
Re: Edit-Felder in Stringliste speichern
Wasch mich, mach mich aber nicht nass ... :gruebel:
|
Re: Edit-Felder in Stringliste speichern
Ich meine, wie werden die Strings wieder in den Edits angezeigt ?
Delphi-Quellcode:
procedure TForm4.FormShow(Sender: TObject);
begin Stringlist.LoadFromFile('TEST.txt'); Edit1.Text:= Stringliste.Strings[0]; Edit2.Text:= Stringliste.Strings[1]; . . . . end; |
Re: Edit-Felder in Stringliste speichern
und wo taucht der fehler auf?
|
Re: Edit-Felder in Stringliste speichern
Funktioniert das Speichern denn jetzt?
|
Re: Edit-Felder in Stringliste speichern
Zitat:
Wenn man in der Eingabemaske was veränder will , müssen die Werte doch wieder erscheinen |
Re: Edit-Felder in Stringliste speichern
Zitat:
|
Re: Edit-Felder in Stringliste speichern
hm...
Hast du überprüft, das in der Stringliste nach dem Laden der Datei auch was drin ist? |
Re: Edit-Felder in Stringliste speichern
Zitat:
hab keine lust auf kaffeesatzlesen... aber zwischenzeitlich eine vermutung.. du wohl auch ;-) |
Re: Edit-Felder in Stringliste speichern
Zitat:
Delphi-Quellcode:
wenn z.B. der String
procedure TForm4.FormShow(Sender: TObject);
begin Stringlist.LoadFromFile('TEST.txt'); Edit1.Text:= Stringliste.Strings[0]; Edit2.Text:= Stringliste.Strings[1]; . . . . Edi10.Text := Stringlist.Strings[9]; end;
Delphi-Quellcode:
dann gibts eine Exception
Stringliste.Strings[1]:=''
|
Re: Edit-Felder in Stringliste speichern
Das wäre mir neu. Wie sieht den die Textdatei aus?
|
Re: Edit-Felder in Stringliste speichern
davon gibts keine exception...!!!!
was gibts denn für eine? hab ich hier schon mind. 5 mal gefragt.. ein wenig mitarbeiten könntest du auch, wenn wir dir schon beim lösen DEINES problems helfen sollen ... |
Re: Edit-Felder in Stringliste speichern
Bei mir gibts ne Exception
Listenindex überschreitet das Maximum(3) , wenn nur ein Edit-Feld ausgefüllt wurde in der TEST.txt stehen die Werte , die ich eingegeben habe , Aber nur beim Neustart des Programms gibts die Exception.
Delphi-Quellcode:
procedure TForm4.FormShow(Sender: TObject);
begin Stringliste.LoadFromFile('TEST.txt'); Edit2.Text:= Stringliste.Strings[1]; Edit3.Text:= Stringliste.Strings[2]; Edit5.Text:= Stringliste.Strings[4]; Edit1.Text:= Stringliste.Strings[0]; Edit10.Text:= Stringliste.Strings[9]; . . . . end; |
Re: Edit-Felder in Stringliste speichern
gut. mit dieser meldung kann man was anfangen...
wie viele einträge hast du denn in deiner text datei? theoretisch müssten es drei sein, da die meldung kommt, .. (3) --> 4 listeintrag. |
Re: Edit-Felder in Stringliste speichern
Mit wie meinte ich die Anzahl der Zeilen. Es existieren dort weniger Zeilen, als du auslesen willst
|
Re: Edit-Felder in Stringliste speichern
in der Textdatei steht nur eine Zeile
Debugger Exception ....Exception der Klasse EStringListError Ja, wahrscheinlich liegt es daran, dass weniger Zeilen existieren, als ich auslesen will Das kommt daher, wenn nicht alle Edit-Felder ausgefüllt sind. wenn alle Edits einen Eintrag haben, gibts keine Exception |
Re: Edit-Felder in Stringliste speichern
Also noch mal:
Auch leere Edits werden gespeichert. Dann steht in der Datei nur 0D0A für diese Zeile. Ebenso werden leere Zeilen wieder eingelesen. |
Re: Edit-Felder in Stringliste speichern
du kannst halt nur die zeilen zuweisen, welche du hast...
musst halt sicherstellen, dass deine textdatei immer alle werte aufweisen oder bei der laufzeit entsprechend validieren... :-)
Delphi-Quellcode:
for i := 0 to sl.count -1 do
(findcomponent(myEdit+inttostr(i)) as tEdit).text := sl.strings[i]; |
Re: Edit-Felder in Stringliste speichern
Zitat:
aber das kann er ja einfach mit einem hexeditor prüfen :-) und auch mit dem debugger.. kurz zuvor auf die fehlerstelle setzen und dan mit F7, F8 durchsteppen und sich dabei die wichtigsten variablen ansehen... :-) |
Re: Edit-Felder in Stringliste speichern
Diesen Code hab ich probiert, keine Exception, aber auch keine Strings :cry:
obwohl die TEST-Datei gefüllt ist
Delphi-Quellcode:
procedure TForm4.FormShow(Sender: TObject);
var K: Integer; myEdit:String; begin Stringlist.LoadFromFile('TEST.txt'); for K := 0 to stringlist.count -1 do (findcomponent(myEdit+inttostr(k)) as TEdit).text := stringlist.strings[k]; end; |
Re: Edit-Felder in Stringliste speichern
Ich habs nochmal ausführlich getestet, nur wenn die Datei 'Test.txt' noch nicht existiert oder
0 kb hat, also völlig leer ist dann gibts ne Exception
Delphi-Quellcode:
ändert leider auch nichts
if not FileExists ('Test.txt') Then filecreate('Test.txt')..........
|
Re: Edit-Felder in Stringliste speichern
Dass Problem ist das eine leere Datei immer noch keine Zeilen hat. Wenn du diese einliest hat die StringListe 0 Zeilen. Wenn du dann auf irgendeinen der Strings zugreifen willst knallt es halt. Du musst die Anzahl der Zeilen abfragen
|
Re: Edit-Felder in Stringliste speichern
Wenn Datei existiert, dann:
- Stringliste aus Datei befüllen - zur Kontrolle Zeilen zählen - Text den Edits zuweisen [edit] Mal wieder zu spät *grmpf* [/edit] |
Re: Edit-Felder in Stringliste speichern
Zitat:
optisch völlig leer ist , gibts keine Exception wenn die Datei 0 kb hat gibts ne Exception, da steht unsichtbar irgendwas drin. |
Re: Edit-Felder in Stringliste speichern
Dann stehen vermutlich nur Zeilenumbrüche drin und die sieht man normalerweise nicht.
|
Re: Edit-Felder in Stringliste speichern
Ich hab die Lösung gefunden
Delphi-Quellcode:
if Stringlist.Count = AnzahlEdits -1 then
begin Stringlist.LoadFromFile('Test.txt')...................... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 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