Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 17:52 11.05.24 
Компютри и Интернет
   >> Delphi
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема ПОМОЩ! Кодировки!нови  
АвторBиkтop (Нерегистриран)
Публикувано30.05.04 15:04



Моля дайте ми функция на Паскал, която кодира и декодира във и от MS-DOS към win1251, но така че да запазва специалните символи!. Става въпрос за кирилица, естествено...
Благодаря Ви много, ако се намери кадърен и опитен програмист!



Тема Re: ПОМОЩ! Кодировки!нови [re: Bиkтop]  
Автор andrew_nikoloff (void)
Публикувано30.05.04 16:17



А какво имаш предвид под специални сомволи?! Питам, защото не мога да се сетя за функция, която да ги "разваля" тия дето аз си мисля за тях :)
А иначе трябва проста да вадиш (или прибавяш) 64 от ASCII кода на симвила (192 е главно "А" на кирилица под windows, докато 128 е dos-овския му код).


for i := 1 to Length(s) do
if s[ i ] in [#128..#191] then
s[ i ] := Chr(Ord(s[ i ]) + 64); //DOS to Win или "- 64" за Win to DOS и [#192..#255] горе...


Животът не се мери с броя вдишвания, а с моментите, които спират дъха ни!

Редактирано от andrew_nikoloff на 30.05.04 16:20.



Тема Re: ПОМОЩ! Кодировки!нови [re: andrew_nikoloff]  
АвторBиkтop (Нерегистриран)
Публикувано30.05.04 16:40



Мерси за отговора, но в момента функцията ми е подобна на тази. Проблемът идва, когато имаш да речем "топче" (точка по средата), което е един от специалните символи. Под ДОС се вижда,, но когато го декодирам към Вин се получава "ъ"(ако не се лъжа). При връщането му към ДОС отново си остава "ъ". Т.е. някъде по пътя се замазва символът на "топчето", което всъщност е символ за изброяване(нещо като тирето). Подозирам, че ще се замажат и теща като корени и т.н. А ми трябва наистина, защото се касае за Дъравен вестник и тези символи трябва да си останат...



Тема Re: ПОМОЩ! Кодировки!нови [re: Bиkтop]  
Автор NDeu (динозавър)
Публикувано30.05.04 19:39



Формулирай по-добре въпроса си
Няма такава кодировка MS DOS. Може би имаш предвид някой OEM Character set. Вж API функциите AnsiToOem и OemToAnsi.



Тема Re: ПОМОЩ! Кодировки!нови [re: NDeu]  
АвторBиkтop (Нерегистриран)
Публикувано30.05.04 20:01



Каква кодировка няма в MS-DOS???
Има си MS-DOS - кирилица, която естествено се ползва под ДОС. Аз взимам такива файлове и ги чета под Уин. За тази цел те трябва да минат към win1251 . Това, на пръв поглед, се прави сравнителнос лесно - махаш/добавяш 64 към символа и готово(по-горе онзи пич го беше направил). Но при това махане се забравя за специалните символи или по-точно за шантавите симовли(защото специални се водят невидите). Та, да речем, опитай да декодираш досовски текст, който има корен вътре, или както в моя случай - един символ като топче в средата на реда(този символ го има в стандартната 256-символна таблица, направи си chr под ДОС или си го изкарай на Делфи). Е, проблемът е как да запазя по уин и тези символи.



Тема Ndeu е прав...нови [re: Bиkтop]  
Автор PhantomASМодератор (няма)
Публикувано30.05.04 23:12



ако говорим за ДОС - там има само ASCII (ANSI от преди 80г. май) стандарта. След навлизането на компютрите в не англоезичния свят (не става дума само за страните пишещи на кирилица) този стандарт се променя като до колкото помня това което касае нас като стандарт (и Русия) е MIK кодова таблица - в която част от псевдографичните символи са сменени с тези нужни за кирлицата.
За да запазиш тези символи при преминаване към Win и новите таблици (коментирам случая с не UNICODE) наистина онова с добавянето на 64 върши работа защото има подобна зависимост. Ако обаче искаш да прекодираш други различни от символите намиращи се в зоната за MIK кирилица - ще трябва да си направиш таблица на съпоставка - другия вариант е да ползваш някои от функциите за това - които той е посочил.
Още една поправка - "невидимите" или специални символи мисля, че са само първите 32 (0..31). Корена или другите символи които посочваш са с код > 128 май ?!?

---
Колкото повече, толкова повече.


Тема Re: Ndeu е прав... [re: PhantomAS]  
АвторBиkтop (Нерегистриран)
Публикувано31.05.04 02:08



Да, невидимите символи са първите 32. НЕ ГОВОРИМ ЗА ТЯХ.
Говорим за символите, които се намират след 191-ия елемент в таблицата. Проблемът е, че при тях не открих зависимост от типа "махаш/добавяш". Ето затова пуснах този постинг и мисля, че явно твоят отговор е най-точен - не съществува точна функция, а таблица на съпоставка. Така ли да го разбирам?
Ако има някакъв трик за да се получи, моля помогнете...(споменавате за някакви функции?)



Тема Re: Ndeu е прав...нови [re: Bиkтop]  
Автор NDeu (динозавър)
Публикувано31.05.04 13:47



Транслиране на псевдографичните символи от OEM866 (и аналогичната MIK, с някои размествания ) в Win1251 не можеш да направиш, защото те не са включени в множеството WIN1251. (звучи объркано и тафталогично, но дано да си ме разбрал ). Разгледай

мисля, че ще ти помогне. Изобщо, ако правилно съм те разбрал, тази задача без уникод няма да стане



Тема Re: Ndeu е прав...нови [re: NDeu]  
АвторBиkтop (Нерегистриран)
Публикувано31.05.04 14:04



Засега решението ми е да забода if-then за всеки специален символ, дето съм локализирал. Имаш ли някаква друга по-практична идея?



Тема Re: ПОМОЩ! Кодировки!нови [re: andrew_nikoloff]  
Авторgrozniq (Нерегистриран)
Публикувано31.05.04 16:41



Mislq che funkciqta na Andrew e tochno tova koeto ti trqbva. Imal sym syshtiq problem i sym izpolzval syshtiq podhod. Obyrni vnimanie na proverkata
if s[ i ] in [#128..#191]
v tozi diapazon nqma simvol "topche"

Ima i drug nachin.Mojesh da si napravish tablica na syotvestvie v koqto se opisva na koi simvol ot ednata tablica koi simvol ot drugata syotvetstva. Kogato tazi tablica e zaredena v RAM-a preobrazuvaneto stava dosta byrzo. No tozi nachin se polzva samo v kraen sluchai kogato mejdu dve kodovi tablici nemoje da se nameri nikakva logika(a to vinagi ima).




Страници по тази тема: 1 | 2 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.