Je nach dem wo der Code steht, muss man noch "Application.UpdateFormatSettings := false;" setzen, da sonst bei "WM_WININICHANGE" oder "RM_TaskbarCreated" die FormatSettings wieder überschrieben werden (hier im Forum in einem Thread gelesen). Nur mal so als Info.
Das hast du aber nur gelesen, nicht probiert, oder? Das gilt nämlich nur für die globale Instanz
FormatSettings, aber nicht für deine selbst erzeugte
fs.
Ja, nur gelesen
Dachte es wäre wichtig, deshalb wollt ich das hier dazuschreiben.
Aber Danke für die Info.
Ich habe jetzt folgendes, da man ja nicht aufrunden soll.
Code:
fs := TFormatSettings.Create;
fs.DecimalSeparator := ',';
_size := 23.203;
result := floattostr(_size);
kp := Pos(',',result);
if kp > 0 then result := copy(result,0,kp+2);
if result[length(result)]='0' then result := copy(result,0,length(result)-1);
result := result + ' '+s;
Ich schneide jetzt einfach ab auf 2 Stellen nach dem Komma und sollte dann zufällig noch eine "0" am Ende sein (beim ersten Copy z.B. aus 232,20343 = 232,20) wird diese "0" dann auch mit dem zweiten Copy entfernt. Beim ersten Copy "kp+2" gibt's keine Probleme wenn der Wert z.B. "232,2" beträgt. Da nimmt er wohl nur +1 weil es mehr nicht gibt. Am Ende füge ich dann noch die Bezeichnung ein "KB, KiB etc."
Edit:
Muss doch den 3 Zeiler nehmem, sprich 2x auf 0 prüfen. Der Wert kann ja z.B. auch "232,0034383" sein
Also doch so:
Code:
if Result[Length(Result)]='0' then result := Copy(Result,0,Length(Result)-1);
if Result[Length(Result)]='0' then result := Copy(Result,0,Length(Result)-1);
if Result[Length(Result)]=',' then result := Copy(Result,0,Length(Result)-1);
Michael