Отговори на тема  [ 17 мнения ]  Отиди на страница 1, 2  Следваща
Кирилица в HI-TECH C PRO PIC18 V9.63PL1 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Авг 17, 2008 10:16 am
Мнения: 58
Местоположение: София
Мнение Кирилица в HI-TECH C PRO PIC18 V9.63PL1
За съжаление ми се наложи да сменя вярната версия 8.20, понеже не ми поддържа новите пик-ове (18f45j10). Компилаторът работи, всичко е прекрасно, но понеже старият вече го няма реших да компилирам някой стар проект, да видя всичко ок ли ще е...Тук идват проблемите.Проектът праща стрингове с кирилица по RS232.Менюто на lcd-то и то е на кирилица.Получава се следната грешка при build - "Error [228] D:\Proekti\Pryskachka VI RDTESTESTED - IE\Pryskachka VI.c; 836.10 illegal character (0xCA)". След малко ровене в Мануел на компилатора се оказва, че в .С файлът можело да има само 7-битови ASCII символи, демек не и кирилица.............ТЪПО.Като сложа да праща латиница всичко работи ок.Не можах да намеря от опциите някакъв начин да спра тази проверка дали символите са 7 битови.Пробвах следното малоумно решение : Пълня стринга ръчно елемент по елемент с ASCII символи, например :
a[0]=0xf5;
a[1]=0xcf;
a[2]=0xca;
a[3]=0;
Така нещата стават, на терминала излиза кирилица, чудо и приказ....въпроса е ,че това не е решение.............някой измислил ли е някакво по-добро?

П.П. Ще помоля Никола Киров да се въздържи от удоволствието да спами, че такъв проблем с някой от неговите системи няма как да стане, и че това е поредният ПИК за мигане на ламби =;

_________________
RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);


Сря Мар 11, 2009 2:11 am
Профил ICQ WWW
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Авг 17, 2008 10:16 am
Мнения: 58
Местоположение: София
Мнение 
2 минути по-късно си реших проблема, благодарение на тази тема http://forum.htsoft.com/all/showflat.ph ... age/1/vc/1 , хитро решение, сам да преценяваш дали да е грешка, дали предупреждение.
Преценете дали темата да се трие или да седи ако някой се сблъска със същото :)

_________________
RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);


Сря Мар 11, 2009 2:19 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение 
това:
Код:
const char b[] = {0xf5, 0xcf, 0xca, 0 };

би трябвало да работи на всякакви компилатори (дори и за пик :))
предполагам ще се сетиш как да го използващ :)

вижда ми се тъпа идея да ползваш sprintf само за да копираш стринг (освен ако е за мигалка :)) ... и то само защото не знаеш как да го декларираш !
(предполагам знаеш че sprintf прави обработка на форматиращия стринг ... а това значи време!)


Сря Мар 11, 2009 7:48 am
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Авг 17, 2008 10:16 am
Мнения: 58
Местоположение: София
Мнение 
Кой е споменавал sprintf? Става дума за използване на стрингове като аргументи.Но и със sprintf, щеше да стане същото.Въпросът ми ама въобще не е за С .

_________________
RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);


Сря Мар 11, 2009 8:01 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение 
щом казваш :)


Сря Мар 11, 2009 8:38 am
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Авг 17, 2008 10:16 am
Мнения: 58
Местоположение: София
Мнение 
Човек става дума за константни низове като аргументи на някаква функция, например :
LCD_Puts("Пръскачка вер.VI",0);
void LCD_Puts(const unsigned char* Str , unsigned char Position);
В този случай става дума за временни const-ове, които компилатора си дефинира за да ги подаде на функцията като аргумент.Реално той си дефинира един const char temp[]={'П','р','ъ','с','к','а','ч','к','а',' ','в','е','р','.','V','I',0}; и този temp се подава така - LCD_Puts(temp,0); Покажи ми къде става дума за sprintf :) или какво имаш предвид.Въпросът ме не е за ANSI C, а затова как компилаторът третира .С файлът.
Поздрави.

_________________
RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);


Сря Мар 11, 2009 10:31 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение 
уф ...

това е цитат от линка дето си го дал (решението дето ти харесало :) ):
Код:
sprintf(lcdstring, "\xD0\xA1\xD0\xBE\xD1\x84\xD1\x82");


понеже типичния пикофон би ползвал copy/paste - предположих че случая е такъв :)

"\x" не е стандартен префикс ... т.е. може да не се поддържа от всички компилатори

просто ти дадох най-прoстото решение - и то такова че да работи на всички платформи а не само на ПИК !

пример:
const char szPraskachka_ver_VI[] = { ... };
LCD_Puts(szPraskachka_ver_VI,0);

ако мислиш че "\xD0\xA1\xD0\xBE\xD1\x84\xD1\x82" е по-прегледно ос {0xD0, 0xA1, ...} - печелиш :)


Сря Мар 11, 2009 11:37 am
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Авг 17, 2008 10:16 am
Мнения: 58
Местоположение: София
Мнение 
ЧЕТИ!!!В въпросната тема е написано как грешката да бъде направена на предупреждение и да се компилира :) Явно не си ме разбрал

_________________
RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);


Сря Мар 11, 2009 11:44 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение 
thegza написа:
ЧЕТИ!!!В въпросната тема е написано как грешката да бъде направена на предупреждение и да се компилира :) Явно не си ме разбрал


и ... в следващата версия на любимия ти компилатор като махнат тая "екстра" - какво ще правиш ... пак ще пускаш нова тема ?

научи се да си решаваш проблемите а не да ги замазваш !


Сря Мар 11, 2009 12:00 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Май 17, 2006 4:22 pm
Мнения: 34
Местоположение: софия
Мнение 
ps66 написа:
"\x" не е стандартен префикс ... т.е. може да не се поддържа от всички компилатори


\x е стандартна C escape последователност за символни константи


Сря Мар 11, 2009 12:19 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Авг 17, 2008 10:16 am
Мнения: 58
Местоположение: София
Мнение 
@ps66 .... Хората пишат, че този ерор ще го направят на уорнинг, за в бъдеще отново ЧЕТИ!!!!!...А и по-скоро това, което ти предлагаш е замазване, абе,без коментар просто.....

_________________
RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);


Сря Мар 11, 2009 12:30 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение 
thegza написа:
@ps66 .... Хората пишат, че този ерор ще го направят на уорнинг, за в бъдеще отново ЧЕТИ!!!!!...А и по-скоро това, което ти предлагаш е замазване, абе,без коментар просто.....


пикоборец такъв - точно на това ти казвам "замазване на проблема" - щото от "error" го правиш на "warning" с опции на компилатора вместо да си решиш проблема така че да не се появи !
утре ще излезе нова версия, ще преинсталираш компилатора ... или там каквото един пикоборец прави :)

... и пак ще пуснеш тема :)

за това дали \x е стандарт или не - нито ме интересува нито вълнува ... още по-малко спори :)


Сря Мар 11, 2009 1:35 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Авг 17, 2008 10:16 am
Мнения: 58
Местоположение: София
Мнение 
Като не те интересува, що пишеш в темата..... поне с ANSI C да беше запознат... ](*,) ](*,) ](*,) ...

_________________
RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);


Сря Мар 11, 2009 1:43 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Мда, за поребен път пикофобите осират темите. Може би трябва да се направи една тема със заглавие "Пикофоби, моля дрискайте тук колкото Ви душа сака..." , че да се омажат до ушите, ама надали ще мирясат :)

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Сря Мар 11, 2009 4:27 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Нед Авг 17, 2008 10:16 am
Мнения: 58
Местоположение: София
Мнение 
¶ написа:
Мда, за поребен път пикофобите осират темите. Може би трябва да се направи една тема със заглавие "Пикофоби, моля дрискайте тук колкото Ви душа сака..." , че да се омажат до ушите, ама надали ще мирясат :)

=D> =D> =D> може цял домейн да им регнем, phpBB да качим и да си пишат :)Както един приятел казва на жена си : "В новата къща ще ти насипя пясък в един ъгъл, да си съскате с приятелки " :P

_________________
RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);


Сря Мар 11, 2009 6:17 pm
Профил ICQ WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 17 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни