![]() |
Liste exceeds bounds (Schnelle Hilfe bitte)
Hey, dringend (ohne Stress zu machen:D)
Delphi-Quellcode:
dieser Code erstellet verschiedene Objekte. aber aus irgendeinem Grund kommt da der Fehler
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;
Delphi-Quellcode:
in der datei, welche geöffnet wird steht
List index exceeds bounds (28)
Code:
sry für den unübersichtlichen Code, der ist so Step by Step entstanden :/!
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 |
AW: Liste exceeds bounds (Schnelle Hilfe bitte)
Liste der Anhänge anzeigen (Anzahl: 1)
Dann debugge halt deinen Code. :cyclops:
Haltepunkt an den Anfang der Routine (per F5), Programm starten, an die kritische Stelle navigieren, dann mit F8 weitergehen, bis es kracht. Dann weißt du zumindest schonmal, in welcher Zeile dein Fehler ist. Edit: Und folgenden Haken zu setzen kann auch nicht schaden: Anhang 39787 |
AW: Liste exceeds bounds (Schnelle Hilfe bitte)
ne bringt nix des fehler kommt nach dem end; der procedure
|
AW: Liste exceeds bounds (Schnelle Hilfe bitte)
Deine Datei hat doch auch nur so viel Zeilen :|
Delphi-Quellcode:
Count (von egal was) gibt an, wieviel drinsteckt. Angefangen zu zählen wird bei Null.
for j:=3 to Form1.zwischenspeicher.Lines.Count do
Wenn in irgendetwas drei Dinge stecken und machst etwas von den Dingen an Position Null bis inklusive drei. Dann sind das schon vier. Also:
Delphi-Quellcode:
for j:=3 to (Form1.zwischenspeicher.Lines.Count-1) do
Außerdem habe ich grade voll den crazy Gedankengang: Möchtest du vielleicht einmal FreePascal in dein Profil eintragen? |
AW: Liste exceeds bounds (Schnelle Hilfe bitte)
zu deiner Lösung hab ich schon versucht: ohne Veränderung!
und zu zweitens was soll das bringen:? |
AW: Liste exceeds bounds (Schnelle Hilfe bitte)
An das "- 1" hab ich auch zuerst gedacht, aber es wird ja nirgends auf Form1.zwischenspeicher.Lines[j] zugegriffen, sondern immer auf abenteuerliche Indizes, die nach einer magischen Formel berechnet werden. Man darf mich jetzt meinetwegen hassen, aber nach dem ersten Blick auf den Code kam mir der alte Spruch "Niemand ist unnütz, er kann immer noch als schlechtes Beispiel dienen" in den Sinn.
|
AW: Liste exceeds bounds (Schnelle Hilfe bitte)
Zitat:
|
AW: Liste exceeds bounds (Schnelle Hilfe bitte)
Da hast Du aber echt starken Source:
Delphi-Quellcode:
Abgesehen von dem
for j:=3 to Form1.zwischenspeicher.Lines.Count do
begin if Form1.zwischenspeicher.Lines[(j-3)*8+4]='1' then begin
Delphi-Quellcode:
ist
.Count
Delphi-Quellcode:
doch arg fehlerträchtig. Stell Dir mal vor in Zwischenspeicher gibt es 100 Datensätze.....
.Lines[(j-3)*8+4]
Gruß K-H |
AW: Liste exceeds bounds (Schnelle Hilfe bitte)
Zitat:
Wenn ich jetzt nach Monaten wieder mal an Delphi sitze und bei mir was ausprobiere was Dein Problem betrifft - und kanns nicht nachvollziehen. X Threads weiter erfahr ich dann dass es Lazarus ist. Ich fühl mich dann verarscht und meine Zeit ist verschwendet. Kapierst Du das und trägst das jetzt in dein Profil ein oder bist Du nur ein Troll? |
AW: Liste exceeds bounds (Schnelle Hilfe bitte)
@taveuni: Kein Grund, ausfallend zu werden.
@Finki: Wenn das tatsächlich Lazarus ist, womit Du arbeitest, wäre das natürlich eine wichtige Information. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 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-2025 by Thomas Breitkreuz