Hallo Leute,
vor vier Tage habe ich so ganz nebenbei eine Bemerkung zur vorliegenden Sache gemacht und heute erst wieder reinschauen können.
Erst hab ich schallend gelacht und jetzt traue ich mich kaum eure mathematischen Ausführungen zu stören.
Trotzdem kann ich es mir nicht verkneifen noch einmal zum eigentlichen Thema zu sprechen (auch auf die Gefahr hin, dass an dieser Stelle keiner mehr so etwas erwartet).
Ob ShortString oder nicht(erweiterter Syntax oder bla bla bla), solange ich folgendes definiere:
Delphi-Quellcode:
var MyString : String;
begin
MyString := 'oki';
steht an der Stelle MyString[0] definitiv nicht 'o' !!!!!!
Delphi definiert Strings eben nun mal nach alten Pascalkonventionen.
Es ist auch föllig wurscht was 'unten' passiert, für jeden der da nicht so fitt ist gilt diese Regel. Wer sich nicht so gut mit Strings auskennt sollte auch nicht nach alter Verfahrensweise auf die Stelle Null für die Länge zugreifen (mach ich auch nicht / nicht mal bei ShortString).
Nun die Arrays!
Arrays sind nun mal Arrays und keine Strings und werden auch so behandelt!
Ein Array kann immer für den definierten Speicherbereich mit Werten gefüllt werden. Ohne Abstriche!
Wenn man typbezogen definiert muß mann das natürlich beachten. Umgeht mann das, muß natürlich wie beim Typecasting auf die Länge des Typs achten.
Also, im Speicher sieht mindestens folgendes gleich aus:
[delphi]
Array[0..255] of Char;
Array[1..256] of Char;
Array[0..255] of Byte;
[delphi]