AGB  ·  Datenschutz  ·  Impressum  







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

Aus TStringList laden

Ein Thema von Martin.Ghosts · begonnen am 11. Feb 2006 · letzter Beitrag vom 12. Feb 2006
Antwort Antwort
Martin.Ghosts

Registriert seit: 9. Dez 2005
54 Beiträge
 
Delphi 7 Personal
 
#1

Aus TStringList laden

  Alt 11. Feb 2006, 16:13
Der Titel ist nich optimal formuliert, mir fiel aber nichts besseres ein.
Hier ein Ausschnitt aus dem Quelltext:
Delphi-Quellcode:
var laden: TStringList;

repeat
  begin
    laden.Strings[i]:=laden.Strings[i+1];
    i:=i+2;
  end;
until(i>laden.Count);
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?
Vielen dank schon mal.
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#2

Re: Aus TStringList laden

  Alt 11. Feb 2006, 16:16
Vielleicht kannst du ja mit Hier im Forum suchenFindComponent was basteln. Allerdings muss ich zugeben, dass ich noch nicht ganz verstanden hab, was du genau machen willst
  Mit Zitat antworten Zitat
Martin.Ghosts

Registriert seit: 9. Dez 2005
54 Beiträge
 
Delphi 7 Personal
 
#3

Re: Aus TStringList laden

  Alt 11. Feb 2006, 16:22
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.
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#4

Re: Aus TStringList laden

  Alt 11. Feb 2006, 16:53
Delphi-Quellcode:
var laden: TStringList;

repeat
  begin
    Form4.FindComponent(laden.Strings[i]).Text:=laden.Strings[i+1];
    i:=i+2;
  end;
until(i>laden.Count);
Lass nur das .Text in der txt weg

/edit: Und das Form4 besser auch
  Mit Zitat antworten Zitat
Martin.Ghosts

Registriert seit: 9. Dez 2005
54 Beiträge
 
Delphi 7 Personal
 
#5

Re: Aus TStringList laden

  Alt 11. Feb 2006, 17:50
Fogende Fehlermeldung: Undefinierter Bezeichner: 'Text'
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Aus TStringList laden

  Alt 11. Feb 2006, 18:10
Moin Martin,

so könnte es gehen:

Delphi-Quellcode:
var laden: TStringList;

repeat
  begin
    (Application.FindComponent(laden[i]) as TEdit).Text:=laden[i+1];
    i:=i+2;
  end;
until(i>laden.Count);
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:

<Formularname>.<Editname>

enthalten sein, z.B. Form4.Edit1

Sicherer ist es so:

Delphi-Quellcode:
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);
Hier wird erst einmal geprüft, ob das in laden[i] enthaltene Editfeld überhaupt gefunden werden konnte.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Martin.Ghosts

Registriert seit: 9. Dez 2005
54 Beiträge
 
Delphi 7 Personal
 
#7

Re: Aus TStringList laden

  Alt 12. Feb 2006, 11:30
Bei mir passiert nix. Ich hab jetzt mal was mit showmessages gemacht und da kam folgendes bei rum:
Delphi-Quellcode:
showmessage(laden[i]) ///Form4.Edit1
showmessage((Application.FindComponent(laden[i]) as TEdit).Text) ///nix
Kann damit jemand was anfangen?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Aus TStringList laden

  Alt 12. Feb 2006, 15:33
Moin Martin,

sorry, Denkfehler von mir

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;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Martin.Ghosts

Registriert seit: 9. Dez 2005
54 Beiträge
 
Delphi 7 Personal
 
#9

Re: Aus TStringList laden

  Alt 12. Feb 2006, 19:56
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
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:48 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