Re: OS windows: program komolí vlastní data, co s tím ?

Pavel Hudeček edizon na seznam.cz
Pátek Listopad 26 17:20:23 CET 2010


Typická příčina vzniku podobných problémů vypadá např. ve VB 6.0 takto:

Pro konverzi mezi stringem a číslem je tu několik funkcí:

1. Nelokalizované STR (číslo -> string) a VAL (string -> číslo). Vždy tečka, žádné oddělovače. Pochází již z dávných dob původního Basicu.

2. Lokalizované CStr, Format (číslo -> string) a CDbl, CInt, CLong, ... (string -> číslo). Nové, lokalizované funkce, navíc s definovanými typy.

Pro trvalého uživatele anglických Win se 1 a 2 liší jen jako univerzální/typově definované. Další rozdíl je, že Str vrací před číslem buď mínus, nebo mezeru, zatímco Format bez uvedeného formátovacího řetězce mezeru nedělá. Podobné věci jsou samozřejmě i v dalších programovacích prostředích/jazycích.

Výsledkem jsou rostodivné problémy diskutovaného typu. Extrémním příkladem budiž, že když např. v Mentor Graphics Design View vlezete do jistého menu v nastavení, kde je zobrazen oddělovač tisíců, musíte jej opustit tlačítkem Cancel, protože se programu nelíbí mezera, kterou si vzal z národního nastavení. Obsah této záložky lze změnit jedině tak, že nejprve v národním nastavení Windows dáte místo mezery něco jiného, změníte to nastavení v Mentoru a vrátíte národní nastavení:-) (s tímto problémem jsem se potýkal asi před 5 lety, takže neručím za přesný popis)

PH

> Od: Pavel Troller <patrol na sinus.cz>
>   chyba je, řekl bych, tak nějak "mezi".
>   1) V datovém souboru programu, zvláště když je to binární blob, by nemělo
> být zohledněno národní nastavení. Neznám konvence volání služeb OS windows,
> takže nevím, zda lze případně vypnout při volání I/O funkcí, pokud ano, je
> tedy chybou autora, že tak neučinil, případně učinil jen částečně
> (při výstupu).
>   2) Pokud by vypnout konverze dle národního nastavení nešla, mělo by být
> zajištěno, že bude uplatňována stejně na vstupu i na výstupu. A to zde není,
> protože se nejspíše uplatňuje jen na vstupu. Viz bod 1.


Další informace o konferenci Hw-list