Autor Beitrag
Schwabe
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 24.01.04 13:17 
Hi,

Ich hab einen dynamischen array:
ausblenden Delphi-Quelltext
1:
var    eingabe: array of array of extended;					


Den ich mit dieser procedure fülle:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TFunktionsgraph.ZeichnenClick(Sender: TObject);
begin
  try    k:= k+1;

    if LBGezeichneteFunktionen.Items.Count = 0 then
      laenge:= 1
      else
      laenge:= LBGezeichneteFunktionen.Items.Count;

    SetLength(eingabe,4,laenge);

    eingabe[0,k]:= StrToFloat(Ea0.Text);
    eingabe[1,k]:= StrToFloat(Ea1.Text);
    eingabe[2,k]:= StrToFloat(Ea2.Text);
    eingabe[3,k]:= StrToFloat(Ea3.Text);

  Schaubild_Zeichnen;
  except
  end;
end;


(k wird bei OnFormCreate der Wert -1 zugewießen)

Ich habe eine Listbox angelegt wo er mir alle Gezeichneten Schaubilder auflistet. Jetzt möchte ich einzelen Funktionen aus der Listbox und somit aus dem array löschen.

Das mach ich mit dieser procedure:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TFunktionsgraph.BBEintragLoeschenClick(Sender: TObject);
var g,c: integer;
begin
  for c:= 0 to LBGezeichneteFunktionen.Items.Count-1 do
  begin
    if LBGezeichneteFunktionen.Selected[c] then
    begin
      LBGezeichneteFunktionen.DeleteSelected;
      for g:= c to k do
      begin
        eingabe[0,g]:= eingabe[0,g+1];
        eingabe[1,g]:= eingabe[1,g+1];
        eingabe[2,g]:= eingabe[2,g+1];
        eingabe[3,g]:= eingabe[3,g+1];
      end;
    SetLength(eingabe,4,laenge-1);

    Schaubild_Zeichnen;
    end;
  end;
end;


Ich bekomm aber jedesmal wenn ich einen Eintrag löschen will einen Application.Run error oder es kommt eine Fehlermeldung die mir sagt das der Listindex das Maximum überschreitet.

Weiß jemand wo da der Fehler liegt?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.01.04 13:18 
Geh mal mit F7 durch und kuck dir den Inhalt der Variablen an.
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Sa 24.01.04 13:23 
ausblenden Delphi-Quelltext
1:
LBGezeichneteFunktionen.DeleteSelected;					


Löscht ALLE selektierten Items in der Listbox.

Müsste so heissen:

ausblenden Delphi-Quelltext
1:
 LBGezeichneteFunktionen.Items.Delete(c);					



ausblenden Delphi-Quelltext
1:
  for c:= 0 to LBGezeichneteFunktionen.Items.Count-1 do					


verwende eine downto - Schleife.
Schwabe Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 24.01.04 13:48 
Also ich hab des jetzt mit dem Delet eingebaut. Bekomme jetzt aber ne Zugriffsverletzung sobalsd ich mehr als 2 Schaubilder zeichne :(.
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Sa 24.01.04 14:40 
Zitat:
verwende eine downto - Schleife.


Das auch?
Schwabe Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 24.01.04 14:44 
Ja hab des eingebaut:
ausblenden Delphi-Quelltext
1:
  for c:= LBGezeichneteFunktionen.Items.Count-1 downto 0 do					


Der fehler kommt aber trotzdem.
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Sa 24.01.04 15:06 
Zitat:
Bekomme jetzt aber ne Zugriffsverletzung


Wo genau kommt sie denn?
Schwabe Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 24.01.04 15:39 
Die kommt wenn ich auf Zeichnen oder auf Löschen mehrmals klick. Delphi zeigt aber nicht an in welcher Zeile der Fehler aufgetreten ist
rokdd
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 329

Win XP
D6
BeitragVerfasst: Mi 04.02.04 16:47 
Titel: setlength
hallo,

setlength(eingabe,5, laenge-1) kann doch nciht funktionieren oder???

rokdd
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mi 04.02.04 16:52 
denke auch, dass es eher so heißen sollte :?
ausblenden Delphi-Quelltext
1:
setlength(eingabe[5] ,laenge-1);					
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 04.02.04 17:04 
Hallo!

Ich weiß jetzt nicht, ob er im Rahmen des Programmes Sinn macht. Aber generell erzeugt der Befehl
ausblenden Delphi-Quelltext
1:
SetLength(myArray, a, b);					

Ein "rechteckiges" 2-dimensionales Array mit "Kantenlängen" a und b.

Mfg
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
rokdd
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 329

Win XP
D6
BeitragVerfasst: Do 05.02.04 18:40 
Bitte poste nochmal den ganzen Quelltext(mit änderungen)! danke!


rokdd