Neue Version
Version 0.5.4.0
Diesmal habe ich die Patch-Version mal wieder etwas erhöht
. Wie vor etwas längerer Zeit angekündigt, habe ich den Delphi 2009+ - Support mal wieder verbessert. Das Äußert sich nun daran, dass es in der Script-Engine drei neue String-Typen gibt: AnsiString, PAnsiChar und PWideChar. Dadurch ist es nun endlich auch in den
Unicode-Versionen von Delphi möglich - AnsiString-Methoden ohne Probleme in die ScriptEngine zu integrieren. In der SEII sind die String-Typen jetzt wie folgt gemapped:
- SEII string -> string der kompilierten RunTime (RunTime wurde mit D7 kompiliert, dann AnsiString, mit D2010 UnicodeString)
- SEII PChar -> PChar der kompilierten RunTime (RunTime wurde mit D7 kompiliert, dann PAnsiChar, mit D2010 PWideChar)
- SEII AnsiString -> AnsiString der kompilierten RunTime
- SEII WideString -> WideString der kompilierten RunTime
- SEII PAnsiChar -> PAnsiChar der kompilierten RunTime
- SEII PWideChar -> PWideChar der kompilierten RunTime
Kompilierte RunTime heißt in diesem Kontext: das Delphi-Programm, welches das kompilierte Programm der ScriptEngine ausführt.
ChangeLog:
- Neuerungen
- Neuer Typ: "System.AnsiString"
- Neuer Typ: "System.PAnsiChar"
- Neuer Typ: "System.PWideChar"
- Neue Klasse: "System.AnsiStrings"
- Klasse "System.StringEncoding" - Erweitert, so dass auch AnsiString verfügbar ist
- Neue Helper-Klasse: "System.TAnsiStringHelper"
- Neue Funktion in "System.Strings": "System.Strings.DefaultEncoding": liefert das interne Encoding der RunTime für den Typ "System.String" und "System.PChar".
- Delphi XE als Compiler-Define eingeführt -> da sich intern zwischen D2010 und D-XE nicht so viel geändert hat, sollte alles funktionieren (ist jedoch nicht getestet)
- Methoden-Pointer können nun auf andere EventTypen gecastet werden -> dies führt zu einer weniger strengen Parameterprüfung.
- Änderungen
- Properties mit Parametern können nun auch direkt hinter aufgerufen werden. Bisher musste man auf Grund eines Compiler-Bugs den Rückgabewert in eine Variable zwischenspeichern - das geht jetzt auch direkt
Vorher:
Delphi-Quellcode:
var t : TIrgendwas;
tmp : TIrgendwas;
begin
tmp := t.Items[0];
tmp := t.Items[1];
tmp.Items[2] := nil;
end;
Nun auch so möglich:
Delphi-Quellcode:
var t: TIrgendwas;
begin
t.Items[0].Items[1].Items[2] := nil;
end;
- Bug-Fixes
- Ein paar Bugs in "System.Console" behoben: das interne String-Encoding hat bei D2009+ bei manchen Methoden nicht funktioniert
- Ein paar Bugs im internen String-Handling der RunTime behoben
Download-Link ist im ersten Post.
Grüße