Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.779 Beiträge
 
Delphi 10.4 Sydney
 
#1

Re: Unterprogramm mit Stringgrid

  Alt 28. Aug 2006, 19:59
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
Klaus
  Mit Zitat antworten Zitat