-
Forum: Object-Pascal / Delphi-Language
by MicMic,
29. Jul 2018
Ja, 3 Zahlen... das fällt jetzt auf wenn man darauf schaut. Windows zeigt dann auch "1,00 MB" an.
Nur bei den Bytes sind es mal weniger als 3 Zahlen. Naja, 92 Bytes als 92,0 Bytes anzuzeigen wäre dann etwas peinlich :)
Aber vielleicht finde ich ja noch eine 3,25 Bytes Datei *lach
Michael
-
Forum: Object-Pascal / Delphi-Language
by MicMic,
29. Jul 2018
Also bei mir rundet Windows ja nach Lust und Laune.
Ich schrieb ja oben wusa.exe und wshirda.dll (mal mit ,5 mal ohne) im selben Ansichtmodus.
(Fette Schrift = Ansicht von Windows in den Eigenschaften)
wshirda.dll: Größe = 14848 / 1024 = 14,5 (14,5) Diff. 0
wusa.exe: Größe = 308736 / 1024 = 301,5 (301) Diff. 0,5
Also Windows10 rundet (bei der gleichen Ansicht) bei der wshirda.dll...
-
Forum: Object-Pascal / Delphi-Language
by MicMic,
28. Jul 2018
Also SetRoundMode behalte ich mal im Hinterkopf. Danke für die Info.
Find jetzt die Zeile "result := Format('%s %s', );" passt ganz gut.
KodeZwerg und Uwe Raabe... ich hoffe ihr streitet nicht rum :)
Aber Windows macht wirklich sein eigenes Ding. Abgesehen von der Bezeichnung der Dateigrößen...
308736 Bytes / 1024 = 301,5 (Windows gibt 301 aus) <- Datei System32\wusa.exe
14848 Bytes /...
-
Forum: Object-Pascal / Delphi-Language
by MicMic,
28. Jul 2018
Jo, ist natürlich besser als mein Pos/Copy Zeugs :) Ich kenne natürlich Floor, wusste aber nicht wie ich es dort in der Zeile einsetze. Das nehme ich jetzt. Danke
Aber wegen diesen FormatSettings…
Wenn ich immer:
fs := TFormatSettings.Create;
fs.DecimalSeparator := ','; // oder '.' oder '/' (wie ich halt will)
nehme, bin ich auf der sicheren Seite mit meinem Komma oder Punkt. Oder?
-
Forum: Object-Pascal / Delphi-Language
by MicMic,
28. Jul 2018
Das Thema (bei mir *g) ist ja, da ich nicht weis wie ich mit Format/FormatFloat abrunden kann. Da wird ja aufgerundet und wie ich das jetzt verstanden habe, soll man bei einer Anzeige von Dateigrößen nicht aufrunden. Windows rundet ab, bei dem einem Beispielwert (weiter oben) 1,09. Format/FormatFloat macht 1,1 und der bekannte TotalCommander macht ne "1" (mit der Bezeichnung "M") raus. Ich mach...
-
Forum: Object-Pascal / Delphi-Language
by MicMic,
28. Jul 2018
Da der Wert auch 0 sein kann... Update:
Ohne "if Result <> '0' Then" würde es nämlich dann bei den Wert "0" ein Fehler verursachen.
fs := TFormatSettings.Create;
fs.DecimalSeparator := ',';
result := floattostr(_size);
kp := Pos(',',result);
if kp > 0 then result := copy(result,0,kp+2);
if Result <> '0' Then
Begin
-
Forum: Object-Pascal / Delphi-Language
by MicMic,
28. Jul 2018
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.
fs := TFormatSettings.Create;
fs.DecimalSeparator := ',';
_size := 23.203;
result := floattostr(_size);
kp := Pos(',',result);
if kp > 0 then result := copy(result,0,kp+2);
-
Forum: Object-Pascal / Delphi-Language
by MicMic,
27. Jul 2018
Ich hab jetzt:
fs := TFormatSettings.Create;
fs.DecimalSeparator := '.';
result := Format('%s %s', );
.free brauch ich ja hier nicht (verwirrt mich immer). So habe ich den "Punkt" und wenn ich ein Komma haben möchte mach ich dann natürlich "fs.DecimalSeparator := ',';".
Je nach dem wo der Code steht, muss man noch "Application.UpdateFormatSettings := false;" setzen, da sonst bei...
-
Forum: Object-Pascal / Delphi-Language
by MicMic,
27. Jul 2018
Super. Danke. Nach '%s %s' musste ich noch ein Komma einfügen. Nun habe ich versucht den Punkt wieder als Komma zu ändern. Ich will beides nutzen. Ein "0,##" geht hier nicht :) Habe gelesen, dass man bei den TFormatSettings etwas machen muss, sprich dieses "DecimalSeparator" dafür zuständig ist. Dieses "TFormatSettings.Invariant" soll Standard sein. Muss ich dann ein "TFormatSettings.Create" usw....
-
Forum: Object-Pascal / Delphi-Language
by MicMic,
27. Jul 2018
Wer rundet jetzt falsch? Windows oder die Funktion?
Eine Datei mit 1148928 Bytes
1148928 / 1024 / 1024 = 1,0957031
Also eigentlich aufrunden. Das macht die Funktion. Also sie gibt 1,1 MiB zurück.
Windows 10 spuckt aber 1.09 raus (mit der Angabe MB. So wie ich das verstanden habe sollte ja hier dann "MiB" stehen)
-
Forum: Object-Pascal / Delphi-Language
by MicMic,
27. Jul 2018
Danke für deine Hilfe aber ".2" wegzulassen, geht nicht. Ich glaub ".2" ist sowieso Standard, wenn man es nicht angibt.
Ich habe die Zeile mit dem Format eben mal so geändert/erweitert:
Result := Format('%.2f', );
if Result='0' then result := Copy(Result,0,Length(Result)-1);
if Result='0' then result := Copy(Result,0,Length(Result)-1);
if Result=',' then result :=...
-
Forum: Object-Pascal / Delphi-Language
by MicMic,
27. Jul 2018
Hallo, habe hier (Beitrag finde ich irgendwie nicht mehr) diese Funktion entdeckt.
function FormatFileSize(const AFileSize: Int64; Use1024: Boolean = True): String;
const
Sizes1024: array of string = ('Bytes', 'KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB');
Sizes1000: array of string = ('Bytes', 'KB','MB','GB','TB','PB','EB','ZB','YB');
var
_size: Extended;
_Unit: integer;
...