Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: Größter Wert aus StringGrid

  Alt 14. Feb 2018, 14:35
Eine einfache Funktion sollte keine Abhängigkeiten zu bestimmten globalen Formvoriablen (Form8) haben.
Benötigte Informationen sollten als Parameter übergeben werden.
Ergebnisse werden zurückgegeben, die Ausgabe gehört nicht in die Funktion zum Ermitteln des Wertes.
-> wiederverwendbar
-> testbar

Eingabewerte sind hier das Grid und welcher Bereich zu durchsuchen ist.
Rückgabewert ist der gefundene Maximalwert.
Delphi-Quellcode:
function GetMaxFromStringGrid(AGrid: TStringGrid; ARange: TRect): Integer;
var
  col, row, value: Integer;
begin
  // Ergebnis initialisieren
  Result := 0;
  for col := ARange.Left to ARange.Right do
  begin
    for row := ARange.Top to ARange.Bottom do
    begin
      // ungültigen Inhalte als "0" interpretieren und damit ignorieren
      value := StrToIntDef(AGrid.Cells[col, row], 0)
      // Wert mit bisherigem Ergebnis vergleichen, Ergebnis anpassen
      if Result < value then
        Result := value;
    end;
  end;
end;

procedure abcdef; // Du musst nachsehen, wie deine procedure heißt
var
  MaxWert : Integer;
begin
  // ...
  If (Form3.Checkbox2.Checked=True) Then Form8.StringGrid1.Cells[1,4]:= '3';
  If (Form3.Checkbox2.Checked=True) Then Form8.StringGrid1.Cells[2,4]:= '2';


  // Beginn Eintragen neuer Versuch
  
  // MaxWert für den Bereich "Spalte 1, Zeile 0" bis "Spalte 1, Zeile 6"
  MaxWert := GetMaxFromStringGrid(Form8.StringGrid1, Rect(1, 0, 1, 6));
  Form8.Edit6.Text:= IntToStr(MaxWert);

  //Füllen von stringgrid 1 am anfang

  If (Form8.RadioButton1.Checked= True) Then Form8.StringGrid2.Hide;
  //...
end;
  Mit Zitat antworten Zitat