Hier habe ich aber ein Verständnisproblem:
Laut Hilfe muss der Maximalindex für ein statisches Array in einer Struktur um eins größer sein als der tatsächlich nutzbare Maximalindex:
Bitte beachten Sie, dass sich in Strukturen ein statisches Array[] nicht so verhält wie das normale BASIC Array (definiert mittels Dim), um konform zum C/C++ Strukturen Format zu bleiben (was direkte API Strukturen Portierung ermöglicht). Dies bedeutet, dass a[2] ein Array von 0 bis 1 definiert, wogegen Dim a(2) ein Array von 0 bis 2 anlegt.
Das Beispiel aus der Hilfe:
Code: Alles auswählen
Structure Window
*NextWindow.Window ; verweist auf ein anderes Window Objekt
x.w
y.w
Name.s[10] ; 10 Namen verfügbar (von 0 bis 9)
EndStructure
Also: [10] bedeutet verfügbare Indizes von 0 bis 9, [2] bedeutet verfügbare Indizes von 0 bis 1, spinne ich diesen Gedanken weiter: [1] bedeutet verfügbarer Index 0, aber [0] ????? Verfügbarer Index von 0 bis -1 ???? Was bedeutet also [0] ?
Ich vermute mal, dass [0] ebenfalls den Index 0 ermöglicht. Dem widerspricht aber der folgende Code:
Bei einer 19-stelligen Zahl wäre Pos anfangs gleich 18. Ich greife über den Zeiger *char auf die mit dem Zeiger verbundene Struktur char zu, und zwar auf deren Element c, welches ein statisches Array ist, und bei diesem Array auf den Index 18, der wegen der Dimensionierung mit [0] gar nicht gültig sein dürfte - warum kommt hier kein Index-Überlauf-Fehler und warum funktioniert das Ganze trotzdem?
Nächster Punkt: Eigentlich wollte ich schreiben, dass nirgendwo in der Hilfe steht, dass man Apostrophe verwenden kann. Ich habe nun extra mehrfach in der Hilfe gesucht (bei Variablen, Typen und Operatoren sowie bei Allgemeine Syntaxregeln) und bin bei Strings - Asc fündig geworden:
Hinweis: Es ist ebenfalls möglich, den ASCII-Wert eines Zeichens (aber nicht von einer Zeichenkette) zu erhalten, indem man dieses zwischen Apostrophe setzt.
Beispiel:
ASCII = '!' ; 'ASCII' erhält den Wert '33'
Da die Apostrophe die eingeschlossene Zeichen-Konstante in einen Wert umwandeln, wäre ein zusätzlicher Eintrag bei Operatoren sinnvoll. Und da Apostrophe auch eine zulässige Schreibweise sind, sollten sie auch bei Allgemeine Syntaxregeln erwähnt werden.
Zurück zum erstgenannten Punkt.
Manchmal liest man hier im Forum: "Dies und das wird nicht unterstützt. Funktioniert es trotzdem, so kann dies in späteren Versionen nicht mehr der Fall sein". Rein von der Argumentation trifft dieses hier auch zu, wobei mir das Ganze hier jedoch durchdacht und sinnvoll vorkommt, so dass ich vermute, dass es auch in zukünftigen PB-Versionen noch funktionieren wird. Aber es wäre schön, wenn PB-Hilfe aktualisiert werden würde und wenn mir bitte mal jemand die Bedeutung von [0] erklären könnte.