mistrovstvi v delphi 6 cz - 88
p rovedeny některé změny jak v jazyce, tak i v knihovně VCL, se kterými je při přenášení k ódu do poslední verze Delphi rozhodně třeba počítat.
z měny v booleovských typech
I mplementace booleovských typů v Delphi 2 (Bool ean, ByteBool, WordBool a LongBool) p ři řazovala hodnotě T rje o rdinální hodnotu 1 a hodnotě F alše o rdinální hodnotu 0 . P ro za jištění lepší kompatibility s r ozhraním Win32 byly implementace typů B yteBool, W ordBool a L ongBool t rochu změněny. Ordinální hodnota p ro T r u e j e n yní -1 ($FF, $FFFF, p řípadně IFFFFFFFF). Všimněte si, že typ B oolean n eprodělal žádné změny. Tyto změny mohou způ sobit problémy ve zdrojovém kódu, ale pouze v případě, kdy je kód závislý na ordinální h odnotě těchto typů. Podívejte se na následující deklaraci:
v ar A: arrayCLongBool] of Integer;
T ento kód je v Delphi 2 a bsolutně bez problémů, deklaruje se pomocí něj pole array[Fal s e . . F r u e ] o f Integer (neboli a r r a y [ 0 . .1] of Integer) pro celkem dva prvky. V Delphi 3 a vyšších může tato deklarace přinést neočekávané výsledky. Protože hodnota T r u e j e d efinována jako hodnota $FFFFFFFF t ypu L o n g B o o l , u praví se deklarace n a a rray [ 0 . . $FFFFFFFF] o f Integer, což je pole 4 b ilionů celých čísel. Tomuto problému se dá za bránit použitím původního typu B o o l e a n v d eklaraci indexu pole. I ronií je, že tato změna byla nutná, protože existence velkého množství ovládacích prvků A ctiveX a kontejnerů ovládacích prvků (například Visual Basic) vyžadovala testování boo leovských hodnot vůči hodnotě - 1 , místo testování vůči nulové nebo nenulové hodnotě.
Tip:
P ro zajištění kompatibility a pro to, a byste zabránili chybám, n epoužívejte nikdy takový
kód:
i f BoolVar = True t h e n . . . M ísto tQho l ogické datové typy testujte takto: i f B oolVar t h e n . . .
Klauzule resourcestring
P okud ve svých aplikacích využíváte řetězce uložené v souborech prostředků, měli bys te kjejich správě použít klauzuli r e s o u r c e s t r i n g . Ačkoliv tím výkon aplikací nezvýšíte, u snadníte si alespoň jejich lokalizaci. Chcete-li psát dobré aplikace s podporou jazykové ho nastavení uživatelského rozhraní (lokalizace) založené na balíčcích knihovny VCL, mě li byste problematiku načítám řetězců ze souborů prostředků znát poměrně dobře (stej ně jako příbuzná témata, která se týkají dynamických knihoven poskytujících příslušné p rostředky).
Z měny v knihovně RTL
Z měny v knihovně RTL, které byly provedeny až po uvedení Delphi 2 , m ohou způsobit p roblémy při přenášení aplikací. Zaprvé se lehce změnil význam globální proměnné H Instance. T ato proměnná obsahuje manipulátor instance aktuální dynamické knihovny
- Pro možnost psaní komentářů se přihlašte nebo zaregistrujte.
