Auch wenn es ein unglücklicher Weg ist (siehe vorherige Kommentare zu Unterschied Datenhaltung / Datenanzeige)
Was muss aus 100,00 € entfernt werden, um eine "berechenbare" Zahl daraus zu machen?
Delphi-Quellcode:
function MachStringZuZahl(AZahl : String) : Float;
begin
AZahl := AnsiReplaceText(AZahl,'€',''); // Eurozeichen wegmachen.
AZahl := AnsiReplaceText(AZahl,'.',''); // Tausenderpunkt entfernen.
AZahl := AnsiReplaceText(AZahl,',','.'); // Dezimalkomma in Dezimalpunkt ändern.
AZahl := Trim(AZahl); // Führende und folgende Leerzeichen entfernen.
Result := StrToFloat(AZahl); // Hoffen wir, dass die Konvertierung in eine Zahl nun klappt.
end;
Delphi-Quellcode:
function SummiereSpalte(iSpalte : Integer; sg : TStringGrid) : String;
var
fSumme : Float;
i : Integer;
begin
fSumme := 0;
for i := 1 to sg.Rows - 1 do begin
fSumme := fSumme + MachStringZuZahl(sg.Cells[iSpalte,i]);
end;
Result := CurrToStrF(fSumme,ffCurrency,2);
end;
Delphi-Quellcode:
// In irgendeinen ButtonClick oder sonstwo:
begin
Label1.Caption := SummiereSpalte(1, StringGrid);
end;
Und nein, das ist weder schön noch sinnvoll, könnte aber trotzdem so in der Art funktionieren. Ist halt nur hingedaddelt und eher als Beispiel für "So macht man das besser nicht!" gedacht