Roland Goretzki schrieb:
Hallo, liebe Leute,
1. Ab welcher Größe muß man eine Zahl als LongInt deklarieren?
Wenn sie größer als MaxInt ist (oder kleiner als -MaxInt). Auf den meisten von GPC unterstützten Systemen ist das 2^31-1, also gut 2 Milliarden.
2. Wenn ich den Wert von GetMicroSecondTime in einer String-Variablen speichere, ist es dann richtig und sauber, diese String-Variable mit einer Länge von 16 zu deklarieren, weil GetMicroSecondTime für die nächsten über 270 Jahre 16-stellig bleibt? 3. Wie wichtig ist es üerhaupt, die Länge einer String-Variablen möglichst genau anzugeben?
Sofern du keine Riesen-Arrays oder -Dateien von diesen Strings anlegst, praktisch gar nicht wichtig. Ein paar Bytes mehr RAM oder Festplatte lohnen das Nachdenken nicht. Ich verwende für die meisten Zwecke (wenn es eben nicht um große Arrays u.ä. geht) einfach "TString" (2048).
Natürlich ist das für die meisten Zwecke übertrieben, und gerade in diesem Fall dürfte 16 wohl reichen, aber in vielen anderen Fällen sind Leute mit solchen Annahmen schon reingefallen. Neben den berüchtigten "640k should be enough for everybody" hat z.B. BP in der Dos-Unit fein säuberlich deklariert:
ComStr = String [127]; { Command line string } PathStr = String [79]; { File pathname string } DirStr = String [67]; { Drive and directory string } NameStr = String [8]; { File name string } ExtStr = String [4]; { File extension string }
Unnötig zu erwähnen, dass Programme, die diese Typen benutzten, mit "langen Dateinamen" Probleme bekamen, als Windows sie endlich erlaubte (was zu Dos-Zeiten anscheinend unvorstellbar war -- wer hatte damals auch schon was von anderen Betriebssystemen gehört, die das vielleicht schon seit Jahrzehnten konnten, aber ich schweife ab ... ;-)
In dem speziellen Fall von 2. zumindestens denke ich, daß eine mögliche Fehlerquelle auszuschlossen wird, wenn ich z.B. mit ReadStr diese Variable wieder zu LongInt machen möchte.
Aber halt nur eine. Der String kann immer noch nicht-Ziffern enthalten, also besteht die Möglichkeit von Laufzeitfehlern immer noch. (Natürlich könnte man das vorher noch testen, aber dann ist es wiederum einfacher, "Val" oder so zu verwenden, das einem gleich sagt, ob die Umwandlung erfolgreich war.)
Frank