Forum: Object-Pascal / Delphi-Language
by himitsu,
26. Mai 2021
Ist auch Philosophisch/Ideologisch/Mutmaßlich ... man könnte ja davon ausgehen, dass es ein Eingabefehler ist. :angle:
Im Gegenzug gibt es bei Cardinal aber auch 2 Milliarden Werte, die es technisch niemals geben kann. ( >2 GB )
Forum: Object-Pascal / Delphi-Language
by himitsu,
26. Mai 2021
Kann man aber auch in der Release aktivieren, wenn man möchte.
Du darfst in deiner Funktion den Integer gern nach Cardinal casten und mit Length vergleichen (Length auch nach Integer gecastet, damit der Compiler nichts für den Vergleich unnötig nach Int64 erweitert)
-1 ähhhh $FFFFFFFF ist ja größer als Length und somit raucht die Längenprüfung auch da ab, ohne daß man explizit <0 prüfen...
Forum: Object-Pascal / Delphi-Language
by himitsu,
26. Mai 2021
Arrays (Strings sind auch Arrays) können eh maximal 2 GB-1 groß werden, auch in 64 Bit-Compilern,
somit ist es vollkommen egal ob Integer oder Cardinal.
Integer ist es, weil es schon immer so war.
Und ja, bei High ist das Integer sogar notwendig, für Arrays die bei 0 beginnen, es -1 sein kann. (gut, man könnte die -1 auch nach Cardinal casten, wie z.B. beim INVALID_HANDLE_VALUE)
Bis vor...