Was marabi meinte und ich auch falsch verstanden habe ist:
Im Unterprgramm die Zeile mit der MinGröße und MaxGröße ermitteln.
Delphi-Quellcode:
procedure MinMax(sg: TStringGrid; iCol: Integer; var iMin, iMax: Integer);
var
i: Index;
max,min: Integer;
begin
max:=0;
min:=MaxInteger;
for i:=sg.FixedRows to sg.RowCount -1 do
begin
if sg.cells[iCol,i] < min then
begin
min:=sg.cells[iCol,i]
iMin:=i;
end
else
if sg.cells[iCol,i] > max then
begin
max:=sg.cells[iCol,i];
iMax:=i;
end;
end;
end;
Im Hauptprogramm dann
Delphi-Quellcode:
MinMax(StringGrid1, 3, ZeileMin, ZeileMax);
Min_Name:=StringGrid1.cells[2,ZeileMin];
Min_Groesse:=StringGrid1.cells[3,ZeileMin];
Max_Name:=StringGrid1.cells[2,ZeileMax];
Max_Groesse:=StringGrid1.cells[3,ZeileMax];
Dein Code ist im Einstieg der while Schleife falsch.
Du solltest ja die ganze Tabelle durchsuchen und dazu mußt
du prüfen ob du in der letzten Zeile bist.
Delphi-Quellcode:
begin
x := sg.FixedRows;
iGroesse:=StrToInt(sg.Cells[iCol,x]);
iGroesse_min:=iGroesse;
iGroesse_max:=iGroesse;
while x <= sg.RowCount-1 do
begin
iGroesse :=StrToInt(sg.Cells[iCol,x]);
if iGroesse >= iGroesse_max then
begin
iGroesse_max :=iGroesse;
end;
if iGroesse < iGroesse_min then
begin
iGroesse_min :=iGroesse;
end;
x :=x+1;
end;
end;
Grüße
Klaus