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

Ještě nehodnoceno. Buďte první :-)
C: SELECT name, thumb, pages FROM 0_books WHERE nid = %d or nid = %d - SQL insert statement is invalid
C: SELECT name FROM 0_books WHERE thumb=1 and nid<>%d ORDER BY viewed DESC LIMIT 66 - SQL insert statement is invalid