Registriert seit: 2. Jul 2013
120 Beiträge
FreePascal / Lazarus
|
Liste exceeds bounds (Schnelle Hilfe bitte)
21. Aug 2013, 13:44
Hey, dringend (ohne Stress zu machen )
Delphi-Quellcode:
procedure TForm2.btnLoadClick(Sender: TObject);
var
txti, lbli, memoi, j : integer;
anztxti, anzlbli, anzmemoi : integer;
txtstr, lblstr, memostr : string;
Edit4 : TEdit;
Label1 : TLabel;
Memo2 : TMemo;
begin
if Form1.OpenDialog1.Execute then
begin
Form1.zwischenspeicher.Lines.LoadFromFile(Form1.OpenDialog1.FileName);
Form1.Memo1.Visible:=false;
if pnlForm1<>NIL then
begin
pnlForm1.Destroy;
end;
pnlForm1 := TPanel.Create(Form1);
pnlForm1.Parent := Form1;
pnlForm1.SetBounds(8,Form1.Memo1.Top,Form1.Memo1.Width,Form1.Memo1.Height-5);
pnlForm1.Visible:=true;
CloseFormular := TSpeedButton.Create(pnlForm1);
CloseFormular.Parent := pnlForm1;
CloseFormular.SetBounds(pnlForm1.Width-20,0,20,20);
//CloseFormular.Glyph.LoadFromFile('menu_close.bmp');
CloseFormular.Font.Color:=clRed;
CloseFormular.Font.Bold:=true;
CloseFormular.Font.Name:='Arial';
CloseFormular.Caption:='X';
CloseFormular.OnClick:=@CloseFormularClick;
CloseFormular.Caption:='X';
CloseFormular.SetBounds(pnlForm1.Width-16,0,16,16);
anztxti:=strtoint(Form1.zwischenspeicher.Lines[0]); //position der Anz txt
anzlbli:=strtoint(Form1.zwischenspeicher.Lines[1]); //position der Anz lbl
anzmemoi:=strtoint(Form1.zwischenspeicher.Lines[2]);
for j:=3 to Form1.zwischenspeicher.Lines.Count do
begin
if Form1.zwischenspeicher.Lines[(j-3)*8+4]='1' then
begin
Edit4 :=TEdit.Create(pnlForm1);
Edit4.Parent := pnlForm1;
Edit4.Name:=Form1.zwischenspeicher.Lines[(j-3)*8+5];
Edit4.Enabled:= true;
Edit4.AutoSize:=false;
Edit4.Setbounds(strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+7]),
strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+8]),
strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+9]),
strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+10]));
Edit4.Text:=Form1.zwischenspeicher.Lines[(j-3)*8+6];
end;
if Form1.zwischenspeicher.Lines[(j-3)*8+4]='2' then
begin
Label1 :=TLabel.Create(pnlForm1);
Label1.Parent := pnlForm1;
Label1.Name:=Form1.zwischenspeicher.Lines[(j-3)*8+5];
Label1.Enabled:= true;
Label1.AutoSize:=true;
Label1.Setbounds(strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+7]),
strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+8]),
strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+9]),
strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+10]));
Label1.Caption:=Form1.zwischenspeicher.Lines[(j-3)*8+6];
end;
if Form1.zwischenspeicher.Lines[(j-3)*8+4]='3' then
begin
Memo2 :=TMemo.Create(pnlForm1);
Memo2.Parent := pnlForm1;
Memo2.Name:=Form1.zwischenspeicher.Lines[(j-3)*8+5];
Memo2.Enabled:=true;
Memo2.AutoSize:=false;
Memo2.Setbounds(strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+7]),
strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+8]),
strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+9]),
strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+10]));
end;
if Form1.zwischenspeicher.Lines[(j-3)*8+4]='4' then
begin
Label1 :=TLabel.Create(pnlForm1);
Label1.Parent := pnlForm1;
Label1.Name:=Form1.zwischenspeicher.Lines[(j-3)*8+5];
Label1.Enabled:= true;
Label1.AutoSize:=true;
Label1.Setbounds(strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+7]),
strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+8]),
strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+9]),
strtoint(Form1.zwischenspeicher.Lines[(j-3)*8+10]));
Label1.Caption:=datetostr(Now);
end;
end;
Form1.zwischenspeicher.Clear;
Close;
end;
end;
dieser Code erstellet verschiedene Objekte. aber aus irgendeinem Grund kommt da der Fehler
List index exceeds bounds (28)
in der datei, welche geöffnet wird steht
Code:
1
2
0
2
lblFeld1
Labeltext eingeben
135
44
100
16
4
lblFeld2
21.08.2013
137
53
55
16
1
txtFeld1
Name
134
72
50
23
sry für den unübersichtlichen Code, der ist so Step by Step entstanden :/!
|
|
Zitat
|