![]() |
Delphi-Version: 7
Problem mit einer Schleife
Hallo,
ich habe ein Problem mit einer Schleife. In der Schleife soll der Max_Wert ermittelt. Der Zaehler soll auch gleichzeitig die Position merken in pmax. pmax benoetige ich, um von einer 2ten Matrix einen Wert zu bekommen. Die Werte f1 bis f9 bekomme ich von einer anderen Procedure. Den Max-Wert bekomme ich angezeigt, nur die Ausgabe der 2ten Matrix funktioniert nicht. Habe ich einen Denkfehler in dem Programm?
Delphi-Quellcode:
Danke fuer eure Hilfe.
procedure TForm1.Button2Click(Sender: TObject);
var max : extended; i,pmax : integer; focusarray : array[1..9] of extended; matrixarray : array[1..9] of extended; begin foc:=0; pmax:=0; focusarray[1]:=f1; focusarray[2]:=f2; focusarray[3]:=f3; focusarray[4]:=f4; focusarray[5]:=f5; focusarray[6]:=f6; focusarray[7]:=f7; focusarray[8]:=f8; focusarray[9]:=f9; matrixarray[1]:=-0.4; matrixarray[2]:=-0.3; matrixarray[3]:=-0.2; matrixarray[4]:=-0.1; matrixarray[5]:=0; matrixarray[6]:=0.1; matrixarray[7]:=0.2; matrixarray[8]:=0.3; matrixarray[9]:=0.4; max:=f1; for i:=1 to 9 do begin if max<focusarray[i] then max:=focusarray[i]; pmax:=i; end; foc:=matrixarray[pmax]; stringgrid1.cells[1,1]:=FloatToStrF(foc, ffNumber, 8, 3); stringgrid1.cells[2,1]:=FloatToStrF(max, ffNumber, 8, 3); end; |
AW: Problem mit einer Schleife
pmax ist bei die immer gleich der Zählvariable, anstatt nur wenn Wert größer Maximum
Delphi-Quellcode:
if max<focusarray[i] then
begin max:=focusarray[i]; pmax:=i; end; |
AW: Problem mit einer Schleife
ohne weitergehende Untersuchung
Delphi-Quellcode:
if max<focusarray[i] then
begin max:=focusarray[i]; pmax:=i; end; |
AW: Problem mit einer Schleife
pmax steht auf 0, wenn in der Schleife nichts größer als der erste Wert ist,
und schon stimmt was nicht mehr, wenn du auf den Index 0 zugreifen willst. (den es nicht gibt :zwinker:) Geh mal in die Projektoptionen, schalte die Bereichsprüfung an und schau ob was passiert.
Delphi-Quellcode:
//max:=0; // eigentlich nutzlos, da es nachher sowieso wieder überschrieben wird
//pmax:=0; // ... max:=f1; pmax:=1; // vergessen zu setzen for i:=2 to 9 do // 1 ist doch schon gesetzt, wozu nochmal prüfen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 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