Moin moin,
Zitat von
Luckie:
Was passiert denn da im Debugger?
Delphi rechnet standardmäßig mit 32Bit Werten. Da die Funktion
GetDlgItemInt einen 32 Bit Wert als
Result liefert und auch alle anderen Multiplikatoren Delphi zu nichts anderem veranlassen,
wird da auch weiter nichts berücksichtigt.
Du kannst es austesten, in dem du direkt den maximalen LongWord Wert anstelle der Funktion GetDlgItemInt
eingibst. Also:
SizeOfParts := 1024*1024*4294967295;
Jetzt "bemerkt" der Compiler den Überlauf und meckert das auch an.
Folgender Code weißt Delphi an, mit 64 Bit zu rechen,
SizeOfParts := Int64(1024)*1024*4294967295;
und voilà es lässt sich kompilieren + das Ergebnis stimmt.
Hier ist jetzt genau ein Wert mit bei, der vom Typ Int64 ist. Somit richtet der Compiler alles auf
64 Bit aus.
Es müsste also theoretisch ausreichen, einen Faktor in Int64 zu casten.