AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Lazarus (IDE) Liste exceeds bounds (Schnelle Hilfe bitte)

Liste exceeds bounds (Schnelle Hilfe bitte)

Ein Thema von Finki · begonnen am 21. Aug 2013 · letzter Beitrag vom 12. Sep 2013
Antwort Antwort
Seite 1 von 3  1 23   
Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#1

Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 12: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]='1then
    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]='2then
    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]='3then
    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]='4then
    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 :/!
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.706 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 12:53
Dann debugge halt deinen Code.
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:
2013-08-21-13_54_02-optionen.png
Uli Gerhardt

Geändert von uligerhardt (21. Aug 2013 um 12:55 Uhr)
  Mit Zitat antworten Zitat
Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 13:00
ne bringt nix des fehler kommt nach dem end; der procedure
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
5.907 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 13:13
Deine Datei hat doch auch nur so viel Zeilen

for j:=3 to Form1.zwischenspeicher.Lines.Count do Count (von egal was) gibt an, wieviel drinsteckt. Angefangen zu zählen wird bei Null.
Wenn in irgendetwas drei Dinge stecken und machst etwas von den Dingen an Position Null bis inklusive drei. Dann sind das schon vier.

Also:
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?
  Mit Zitat antworten Zitat
Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 13:16
zu deiner Lösung hab ich schon versucht: ohne Veränderung!

und zu zweitens was soll das bringen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.400 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 13:17
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.706 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 13:18
ne bringt nix des fehler kommt nach dem end; der procedure
Dann setze den erwähnten Haken in den Debugger-Optionen. Dann hält der Debugger beim Werfen der Exception an der richtigen Stelle an.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 13:22
Da hast Du aber echt starken Source:
Delphi-Quellcode:
for j:=3 to Form1.zwischenspeicher.Lines.Count do
begin
if Form1.zwischenspeicher.Lines[(j-3)*8+4]='1then
begin
Abgesehen von dem .Count ist .Lines[(j-3)*8+4] doch arg fehlerträchtig. Stell Dir mal vor in Zwischenspeicher gibt es 100 Datensätze.....

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
457 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 13:32
und zu zweitens was soll das bringen
Weil gewisse Features von Delphi1 <> Delphi7 <> Delphi2007 <> DelphiXE <> Lazarus sind.
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?
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Daniel
(Administrator)

Registriert seit: 30. Mai 2002
Ort: Hamburg
15.517 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 13:39
@taveuni: Kein Grund, ausfallend zu werden.

@Finki: Wenn das tatsächlich Lazarus ist, womit Du arbeitest, wäre das natürlich eine wichtige Information.
Daniel R. Wolf
Admin Delphi-PRAXiS
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf