AGB  ·  Datenschutz  ·  Impressum  







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

Liste exceeds bounds (Schnelle Hilfe bitte)

Ein Thema von Finki · begonnen am 21. Aug 2013 · letzter Beitrag vom 12. Sep 2013
Antwort Antwort
Seite 2 von 3     12 3      
taveuni
Online

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

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 14:01
@taveuni: Kein Grund, ausfallend zu werden.
Ja sorry.

[OT]
Ich ärger mich seit einer Woche mit einem Problem rum Remobjects/Delphi 2007.
Und das Projekt ist von 2006. Der Code ist
[/OT]
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 14:42
Der Code bezieht sich fast vollständig auf Form1, gehört also auch in diese Klasse.
Bitte rücke den Code ordentlich ein.
Verwende Unterfunktionen/Methoden zur Übersichtlichkeit und zum Testen.
Delphi-Quellcode:
procedure TForm2.btnLoadClick(Sender: TObject);
begin
  Form1.OpenFile;
  Close;
end;

type
  TForm1 = class(TForm)
  private
    procedure ReadData;
    procedure ReadTyp1(var j: Integer);
    procedure ReadTyp2(var j: Integer);
    procedure ReadTyp3(var j: Integer);
    procedure ReadTyp4(var j: Integer);
  public
    procedure OpenFile;
  end;


procedure TForm1.OpenFile;
begin
  if OpenDialog1.Execute then
  begin
    Zwischenspeicher.Lines.LoadFromFile(OpenDialog1.FileName);
    ReadData;
    Zwischenspeicher.Clear;
  end;
end;

procedure TForm1.ReadData;
var
  j, iTyp : integer;
  anztxti, anzlbli, anzmemoi : integer;
begin
  Memo1.Visible:=false;

  pnlForm1.Destroy;
  pnlForm1 := nil;
  pnlForm1 := TPanel.Create(Self);
  pnlForm1.Parent := Form1;
  pnlForm1.SetBounds(8, Memo1.Top, Memo1.Width, 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 := Zwischenspeicher[0]; //position der Anz txt
  anzlbli := Zwischenspeicher[1]; //position der Anz lbl
  anzmemoi := Zwischenspeicher[2];
  j := 3;
  while j < zwischenspeicher.Lines.Count do
  begin
    iTyp := StrToIntDef(Zwischenspeicher[j], 0);
    Inc(j);
    case iTyp of
      1: ReadTyp1(j);
      2: ReadTyp2(j);
      3: ReadTyp3(j);
      4: ReadTyp4(j);
    else
      raise Exception.CreateFmt('Typ nicht unterstützt Zeile(%d)', [j]);
    end;
  end;
end;

procedure TForm1.ReadTyp1(var j: Integer);
var
  Edit4 : TEdit;
begin
  Edit4 := TEdit.Create(pnlForm1);
  Edit4.Parent := pnlForm1;
  Edit4.Name := Zwischenspeicher[j];
  Edit4.Enabled := True;
  Edit4.AutoSize := False;
  Edit4.Text := Zwischenspeicher[j + 1]
  Edit4.Setbounds(IntToStr(Zwischenspeicher[j + 2]),
                  IntToStr(Zwischenspeicher[j + 3]),
                  IntToStr(Zwischenspeicher[j + 4]),
                  IntToStr(Zwischenspeicher[j + 5]));
  Inc(j, 8); // <- so viele Zeilen, wie für diesen Typ erforderlich
end;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 15:56
Hallo,

Delphi-Quellcode:
//for j:=3 to Form1.zwischenspeicher.Lines.Count do
for j:=3 to Form1.zwischenspeicher.Lines.Count-1 do
begin
  if Form1.zwischenspeicher.Lines[(j-3)*8+4]='1then
  begin
  end;
end;
Nehmen wir mal 10 Zeilen in der Datei an.
Dann kommt bei der letzten Zeile (j=9)
(9-3)*8+4 = 52 raus.

Wieso soll der Compiler zur Laufzeit dann nicht meckern ...


Heiko
Heiko
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 16:25
Wenn man die Prüfung auf Bereichsüberschreitung abschaltet ...
und dann mit die Compileroptionen so einstellt das man nicht debuggen kann...
... fehlt nur noch ein großes "try..except end" damit niemand die Fehlermeldungen sieht.
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 16:39
Das ist aber schon deluxe.

Wenn man überhaupt erstmal so weit kommt dass er überhaupt kompiliert könnte man eigentlich schon ausrollen.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 17:31
Das ist aber schon deluxe.

Wenn man überhaupt erstmal so weit kommt dass er überhaupt kompiliert könnte man eigentlich schon ausrollen.
Warum sollte er nicht kompilieren?
Wenn ich das richtig gelesen habe werden so 1..2 Datensätze klaglos verarbeitet und dann macht es bumm.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Der schöne Günther

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

._.

  Alt 21. Aug 2013, 17:41
Nein, das war schon vollkommen abseits vom Thema, so halbwitz-weise in Richtung hochqualitativer Softwareentwicklung: "Hurra, er kompiliert! Wir liefern aus!"

Ich hätte besser nichts von mir gegeben, eigentlich gab es ja sowieso nichts mehr zu sagen.
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#18

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 22. Aug 2013, 08:42
Also:
for j:=3 to (Form1.zwischenspeicher.Lines.Count-1) do
Kleine Anmerkung am Rande: die Klammern sind nicht nötig.

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Finki

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

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 11. Sep 2013, 12:36
Vielen Dank für die Antworten.
Aber ich verstehe es noch nicht, last uns des mal durch gehen am beispiel:

Memo inhalt:

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

gut, das Programm fängt an mit auslesen:

Delphi-Quellcode:
    for j:=3 to Form1.zwischenspeicher.Lines.Count do //j ist 3
    begin
    if Form1.zwischenspeicher.Lines[(j-3)*8+4]='1then // 3 (j)-3= 0; 0*8=0; 0+4=4
und in der 4ten Zeile steht eine 2 also geht das Programm nicht in diese if schleife!

und das geht doch so weiter und dann am Ende is es halt zu Ende. Oder nicht?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 11. Sep 2013, 12:48
1. If-Schleife
2.
Zitat:
Delphi-Quellcode:
for j:=3 to Form1.zwischenspeicher.Lines.Count do //j ist 3
    begin
    if Form1.zwischenspeicher.Lines[(j-3)*8+4]='1then
Nehmen wir mal an, das Memo enthält 4 Zeilen. Dann ergibt das im letzten Durchlauf 1*8+4 = 12. 12 ist aber um einiges größer als 4 (wobei die 4. Zeile auch noch den Index 3 hat, also noch einen weniger). Was soll denn dabei herauskommen?
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
Antwort Antwort
Seite 2 von 3     12 3      


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