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

Pavel Troller patrol na sinus.cz
Pátek Listopad 26 16:49:15 CET 2010


> Původní zpráva ze dne 26.11.2010 od Pavel Troller:
> 
> > Nyní tedy zbývá už jen otázka, proč program nečte ani vlastní data -
> > tj. nahraje je patrně s tečkou (přečtu je já), ale čte je s čárkou ?
> > Není tohleto chyba OS ?
> 
> Ach jo :-)))
> 
Zdravím,
  tohle moje "šťourání" opravdu není myšleno jako snaha o vyvolání flamewaru.
Věřte nebo nevěřte, já se skutečně upřímně ptám.
  V Unixových operačních systémech totiž nevím o tom, že bych něco podobného
musel pro ukládání dat dělat.
  Vezměme např. funkci *printf(), která by nejspíše byla použita pro
formátování desetinného čísla. Cituji popis specifikátoru %f:
" The double argument is rounded and converted to decimal notation in the
style [-]ddd.ddd, where the number of digits after the decimal-point character
is equal to  the  precision  specification.". Vidíme tedy, že národní nastavení
se zde neuplatňuje. Chci-li používat národního I/O, musím si před tím volat
speciální konverzní funkce.
  Obdobně zase funkce čtení *scanf() umí přečíst desetinná čísla s tečkou a
ne jiná.
  Čemu v případě tohoto programu nerozumím, je:
  1) Proč se uplatňují národní nastavení i v takovém druhu I/O, které vytváří
čistě binární soubor ? Vždyť tam můžou nastat jen chyby a nikdy to nemůže být
k ničemu dobré! Dle mého názoru by mělo být standardní I/O bez národních
konverzí a pokud jsou třeba, tak volat taky přes nějakou konverzní funkci.
  2) Proč by případně autor záměrně volal tyto funkce, když jeho cílem je
skutečně jen binární datový soubor ?
Abych si alespoň sám na tyto otázky částečně odpověděl, zkusil jsem zjistit,
v čem že je ten program vlastně napsán. V jeho bináru jsem našel tento string:
D:\Program Files\Microsoft Visual Studio\VB98\VB6.OLB
Znamená to, že ten program je psán ve Visual Basicu ? Hmm, tak ten zase
vůbec neznám. Zohledňují tam automaticky operace I/O nastavení národního
prostředí ? Musí se to napřed vypínat, nebo naopak zapínat ? Asi moc otázek,
že ? No nic, nechme toho.
  Řešení se našlo a to je hlavní. Nyní mohu definovat všech 128 kanálů a
kolega tam nebude muset zadávat subtóny ručně :-). A proč to nefunguje, to
necháme koňovi, ten má větší hlavu.
  Zdraví Pavel.


Další informace o konferenci Hw-list