GeoGet

Complete geocaching solutions

User Tools

Site Tools


user:skripty:upgrade280

Upgrade skriptů na verzi Geogetu 2.8.0

V Geogetu 2.8.0 došlo k zásadním interním technologickým změnám, díky kterým nebylo možné zachovat úplnou kompatibilitu se staršími skripty. I přes veškerou snahu se několik věcí musí ve skriptech změnit:

THtmlView

Je použita novější verze knihovny, kde jsou různé změny. Nejčastěji narazíte na to, že všechny funkce pro nahrávání obsahu mají přidaný parametr DocType. Takže například místo:

html.LoadFromString(s, '');

musíte popužít:

html.LoadFromString(s, '', htmltype);

UnicodeString

Dříve platilo, že datový typ String byl totožný s typem AnsiString. Nyní je String totožný s UnicodeString!

Při přiřazování obsahu z jednoho typu stringu do druhého dochází k implicitním konverzím dat, takže si většinou změny ani nevšimnete. Nicméně použití správného datového typu je fatální při operacích, kde se pracuje přímo s obsahem paměti, kde mají být data stringu. Tedy například při načítání a zápisu dat do TStream, nebo při volání externích DLL.

Zpravidla stačí na správných místech místo String použít AnsiString, a úprava bude i zpětně kompatibilní.

Ikony

Ikony skriptů, ale třeba i ikony generované pro vizualizační skripty, mohou nově obsahovat alfakanál s poloprůhledností. Ten se použije automaticky u obrázků s 32-bitovými pixely. U takových se nepoužije průhlednost podle prvního pixelu, jako to bylo doposud!

Pozor, TBitmap ve výchozím stavu používá právě 32-bitový formát!

Regulární výrazy

Změněna byla i knihovna na vykonávání regulárních výrazů. Nyní je používána knihovna PCRE. Díky tomu přestaly fungovat nestandardní modifikátory staré knihovny (g, r), a je třeba ty regulární výrazy přepsat. Viz. http://www.regular-expressions.info/modifiers.html. (Původní modifikátory jsou popsány zde.)

Modifikátor g je možné vypustit. Pouze v případě, že byl použit jako -g, je třeba regulární výraz přepsat tak, aby nebyl “hladový”.

TStringList

Sám o sobě je vnitřně unicode. Při načítání dat pomocí LoadFromFile nebo LoadFromStream jsou data konvertována z ANSI do Unicode. Leda že by na začátku dat byl BOM, pak se konvertuje z kódování podle nalezeného BOMu. (tedy UTF-8 nebo UTF-16) Tato konverze může být nechtěná!

Lze to obejít tak, že si data načtete nejprve do AnsiStringu, a ten pak přiřadíte to TStringList.text property. LoadFromFile() a LoadFromStream() to interně dělají stejně, akorát tam navíc udělají tu konverzi.

user/skripty/upgrade280.txt · Last modified: 2014/02/09 00:00 (external edit)