Recenze  |  Aktuality  |  Články
Doporučení  |  Diskuze
Auto-Moto
Mobilní telefony
Notebooky  |  Tablety
Příslušenství
Wearables  |  Ostatní
Svět hardware  |  Digimanie  |   TV Freak

Basic4ppc - diakritika

macula_ce4you (691)|23.12.2007 10:26
Zdravim, prosim o pomoc s nasledujicim.

Prikazem FileWrite ukladam z promenne text obsahujici diakritiku do souboru .csv. Bohuzel po otevreni tohoto .csv jsou znaky s diakritikou nesrozumitelne. Pri nacteni do tabulky (Table1.LoadCSV) se vsak zobrazuji spravne. Z toho .csv potrebuji tisknout.

Predem diky.
RStein (2012)|23.12.2007 10:35
Nesrozumitelne? Zalezi na kodovani souboru - v Pocket PC je vsechno Unicode, ale aplikace mohou ukladat v jinem formatu a pak nejaky viewer/editor,ktery nema podporu pro dane kodovani, zobrazuje paznaky.
Pri ukladani do Unicode je vhodne zapsat na zacatek BOM.
macula_ce4you (691)|23.12.2007 12:22
CSV soubor otevírám na PC v Excelu 2003 a například slovo kancelář zkomolí na [CODE] kancelář
[/CODE]

Kam přesně mám umístit BOM? Ať to dám kamkoliv, tak ihned po spuštění program hlásí chybu.

Díky.
RStein (2012)|23.12.2007 12:29
BOM je sekvence bajtu na zacatku souboru, ne text BOM:)

http://en.wikipedia.org/wiki/Byte_Order_Mark
Zapisuje Basic opravdu Unicode?
V Total Commanderu na PC ve vieweru muzete vyzkouset, v jakem kodovani se text zobrazi spravne.
Excel ma myslim nekde v nastavenich moznost vybrat encoding oteviraneho souboru ne?
macula_ce4you (691)|23.12.2007 13:22
No jo no.:) Jsem začátečník a abych řekl pravdu, tak v tomhle se úplně ztrácím. Basic4ppc by měl defaultně používat Unicode Aspoň se o tom zmiňují v návodu. V excelu jsem tu volbu nenašel. Když soubor otevřu v HEXA, tak na začátku je následující:

[CODE]31 32 2F[/CODE]

Nevím jestli to dobře chápu. Mám to přidat takto?

[CODE]
a = "EF BB BF"

FileOpen(c1,"soubor.csv",cWrite)
WriteByte (a as Byte)
FileClose(c1)
[/CODE]

Díky.

RStein (2012)|23.12.2007 13:28
To je hroze humusacky kod v basicu :), ale takto urcite ze stringu sadu bajtu nezapisete.
Mozna bude lepsi, kdyz kousek vygenerovaeho souvoru sem pripojite a ja se na nej podivam
RStein (2012)|23.12.2007 14:24
[CODE]

WORD BOM=0xfeff;
DWORD writtenControlBytes;

WriteFile(hFile, &BOM, sizeof(BOM), &writtenControlBytes, NULL);
[/CODE]

Tohle zapisuji v C++. Pokud lze v tom PPCbasicu zadavat hexadecimalni cisla, tak jde o vyjadeni 0xfeff;

Excel ale pry ma problemy s Unicode. Zkusil jste wizard "Import text "? Ten dovoluje nastavit UTF-8 kodovani. Mam Office 2007,, ale ve 2003 je myslim take.
edit: excel 2003 wizarda ma http://www.uwec.edu/help/Excel03/importingdata.htm
macula_ce4you (691)|24.12.2007 12:41
Tak jsem to vyzkoušel přes ten import v Excelu a pokud zvolím kódování Unicode UTF-8 tak se data zobrazí v pořádku. Co mám teda udělat, aby Basic4ppc toto kódování používal? Ten kód z C++ mě nic neříká :oops:

Soubor vytvářím následovně (a to každý měsíc jiný):

FileOpen (c1, "Soubor.csv", cWrite, ,)
FileClose (c1)

Data ukládám následovně:

FileOpen (c1, "Soubor.csv", cWrite, cAppend)
FileWrite (c1, &data1 "; " &data2 "; " &data3)
FileClose (c1)
RStein (2012)|24.12.2007 13:29
Ted tomu nerozumim - soubor asi bude v UTF-8, kdyz se vam ho podarilo otevrit. Jedine co v sobe nema, je BOM na zacatku - nicmene AFAIK i kdyz BOM pridate, budete muset v Excelu stale jit pres wizarda pro import textu. Excel 2003 utf-8 asi nedetekuje.
macula_ce4you (691)|24.12.2007 20:55
Tak to nechápu. Zkontroloval jsem i ostatní vytvorené soubory a tam řetězec EF BB BF je. Že já si vždy vyberu ke kontrole nějakýho zgarba. Nicméně, to nic nemění na tom, že ani ty soubory Excel nezobrazí správně. Ještě jsem vyzkoušel v EF Commanderu příkazy F3 (zobrazení stejně jak v Excelu) a F4, kde se text s diakritikou zobrazí OK.

Předpokládám správně, že je tedy chyba na straně Excelu a že s tím nic neudělám?
RStein (2012)|24.12.2007 21:46
Ale import funguje ne? Jak pisu - Excel jednoduse pri vychozim otevirani souboru (bez importu) ignoruje znakovou sadu.
Import by se dal asi zautomatizovatpres VBA - dalo by se napsat makro a pro toto makro zobrazovat tlacitko v toolbaru/polozku v menu.
macula_ce4you (691)|24.12.2007 22:33
Jo, jo, import funguje, ale je to takovy reseni "Pojd na me z boku" ;). Bohuzel se s tim asi budu muset smirit a nebo to otevirat v textaku.

Diky za Tvou trpelivost a ochotu poradit zacatecnikovi
RStein (2012)|24.12.2007 22:43
To je v pohode. ;) To tlaitko v Excelu , ktere by se chovalo jako "Otevrit soubor", ale provedlo by import by ti nestacilo? Z hlediska uzivatele je to primitivni stejne jako puvodni funkce Otevrit soubor.
Anebo - jestlize ten podivny Basic umi volat API, tak bych ti moh vystavit funkci, ktere predas text a ona ho zapise v jine kodove sade. Tohle ale urcite nejdrive nekdy po novem roce. ;)