![]() |
Aus TStringList laden
Der Titel ist nich optimal formuliert, mir fiel aber nichts besseres ein.
Hier ein Ausschnitt aus dem Quelltext:
Delphi-Quellcode:
In i steht z.B. Form4.Edit1.Text. Also soll in Form4.Edit1.Text der Inhalt aus laden.Strings[i+1] stehen. Wie kann ich dieses Problem lösen?
var laden: TStringList;
repeat begin laden.Strings[i]:=laden.Strings[i+1]; i:=i+2; end; until(i>laden.Count); Vielen dank schon mal. |
Re: Aus TStringList laden
Vielleicht kannst du ja mit
![]() |
Re: Aus TStringList laden
Ich habe alle Felder eines Formulars in einer txt-Datei gespeichert:
z.B.: Form4.Edit1.Text /// gibt den Namen des Editfeldes an 120 /// gibt den Inhalt des Editfeldes an Form4.Edit2.Text Text Form4.ComboBox1.Text Text usw. Nun möchte ich alles wieder laden: Der Inhalt des Editfeldes Form4.Edit1.Text soll lauten 120 usw. Und zum selbst Zusammenbasteln. Ich habe erst seit einem halben jahr Info. So auf die Schnelle kann ich da nichts machen. |
Re: Aus TStringList laden
Delphi-Quellcode:
Lass nur das .Text in der txt weg
var laden: TStringList;
repeat begin Form4.FindComponent(laden.Strings[i]).Text:=laden.Strings[i+1]; i:=i+2; end; until(i>laden.Count); /edit: Und das Form4 besser auch |
Re: Aus TStringList laden
Fogende Fehlermeldung: Undefinierter Bezeichner: 'Text'
|
Re: Aus TStringList laden
Moin Martin,
so könnte es gehen:
Delphi-Quellcode:
In diesem Falle muss laden[i] (das .Strings hab' ich mal weggelassen, da die Strings als Standardeigenschaft von TStringList deklariert ist, und somit nicht mit angegeben werden muss) in der Form:
var laden: TStringList;
repeat begin (Application.FindComponent(laden[i]) as TEdit).Text:=laden[i+1]; i:=i+2; end; until(i>laden.Count); <Formularname>.<Editname> enthalten sein, z.B. Form4.Edit1 Sicherer ist es so:
Delphi-Quellcode:
Hier wird erst einmal geprüft, ob das in laden[i] enthaltene Editfeld überhaupt gefunden werden konnte.
var
laden : TStringList; edtWork : TEdit; repeat begin edtWork := (Application.FindComponent(laden[i]) as TEdit); if edtWork <> nil then edtWork.Text := laden[i+1]; i:=i+2; end; until(i>laden.Count); |
Re: Aus TStringList laden
Bei mir passiert nix. Ich hab jetzt mal was mit showmessages gemacht und da kam folgendes bei rum:
Delphi-Quellcode:
Kann damit jemand was anfangen?
showmessage(laden[i]) ///Form4.Edit1
showmessage((Application.FindComponent(laden[i]) as TEdit).Text) ///nix |
Re: Aus TStringList laden
Moin Martin,
sorry, Denkfehler von mir :wall: Wenn Du verschiedene Formulare hast und Felder hast, musst Du den String erst einmal trennen: (Annahme: Es liegt immer die Aufteilung <Formularname>.<Editname> vor)
Delphi-Quellcode:
var
frm : TForm; edt : TEdit; begin // Nur der Kern der Schleife // Gewünschtes Formular ermitteln, dessen Name sollte bis zum . stehen frm := Application.FindComponent(copy(laden[i],1,pos('.',laden[i])-1)) as TForm; if frm <> nil then begin // Formular gefunden // jetzt das Editfeld ermitteln edt := frm.FindComponent(copy(laden[i],pos('.',laden[i])+1,MaxInt)) as TEdit; if edt <> nil then begin // Edit gefunden ShowMessage(edt.Text); end; end; end; |
Re: Aus TStringList laden
Tut mir leid wenn ich hier keine Peilung hab. Ich fühl mich schon schlecht weil andere für mich dei Arbeit machen :? vielen Dank noch mal an der Stelle.
hier nochmal der ganze Quelltext:
Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
var laden: TStringList; frm: TForm; edt: TEdit; i: Integer; begin laden:=TStringList.Create(); Form4.Show; if ((FileExists('Tabelle\'+Form1.Button8.Caption+'. '+Form1.ComboBox1.Text+' '+Form1.SpinEdit1.Text+'.'+Form1.ComboBox2.Text+'.txt'))=true) then begin laden.LoadFromFile('Tabelle\'+Form1.Button8.Caption+'. '+Form1.ComboBox1.Text+' '+Form1.SpinEdit1.Text+'.'+Form1.ComboBox2.Text+'.txt'); i:=0; repeat begin showmessage('a'+IntToStr(i)); frm:=Application.FindComponent(copy(laden[i],1,pos('.',laden[i])-1)) as TForm; showmessage('b'+IntToStr(i)); if frm <> nil then begin showmessage('c'+IntToStr(i)); /////nach c6 fehler edt:=frm.FindComponent(copy(laden[i],pos('.',laden[i])+1,MaxInt)) as TEdit; showmessage('d'+IntToStr(i)); end; i:=i+2; end; until(i>laden.Count-1); end else begin Form4.Edit1.Text:=Form1.Button8.Caption; Form4.Caption:=Form4.Edit1.Text+'. '+Form1.ComboBox1.Text+' '+Form1.SpinEdit1.Text; end; laden.Free; Form4.GroupBox1.SetFocus; Kaloriensoll; end; folgendes steht in der txt-Datei(Anfang): Form4.ComboBox0 Form4.SpinEdit0 Form4.Edit0 Form4.ComboBox1<-----------------------hier kommt der fehler (c6 s.o.) 'Ungültige Typumwandlung' Form4.SpinEdit1 100 Form4.Edit1 1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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 by Thomas Breitkreuz