AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit Tstringlist

Ein Thema von Natcree · begonnen am 3. Dez 2013 · letzter Beitrag vom 3. Dez 2013
Antwort Antwort
Seite 1 von 2  1 2      
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem mit Tstringlist

  Alt 3. Dez 2013, 19:01
Habe eine Form mit 2 Buttons und einem Edit.

Mit der Form.create sollen 2 neue Edits erstellt werden

Während der Lauf zeit sollen die Daten in den Edits in eine Datei gespeichert werden.
Über einen 2. Button sollen die Daten eingelesen werden und Button1,2 und Form. caption mit den daten
geändert werden.


Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=2;
edit:=Tedit.create(Self);
edit.Name:= 'Edit' + IntToStr(i);
Edit.Text:= Edit.name+'.Text';
Edit.Top:=231;
Edit.Left:=400;
edit.Parent := Self;
i:=i+1;
edit:=Tedit.create(Self);
edit.Name:= 'Edit' + IntToStr(i);
Edit.Text:= Edit.name+'.Text';
Edit.Top:=261;
Edit.Left:=400;
edit.Parent := Self;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
begin
s:= TButton(Sender).name;
st := Tstringlist.create;
st.Add(Edit1.text); //Hier klappt es da Edit1 schon vorhanden ist
st.Add(Edit2.text); //Hier meckert er
st.Add(Edit3.text); // Hier auch
st.SaveToFile(s+'.ini');
st.free;
end;
Die Daten lesen und als Caption wiedergegeben soll hier passieren

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
st := Tstringlist.create;
st.LoadFromFile('Button1.ini');
Button1.Caption:= st.strings[0];
Form1.Caption:= st.Strings[1];
Button2.Caption:= st.Strings[2];
end;
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Problem mit Tstringlist

  Alt 3. Dez 2013, 19:09
Eins der Beide Treads kann weg Wurde wohl versehentlich 2 mal erstellt
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: Problem mit Tstringlist

  Alt 3. Dez 2013, 19:23
Wo erzeugst du denn Edit2 und Edit3? Ich sehe immer nur, daß du Edit erzeugst, und das sogar zweimal hintereinander.

Woher stammt eigentlich die Fehlermeldung "hier klappt es nicht"? Mein Compiler brachte derart kuriose Fehlermeldungen bislang nicht zustande ... Gewöhnlich erhalte ich vom Compiler ganz konkrete Hinweise, was ich falsch gemacht habe, z.B. "Unbekennter Bezeichner 'Edit'" und dergleichen ... Also mir wäre es schon wichtig zu erfahren, was mein Compiler genau zu meckern hat und nicht nur, daß er meckert ...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Problem mit Tstringlist

  Alt 3. Dez 2013, 19:24
Warum erstellst du die Steuerelemente zur Laufzeit?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Problem mit Tstringlist

  Alt 3. Dez 2013, 19:45
Delphi-Quellcode:
edit.Name:= 'Edit' + IntToStr(i);
Edit.Text:= Edit.name+'.Text';
Er erstellt aber zwei Edits. Da die variable um eins hochgezählt wird.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: Problem mit Tstringlist

  Alt 3. Dez 2013, 19:48
Woher soll der Compiler Edits kennen, die Du erst zur Laufzeit erstellst?

Was im Form.Create beim Programmstart gemacht wird, kann der Compiler nicht wissen. Das Form.Create wird zur Laufzeit ausgeführt und nicht beim Kompilieren.
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Problem mit Tstringlist

  Alt 3. Dez 2013, 19:54
Was kann ich da jetzt machen?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: Problem mit Tstringlist

  Alt 3. Dez 2013, 20:01
Da Du den Edits als Parent Self gibt's, kann Du jetzt bei Self nach Komponenten vom Type TEdit suchen und wenn Du dann eine entsprechende Komponente mit dem von Dir gewünschten Namen findest, kannst Du die gefundenen Komponenten als TEdit ansprechen und deren Text dann in die Stringliste übernehmen.

Such' mal in der Hilfe oder im Web nach FindComponent. Damit solltest Du dann Dein "Problem" gelöst bekommen.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Problem mit Tstringlist

  Alt 3. Dez 2013, 20:40
Delphi-Quellcode:
edit.Name:= 'Edit' + IntToStr(i);
Edit.Text:= Edit.name+'.Text';
Er erstellt aber zwei Edits. Da die variable um eins hochgezählt wird.
Du machst hier folgendes:

Du weist einer Variablen mit Namen Edit (das ist der Name des Objekts, deiner Edit-Komponente) einen neuen Namen zu. Danach weist du dem Text-Property einer Komponente mit dem Namen Edit einen Wert zu, und zwar den Namen dieser Komponente zusätzlich des Strings '.Text'. Was möchtest du denn damit bezwecken? Und weshalb verwendest du den Objektnamen 'Edit' noch einmal, obwohl du ihn zuvor doch umbenannt hast? Damit gibt es das Objekt Edit doch gar nicht mehr, denn das heißt doch jetzt Editwasweißich, je nach Wert der Variablen i.

Ein Edit zur erstellt man zur Laufzeit folgendermaßen:

1. Deklaration: MeinEditFeld : TEdit;
2. Erzeugen: MeinEditFeld := TEdit.Create(Self);

Irgendwie erscheint mir das Ganze einem auffallend konfusen Geist entsprungen ... Vielleicht wäre es doch nicht so verkehrt, mal ein oder zwei Grundlagen-Tutorials durchzuarbeiten, um sich mit der Sprache Delphi vertraut zu machen ...
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: Problem mit Tstringlist

  Alt 3. Dez 2013, 21:00
Komischer weise Funktioniert es jetzt. habe den code Ergänzt.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Button:String;
begin
Button:= TButton(Sender).name;
st := Tstringlist.create; //Strinlist erzeugen
st.add(edit1.text); //Text aus Edit1 einfügen
st.Add(TEdit(FindComponent('Edit'+IntToStr(i-1))).Text);
st.Add(TEdit(FindComponent('Edit'+IntToStr(i))).Text);
st.SaveToFile(Button+'.ini'); //Text speichern
st.free; //Speicher der Stringlist wieder freigeben
end;
Zitat:
Und weshalb verwendest du den Objektnamen 'Edit' noch einmal, obwohl du ihn zuvor doch umbenannt hast?
Perlsau Ich gebe dir recht.... .
Wenn ich Edit nicht umbenenne dann sagt er das 2. Edit kann nicht erstellt werden weil schon vorhanden. Aus diesem Grund gebe ich jedem Edit eine Zahl mit zu. Wie Edit1, edit2, edit3; Es ist mir klar wie mann ein Edit erstellt aber hier geht es nur um ein Beispielprogramm. Und das Problem was ich hatte war die Speicherung und wiedergabe mit einer Tstringlist.Ich habe in einem Anderen Programm vor das der User sich buttons und Edits ....... Zur laufzeit selbst erstellen, verschieben, umbenennen, Verlinkungen setzen....... kann.

Und Danke für den Tip nahpets mit FindComponents hats gut geklappt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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