AW: Power funktioniert nicht wie gedacht
Zitat:
|
AW: Power funktioniert nicht wie gedacht
Vielleicht ist es so klarer.
Ich habe einen numerischen Wert und die Zusatzinformation, ob das B, KiB, MiB, GiB oder TiB sein sollen. Rufe ich meine (umbenannte) Funktion nun so auf, erhalte ich 46080 Bytes.
Delphi-Quellcode:
Ich speichere also irgendwo auf der Festplatte 45 sowie die Zusatzinfo (Speichergröße) ab statt große Zahlen.
type
TFileSizes = (_B, _KiB, _MiB, _GiB, _TiB, _PiB); Ausgabe := ConvertToBytes(45, _KiB); Zitat:
Zitat:
Da im im weiteren Verlauf aber zwingend Int64 brauche, kann ich hier keine Fließkommazahlen nutzen. Zitat:
Zitat:
|
AW: Power funktioniert nicht wie gedacht
Zitat:
Zitat:
Vor 10 Jahren waren TB für Privatanwender undenkbar, so Dinge ändern sich. Außerdem: Das ist schlechter Stil. Das macht man einfach nicht. |
AW: Power funktioniert nicht wie gedacht
Zitat:
Zitat:
Vor 10 Jahren waren TB für Privatanwender undenkbar, so Dinge ändern sich. Außerdem: Das ist schlechter Stil. Das macht man einfach nicht.[/QUOTE] Wie verhindere ich sonst das angesprochene Problem? |
AW: Power funktioniert nicht wie gedacht
Warum so kompliziert? Wenn man die UINT64-Beschränkung akzeptiert, kann man zB dies verwenden
Delphi-Quellcode:
Wenn man R/O-Checks eingeschaltet hat, erhält man eine Überschreitung frei Haus, ansonsten ist noch eine Zeile mehr notwendig. Man kann auch Multiplier beschränken, aber das nützt nicht viel, weil ja Bytes*1024 schon ein Overflow werfen könnte.
function CalculateSize(Bytes, Multiplier: UInt64): UInt64;
var i: integer; begin Result := Bytes; for i:=1 to Multiplier do Result := Result*1024; end; |
AW: Power funktioniert nicht wie gedacht
Zitat:
Auch beim 128 Bit Dateisystem ZFS ist die maximale Dateigröße "nur" 16 EiB (weil das genau 2^64 Bytes sind, nehme ich an). Und damit werden wir noch sehr sehr lange auskommen ;) |
AW: Power funktioniert nicht wie gedacht
Zitat:
Zitat:
- Niemand weiß, welche Dateigrößen in 10 Jahren unterstützt(!) werden. - Code, den du jetzt schreibst, wird in 10 Jahren noch im Einsatz sein. Also würde ich abraten, so zu coden. |
AW: Power funktioniert nicht wie gedacht
Zitat:
Da Daten auch immer mehr in der Cloud gespeichert werden, können die Dateien auch immer größer werden. Kannst du abschätzen, wo die Grenze für Dateigrößen in Zukunft sein wird? Und gehe dabei nicht von Festplatten aus. In Zukunft wird es andere Speichermedien geben, die sicher ein vielfaches an Kapazität haben werden. Du kannst natürlich von deiner jetzigen Sicht ausgehend, dein Programm erstellen. Aber du solltest den Fall, dass du ein Ergebnis bekommst, dass deine Funktion nicht erwartet, richtig behandeln. Es handelt sich in dem Fall wohl um eine Ausnahme-Situation, sprich Exception. Aus deiner Sicht sollte diese ja niemals auftreten können, also schadet es auch nicht, wenn du das korrekt behandelst und nicht einfach die Werte, die dir nicht passen änderst. |
AW: Power funktioniert nicht wie gedacht
Danke für eure Antworten bisher.
Ich habe eine Funktion die eine Datei in Häppchen zerteilt, deren Größe ich bestimmen kann. Dafür ist die ganze Umrechnung die zuvor erwähnt wurde da. Meine Teilfunktion nimmt UInt64 entgegen. Wäre es korrekter wenn ich meine ConvertToBytes so abändere, dass Result maximal High(UInt64) betragen kann? |
AW: Power funktioniert nicht wie gedacht
Nachdem in Windows eine Datei maximal Int64 gross sein kann sollten double unnötig sein.
(s.a. https://docs.microsoft.com/en-us/win...eattributesexa) Zitat:
Bei so etwas wo es nur um Integer geht etwas mit Fließkomma zu verwenden ist einfach nur :roll::shock::cry: (Vor allem wenn man weiß, dass da intern mit Exponentialfunktion und Logarithmus gearbeitet wird.) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz