mse hat geschrieben:Was fehlt sind lediglich Unicode ResourceStrings, deren Implementierung ich vom FPC Team seit Jahren erfolglos erbettle.
Was für mich fehlt, ist eine genaue Definition der nicht-expliziten Codierungen (Code-Kennung 0 <Momentan = Default> und $FFFF < = keine Kodierung>), wenn diese zur Definition eines Types (z.B. "RawByteString" = $FFFF) oder einer Variable verwendet werden.
Aus Geschwindigkeitsgründen ist es (anscheinend) sinnvoll, nicht permanent mit dynamisch codierten Typen zu arbeiten, sondern, wenn immer möglich, dem Compiler die Möglichkeit zu geben, schon beim Übersetzen festzulegen, ob und welche Umcodierung benötigt wird. Dafür gibt es die Typen mit festen Codierungen.
Meiner Ansicht nach sollte es aber möglich sein, Unterprogramme zu schreiben, die Strings z.B. "Durchreichen" können, ohne sie umzucodieren. Dazu ist der Formal-Parameter mit $FFFF (RawByteString) angegeben.
Die als "RawByteString" definierte Variable enthält dann dynamisch eine explizit angegebene Codierung. Besser wäre ein Type "VarCodeString", während drei verschiedene "RAW" Typen existieren sollten, für die explizit keine Codierung in sichtbare Zeichen angegeben wird aber die Größer der Elemente festliegt. Die Größe der Elemente (8, 16 oder 32 Bit) ist bei "VarCode" natürlich auch dynamisch.
Eigentlich sollte Copy etc- (zumindest scheinbar aus Programmierer-Sicht) solche "dynamischen" Parameter haben, durch Compiler Magic kann ja eine passende Variante verwendet werden, wenn der Type der Aktual-Parameter fest codiert ist. "Pos", "Copy" etc. sollten natürlich in Varianten verfügbar sein die in Codes oder in Zeichen arbeiten. Für einfache Portierung sollte es möglich sein festzulegen, dass diese Keywords in sichtbaren Zeichen arbeiten, für performance-optimierte Portierung vielleicht auch das Gegenteil.
Dabei sind aber diverse weitere Punkte unklar.
- Behandlung der Elementgröße
- Was ist mit der Rückgabe als Result oder als Var- oder Out-Parameter ?
- Was passiert, wenn ein RawByteString mit einem explizt codierten Type zusammentrifft (Zuordnung, "+", Vergleich, ...). (Automatische Umcodierung falls möglich) ?
- Wie geht man mit Strings um, die tatsächlich als uncodierte Bytes, Worte oder Doppelworte (also wirklich "RAW") behandelt werden sollen ? (Fehlermeldung, wenn sie mit codierten Strings zusammentreffen.)
- ...
-Michael