Autor Beitrag
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 28

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 13.06.05 14:52 
hallo
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TMainForm.BTNAddEntryClick(Sender: TObject);
begin
  tag := tag + 1;
  SetLength(ALsText, tag);
  ALsText[tag] := Tlabel.Create(self);
  with ALsText[tag] do
    begin
      parent := SBToDo;
      left := 10;
      top := tag * 25;
      name := 'LText' + IntToStr(tag + 1);
      caption := 'Ihr Text';
    end;
end;

ich bekomme immer einen fehler beim 2. klick, warum ?
zuerst hatte ich SetLength(ALsText, high(ALsText) + 1); aber
da blieb der wert immer gleich, versteh ich irgendwie net, wie bekomme ich das hin ? :roll:
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Mo 13.06.05 15:03 
Also das dürfte eigentlich auch beim ersten Mal schon nicht so richtig klappen dürfen.
Typisches Problem. Du addierst zu Tag einen hinzu, setzt das als Länge und greifst auf Element 1 in dem Array zu. Richtig wäre aber das Element 0. Außerdem hast du teilweise ein Tag eines anderen Elementes im Wickel. Das Tag in dem With bezieht sich natürlich IMMER auf das Tag von dem Label nicht auf das was du oben als Index "missbrauchst". Evtl. wäre es sicherer du würdest mit High(ALsText) oder oder mit einer anderen Variable arbeiten.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TMainForm.BTNAddEntryClick(Sender: TObject);
begin
  SetLength(ALsText, Tag + 1);
  ALsText[tag] := Tlabel.Create(self);
  with ALsText[tag] do
    begin
      parent := SBToDo;
      left := 10;
      top := Self.tag * 25;
      name := 'LText' + IntToStr(Self.tag + 1);
      caption := 'Ihr Text';
    end;
  Tag := Tag + 1;
end;


Das sollte es gehen. Denke ich mal.

[edit] High liefert immer das höchste Element zurück. Wenn das Array leer ist bekommst du -1. Du müsstest anstelle des High ein Length nehmen. Also SetLength(ALsText, Length(ALsText) + 1).

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 28

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 13.06.05 15:15 
user profile iconLossy eX hat folgendes geschrieben:
Evtl. wäre es sicherer du würdest mit High(ALsText) oder oder mit einer anderen Variable arbeiten.

Das ging ja leider net :D ich werds mal mit length probieren, deine version funktioniert, danke :wink: