Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: string to Float, für lesen aus einer Datei

  Alt 17. Mär 2018, 14:27
Rein von der Lösungsmöglichkeit her würde ich es auch so machen. Statt StringReplace würde ich allerdings direkt FloatStr[DelimPos] := '.' setzen, also den Parameter als var übergeben. So sparst du dir das Rumkopieren im Speicher. Mehrere Vorkommen des Dezimalseparators innerhalb eines einzelnen Wertes sind ja eh nicht zulässig, weshalb StringReplace mit rfReplaceAll auch Overkill sein sollte.

Delphi-Quellcode:
function ChangeLocalFloatStr(var FloatStr: String): String;
var
  I: Integer;
begin
  I := Pos(',', FloatStr);
  if (I > 0) then
  begin
    FloatStr[I] := TFormatSettings.Invariant.DecimalSeparator;
  end;
end;
Die ganzen zusätzlichen Variablen würde ich mir auch sparen. Achso, dann musst du den StrToFloat Aufruf natürlich abändern in StrToFloat(FloatStr, TFormatSettings.Invariant) .

Alternativ alles ganz kompakt (dann sparst du dir beim Aufrufen die zusätzliche Variable):
Delphi-Quellcode:
function LocalStrToFloat(FloatStr: String): Double;
var
  I: Integer;
begin
  I := Pos(',', FloatStr);
  if (I > 0) then
  begin
    FloatStr[I] := TFormatSettings.Invariant.DecimalSeparator;
  end;
  Result := StrToFloat(FloatStr, TFormatSettings.Invariant);
end;
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (17. Mär 2018 um 14:40 Uhr)
  Mit Zitat antworten Zitat