Autor Beitrag
TM4rkuS
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 03.02.10 23:00 
Ich verwende Lazarus, aber da es keine gescheiten Lazarus-Foren gibt, und Lazarus und Delphi ja sehr ähnlich sind, frage ich einfach mal hier nach...
Ich erstelle zur Laufzeit ein Edit-Feld:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
my_edit := TEdit.create(Form1);               
with my_edit do begin
        Top := 20;               
         Left  := 20;                         
         Width := 20;                       
         Name  := 'Edit'+IntToStr(i+5); //habe schon 5 Edits
end;


so... und in einer anderen Prozedur versuche ich diese Edit-Felder aufzurufen:

ausblenden Delphi-Quelltext
1:
(FindComponent('Edit'+IntToStr(i+5as TEdit).Text := 'Hallo';					



so, während der Laufzeit erstelle ich jetzt ein Edit(1+5), und da i im ersten Durchlauf 1 ist, habe ich also ein Edit6. (es erscheint übrigens auch auf dem Formblatt). Dieses will ich dann über die findcomponent-methode aufrufen. Sinnvollerweise heißt das dann sozusagen (FindComponent('Edit6' as TEdit).Text := 'Hallo';
Aber er bricht mir mit einer exception class "External: SIGSEGV" ab und spring im Quelltext der control.inc zur Zeile
ausblenden Delphi-Quelltext
1:
if TMethod(@Self.GetTextBuf).Code = Pointer(@TControl.GetTextBuf)					


und markiert diese grau... Was tun?


Moderiert von user profile iconNarses: Topic aus Dateizugriff verschoben am Mi 03.02.2010 um 22:27
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mi 03.02.10 23:20 
Edit als Variable Deklarieren und über den Variablennamen drauf zugreifen?
Georg08
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155
Erhaltene Danke: 6

Win XP
Delphi 7.0 Personal
BeitragVerfasst: Mi 03.02.10 23:28 
mit einem Array
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
//!nicht getestet!
var
  i: integer;
  editfelder: Array [1..10of TEdit;
begin
  for i:= 1 to 10
  editfelder[i]:= TEdit.Create;
  editfelder[i].parent:= self;
  editfelder[i].Top:= 20+i+editfelder[i].height;
  editfelder[i].Left:= 20;
end
editfelder[3].Text:= 'Dies ist das Editfeld3';
end;