Форум: "Основная";
Текущий архив: 2002.10.21;
Скачать: [xml.tar.bz2];
Вниз????? вместо русских букв Найти похожие ветки
← →
StarCon (2002-10-10 14:58) [0]блин, ну помню же что обходил это дело!
заклинило....
беру текст из ричэдита и записываю в эксель
открываю полученный файл - ????? вместо русских букв
что делать то?
← →
MBo (2002-10-10 15:28) [1]попробуй ра складку на русскую переключить
← →
StarCon (2002-10-10 15:32) [2]угу, это сразу попробовал - не помогает
← →
MBo (2002-10-10 15:43) [3]Как в excel записываешь?
← →
StarCon (2002-10-10 15:49) [4]XL := CreateOleObject("Excel.Application");
XL.WorkBooks.Add;
XL.Visible := False;
XL.WorkBooks[1].WorkSheets[1].Cells[NumY, i+1] := Trim(ColStr);
← →
StarCon (2002-10-10 15:50) [5]ColStr := RichEdit.Lines.Strings[i] естественно
← →
Zemal (2002-10-10 15:50) [6]>>МВо
Что вы всё с раскладками шаманите? Причём тут системная раскладка клавиатуры?!!! Она как-раз и непричём. Слышали про таблицы OEM и ANSI? Конвертировать надо!!! Есть стандартные апишные функции Винды инкапсулированные в Делфи: CharToOEM и OEMToChar... я вообще не пойму почему это все раскладками клавы интересуются?! Неужели помогает?! Хотя вполне возможно... Винда автоматом конвертит при передачи OLE объектов... какраз при выбросе текста в Эксель... :))) гы-гы... но лучше не раскладки юзать а самому конвертить :)... больше уверенности, что так всегда будет работать и на любом компе...
З.Ы. Забыл добавить... не все версии Виндовс поддерживают эти функции... помоему в 95 есть какие-то другие аналоги... помоему ANSIToOEM... или что-то вроде... гляньте сами в хелпаках.
← →
StarCon (2002-10-10 16:02) [7]Во-во! правильно!
но OEMToChar конверит буфер
а как бы из строки взять и в строку запихать
← →
Zemal (2002-10-10 16:08) [8]>>StarCon
напиши мне письмецо... я тебе пример пришлю как конвертнуть сразу все элементы списка порождённые от класа TString.
← →
REA (2002-10-10 16:16) [9]OEM и ANSI тут явно не причем. Эта тема была недавно в форуме - ищи. Может в юникод сконвертировать или WideString(String)?
← →
Zemal (2002-10-10 16:38) [10]>>REA
Какраз и причём!!! У паря всё получилось безо всяких Юникодов ваших :). Если интересно, то надо вот так делать:
for i := 0 to StrLst.Count-1 do
OemToChar(PChar(StrLst[i]), PChar(StrLst[i]));
Можно и обратную конвертацию... и всё корректно :). Главное что всегда работает... и всегда корректно... а от преобразования в Юникод мне кажется никакого толку небудет :)
← →
MBo (2002-10-10 16:43) [11]>Что вы всё с раскладками шаманите?
Простите, дяденька, в вашем присутствии больше не буду ;(
До получения информации о способе переноса была вероятность осуществления его через буфер обмена.
← →
Zemal (2002-10-10 17:22) [12]>>МВо
Да не обижайся... я уж так резко... извини. :) Я хочу сказать, что изменение раскладки наверняка не изменит кодировки... на самом деле многие неправильно представляют что такое строка символов :). На самом деле строка - это номера символов в таблице раскладки... и для корректного преобразования кодировки надо фактически поменять номера в соответствии с номерами символов в другой таблице... а кто это должен сделать как не программист? Я например не понимаю как может повлиять раскладка клавиатуры (текущая), на строку символов в памяти? Эксель он молодец :), он сразу берёт номера символов из таблицы ANSI1251 и подсталяет... вот пойди объясни этому Экселю что это номера символов в кодировке OEM866... :) Вот какраз раскладка это Экселю объяснить и не сможет :). Для этого Экселя разницы нет как отображать... он же не думает :). В данном случае думать должен программер и думать должен отбрасывая шаманство :). В принцыпе функция OEMToChar меняет номера символов в соответствии с таблицами OEM и ANSI (принята по умолчанию в винде). А на этих таблицах в принципе держится региональная таблица... т.е. разъясню: эти функции не привязаны к русскому языку, как вы могли подумать, а лишь конвертируют номера символов... они так же будут корректно работать и с украинским и с узбекским... а текст в том же Экселе будет отображаться исходя из региональных настроек... т.е. какая в винде стоит локация (место нахождения).
← →
Zemal (2002-10-10 17:36) [13]Если кто не понял: по сути дела к таблица ANSI привызаны шрифты... [символ] -> [адрес в таблице ANSI], так что можно установить кучу шрифтов всяких, поддерживающих таблицу ANSI (например украинский), а можно установить кучу таблиц, но(!!!) у каждого шрифта есть ссылка на поддерживаемые таблицы... на счёт Юникодов могу сказать только, что там своя кодировка и символы занимают от 2 до 4 байт... про Юникоды мало чего могу подсказать, т.к. не сталкивался :(.
← →
qube (2002-10-10 17:43) [14]Zemal © (10.10.02 17:36)
Перед тем, как пускаться в долгие объяснения, анкету не мешает посмотреть.
Первый раз вижу, чтобы мастеру (!) о раскладках рассказывали.
← →
Zemal (2002-10-10 18:04) [15]>>qube
Первый раз вижу человека, который считает, что если Мастер, то знает всё и даже больше... НЕЛЬЗЯ ЗНАТЬ ВСЁ!!! И нечего этого стыдиться :). У меня тоже во многом есть пробелы... причём огромные... но мне не стыдно... да и до мастера мне далеко... :) гы-гы :))) я туда всегда успею :)!!! Просто я что знаю - то и выкладываю. Может и мастер почерпнёт немного из моего личного опыта... чего в этом плохого? Человек не может знать всё и подробно (ещё раз повторился :) ). У каждого Мастера своя стезя в которой он знает больше других... да и как определить мастера? по каким критериям? на самом деле знания вторичны - образ мышления первичен! не смотреть же мне все анкеты на форуме?! не обижайтесь, если чего не так написал... резкий я человек и открытый :)... НО!!! Обидеть никого не хотел! Если чего не то, то примите мои извинения!
← →
MBo (2002-10-10 18:05) [16]>qube
Я не обладаю абсолютным знанием ;)
← →
Zemal (2002-10-10 18:26) [17]>>МВо
Спасибо! Такое высказывание даёт повод предпологать, что вы действительно Мастер :). Уважаю и приклоняю голову :). Мастер - это человек, а не бог и отличается от других людей тем что учится всегда и не стыдится учиться даже у новичков! Это говорит о правильной психике и правильном складе ума (что в общем-то сильно взаимосвязано)! :)
← →
Zemal (2002-10-10 18:41) [18]Кстати, перечитывая свои записки здесь, я немного ошибся и как всегда запутался :). А именно:
>>Эксель он молодец :), он сразу берёт номера символов из
>>таблицы ANSI1251 и подсталяет... вот пойди объясни этому
>>Экселю что это номера символов в кодировке OEM866... :)
Это неправильно! Эксель берёт номера символов в переданной строке и подставляет символы под этими номерами из шрифта, который в нём установлен в соответствии с таблицей ANSI (никак не с ANSI1521!!! цыфры тут непричём!!!) Таблицы ANSI и OEM одни и теже везде и всегда... а номера - это наборы символов в шрифтах... это типа каждый шрифт имеет несколько наборов символов для нескольких языков... русскому языку соответствует 1251... может я и не прав :)... сам бы хотел знать поподробнее об этом. Объяснить никто неможет?
← →
StarCon (2002-10-11 11:28) [19]Ребята! проблема осталась...
ОЕМtoChar не помогло
попробовал еще Utf8toAnsi - без изменений
оказывается, когда беру из обычного ричэдита - все нормально
но мне нужно брать текст из rxRichEdit-a
(из компонента ЭрИкс), видно из-за него вся лажа
а поменять ричэдит я не могу
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.21;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.008 c