AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ordnergröße ermitteln

Ein Thema von DieDolly · begonnen am 16. Dez 2023 · letzter Beitrag vom 17. Dez 2023
Antwort Antwort
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.505 Beiträge
 
Delphi 12 Athens
 
#1

AW: Ordnergröße ermitteln

  Alt 17. Dez 2023, 16:57
Nja, das ist ein 32-Bit UInt und wenn man da alles um 32 Bit nach links verschiebt, dann rutscht alles raus und ist weg.
Der Compiler kommt auch nicht immer auf die Idee sowas von sich aus einfach so zu vergrößern (normal maximal bis zur Größe eines Registers)

So := Int64(TempSize.nFileSizeHigh) shl 32 or TempSize.nFileSizeLow; wäre es demnach schon sicherer,

aber wie schon genannt ... Warum nicht einfach F.Size, anstatt F.FindData.nFileSize* ?



PS: Da wir hier Signed rechnen, ist es binär sicherer, als arithmetisch.

OK, man könnte auch := Int64(UInt64(TempSize.nFileSizeHigh) shl 32) + TempSize.nFileSizeLow; , aber warum.
z.B. gäbe es Probleme und die Größe wäre z.B. -1, dann würde es nach Umrechnung mit einer signed Addition einen anderen Wert ergeben.

Alternativ einfach nur casten und garnicht rechnen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (17. Dez 2023 um 17:04 Uhr)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: Ordnergröße ermitteln

  Alt 17. Dez 2023, 18:29
Habe das jetzt abgeändert. TempSize ist jetzt ganz weg.
Delphi-Quellcode:
      if (F.Name <> '.') and (F.Name <> '..') then
       begin
        if (F.Attr and faDirectory) = faDirectory then
         Inc(Result, RecurseFolder(Path + F.Name + '\'))
        else
         Inc(Result, F.Size); // <=
       end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz