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;