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
Natcree

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

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
Benutzerbild von Luckie
Luckie

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

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
 
#3

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
 
#4

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
 
#5

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
 
#6

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
 
#7

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
 
#8

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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#9

AW: Problem mit Tstringlist

  Alt 3. Dez 2013, 22:27
Zitat:
Delphi-Quellcode:
edit:=Tedit.create(Self);
edit.Name:= 'Edit' + IntToStr(i);
VCL-Eigenart:
Wenn eine TComponent erstellt wird, man ihr einen Namen zuweist und im "Owner" eine Published-Variable mit dem selben Namen existiert, dannschreibt die VCL die Referenz des Objektes in diese Variable.

Genauso wird diese Variable auf NIL ggesetzt, wenn man die Komponente umbenennt oder sie freigibt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Dez 2013 um 22:32 Uhr)
  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 09:52 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