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 1 von 2  1 2      
Der schöne Günther

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

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 14: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
 
#2

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

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

und zu zweitens was soll das bringen
  Mit Zitat antworten Zitat
taveuni

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

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 14: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
(Co-Admin)

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

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 14: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
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
taveuni

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

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 15: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.487 Beiträge
 
Delphi 12 Athens
 
#6

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 15: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.277 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 16: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.487 Beiträge
 
Delphi 12 Athens
 
#8

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 17: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.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 17: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 DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#10

AW: Liste exceeds bounds (Schnelle Hilfe bitte)

  Alt 21. Aug 2013, 14: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
Antwort Antwort
Seite 1 von 2  1 2      


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 16:26 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