Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Maximum wir überschritten! (https://www.delphipraxis.net/122676-maximum-wir-ueberschritten.html)

thiagojonas 20. Okt 2008 13:20


Maximum wir überschritten!
 
Hallo jungs.
Ich kriege hierbei immer eine Fehlermeldung. Das Maximum des Listenindex (-1) wir überschritten.
Was ist hier falsch?

Delphi-Quellcode:
procedure TForm1.start_btnClick(Sender: TObject);
var datum:string;
var Txt2Find : String;
    Index   : Integer;

 function GetGrid2Index(Grid:TStringGrid;Txt2Find:String):Integer;
 var i : Integer;
 begin
  Result:=-1;
  with Grid do
   for i:=FixedRows to RowCount -1 do
    if (form4.StringGrid.Cells[1,i] = Txt2Find) then begin // < we compare col 1
     Result:=i;
     Break;
     end;
   end;

begin
      datum := DateToStr(Now);
      Txt2Find:=ComboBox.text;
      Index  :=GetGrid2Index(form4.StringGrid,Txt2Find);
   if Index>-1 then
   if calculate_dg.Cells[calculate_dg.FixedCols,Pred(calculate_dg.RowCount)] <> '' then
      calculate_dg.RowCount := Succ(calculate_dg.RowCount);
      calculate_dg.Cells[calculate_dg.FixedCols,Pred(calculate_dg.RowCount)] := form4.StringGrid.Cells[0,Index];
      calculate_dg.Cells[1,Pred(calculate_dg.RowCount)] := ComboBox.text;
      calculate_dg.Cells[2,Pred(calculate_dg.RowCount)] := form4.StringGrid.Cells[8,Index];
      calculate_dg.Cells[3,Pred(calculate_dg.RowCount)] := protokoll_cb.Text;
      calculate_dg.Cells[4,Pred(calculate_dg.RowCount)] := '';
      calculate_dg.Cells[5,Pred(calculate_dg.RowCount)] := datum;
      calculate_dg.Cells[6,Pred(calculate_dg.RowCount)] := FormatDateTime('hh:mm',now);
      SaveStringGrid(calculate_dg, 'Data/Penein/'+Txt2Find+'/'+Txt2Find+'.ini');
    end;
  end;

Volle 20. Okt 2008 13:31

Re: Maximum wir überschritten!
 
Wo genau tritt denn der fehler auf?

Delphi-Quellcode:
  if calculate_dg.Cells[calculate_dg.FixedCols,Pred(calculate_dg.RowCount)] <> '' then
      calculate_dg.RowCount := Succ(calculate_dg.RowCount);
kann es sein dass es hier kracht? Du kannst die Anzahl der Cells doch nich erst setzen nachdem du schaust was in einer Cell drinsteht oder?

Solltest vielleicht deine If abfrage etwas abaendern.

thiagojonas 20. Okt 2008 13:41

Re: Maximum wir überschritten!
 
Eine Zeile drunter.

Delphi-Quellcode:
 calculate_dg.Cells[calculate_dg.FixedCols,Pred(calculate_dg.RowCount)] := form4.StringGrid.Cells[0,Index];

jottkaerr 20. Okt 2008 13:45

Re: Maximum wir überschritten!
 
Hinter dem vorletzten oder dem letzten if ... then fehlt ein begin.

jkr

Frankfurtoder 20. Okt 2008 13:48

Re: Maximum wir überschritten!
 
Fehlen da nicht Begin und End im if?

Das ist sonst alles ziemlich komisch eingerückt.

thiagojonas 20. Okt 2008 14:02

Re: Maximum wir überschritten!
 
Ich denke nicht, dass das hier eine Rolle in meinem Code spielt. Mann kann es auch so prgrammieren, oder? :-D

DeddyH 20. Okt 2008 14:03

Re: Maximum wir überschritten!
 
Zitat:

Mann kann es auch so prgrammieren, oder?
Sicherlich, dann bekommt man halt die Fehler, die Du beschreibst :stupid:.

thiagojonas 20. Okt 2008 14:06

Re: Maximum wir überschritten!
 
:-D , okay aber dann passiert gar nichts.

Liegt das hier dran?

Delphi-Quellcode:
...if Index > -1 then...

DeddyH 20. Okt 2008 14:08

Re: Maximum wir überschritten!
 
Zitat:

Delphi-Quellcode:
if Index>-1 then
   if calculate_dg.Cells[calculate_dg.FixedCols,Pred(calculate_dg.RowCount)] <> '' then
      calculate_dg.RowCount := Succ(calculate_dg.RowCount);

Alles was danach kommt, ist weder von der ersten noch von der zweiten Prüfung betroffen.

thiagojonas 20. Okt 2008 14:10

Re: Maximum wir überschritten!
 
also so:

Delphi-Quellcode:
 if Index>-1 then
begin
   if calculate_dg.Cells[calculate_dg.FixedCols,Pred(calculate_dg.RowCount)] <> '' then
begin
      calculate_dg.RowCount := Succ(calculate_dg.RowCount);
      calculate_dg.Cells[calculate_dg.FixedCols,Pred(calculate_dg.RowCount)] := form4.StringGrid.Cells[0,Index];
      calculate_dg.Cells[1,Pred(calculate_dg.RowCount)] := ComboBox.text;
      calculate_dg.Cells[2,Pred(calculate_dg.RowCount)] := form4.StringGrid.Cells[8,Index];
      calculate_dg.Cells[3,Pred(calculate_dg.RowCount)] := protokoll_cb.Text;
      calculate_dg.Cells[4,Pred(calculate_dg.RowCount)] := '';
      calculate_dg.Cells[5,Pred(calculate_dg.RowCount)] := datum;
      calculate_dg.Cells[6,Pred(calculate_dg.RowCount)] := FormatDateTime('hh:mm',now);
      SaveStringGrid(calculate_dg, 'Data/Penein/'+Txt2Find+'/'+Txt2Find+'.ini');
   end;
  end;
 end;
end;

DeddyH 20. Okt 2008 14:11

Re: Maximum wir überschritten!
 
Das sieht schon sehr viel besser aus.

thiagojonas 20. Okt 2008 14:15

Re: Maximum wir überschritten!
 
Ja, aber wie gesagt, es werden keine Werte eingefügt, worin liegt das?

Hier dran?

Delphi-Quellcode:
...if Index > -1 then...

DeddyH 20. Okt 2008 14:22

Re: Maximum wir überschritten!
 
Vermutlich. Lass Dir Index doch einmal ausgeben oder setz einen Breakpoint.

thiagojonas 20. Okt 2008 14:28

Re: Maximum wir überschritten!
 
:?:
Äh... Wie bitte? Bin kein Profi :-D , wie soll ich den Index Ausgeben? Über ShowMessage?

DeddyH 20. Okt 2008 14:36

Re: Maximum wir überschritten!
 
Das wäre eine Möglichkeit ;)

thiagojonas 20. Okt 2008 14:48

Re: Maximum wir überschritten!
 
Okay, also er zeigt mir einen wert von "4412352" an.
An welccher stelle wäre es sinnvoll einen breakpoint zu setzen?

DeddyH 20. Okt 2008 14:53

Re: Maximum wir überschritten!
 
Ich würde den in der Function GetGrid2Index setzen und mir mal die aktuellen Werte innerhalb der Schleife ansehen. Apropos: wieso übergibst Du da ein Grid und greifst mittendrin auf ein bestimmtes zu?

thiagojonas 20. Okt 2008 14:57

Re: Maximum wir überschritten!
 
Aber da habe ich soch schon ein. Weil ich zwei Grids vergleiche. Es hat auch immer funktioniert. Nur halt jetzt nicht mehr, mit dem Fehler.

DeddyH 20. Okt 2008 15:13

Re: Maximum wir überschritten!
 
Wo vergleichst Du 2 Grids? Du ermittelst die Anzahl der Zeilen in der übergebenen Grid und durchläufst damit die feste Grid auf Form4. Sry, aber das ist Quatsch.

thiagojonas 21. Okt 2008 09:51

Re: Maximum wir überschritten!
 
Äh..sorry. Ich meine ich vergleichen den Text der Combobox mit der Spalte einer Grid. Wenn Die Werte identisch sind, werden dann in einer anderen Grid weitere Werte eingefügt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 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