Hier die prosaische Fassung:
Delphi-Quellcode:
function CreateScoreList(sg: TStringGrid; iGroup, iValue: Integer): TStrings;
// sg.Columns[iValue] wird summiert und nach sg.Columns[iGroup] gruppiert
// Zugriff auf die Summen-Werte: iScore := StrToInt(Result.Values[sPlayer])
var
sPlayer: String;
index, iScore, iRow: Integer;
begin
// Es wird eine neu erzeugte TStringList zurückgegeben
Result := TStringList.Create;
with sg do
// Spaltenüberschriften von der Summenbildung ausschließen
for iRow := FixedRows to Pred(RowCount) do
begin
// nach was soll gruppiert werden ?
sPlayer := Cells[iGroup, iRow];
// gibt es für diesen String schon einen Eintrag ?
index := Result.IndexOfName(sPlayer);
// Ist in der aktuellen Zelle ein gültiger Wert eingetragen ?
if TryStrToInt(Cells[iValue, iRow], iScore) then
// Gibt es für den Gruppenbegriff sPlayer schon einen Eintrag
if index < 0
// nein, Wert einfach einsetzen
then Result.Values[sPlayer] := IntToStr(iScore)
// ja, auf vorhandenen Wert addieren
else Result.Values[sPlayer] := IntToStr(StrToInt(Result.Values[sPlayer]) + iScore);
end;
end;
Ich hoffe du kommst zurecht?
Grüße vom marabu