Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.21;
Скачать: CL | DM;

Вниз

????? вместо русских букв   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.014 c
3-68678
Dimedrol
2002-09-27 15:59
2002.10.21
Как раскрасить ROWS! в DBGrid-e ?


1-68703
dim-
2002-10-11 00:28
2002.10.21
Как удалить форму из памяти?


1-68872
AL2002
2002-10-10 12:16
2002.10.21
Дело с RichEdit


1-68858
KLOP
2002-10-10 15:15
2002.10.21
Не могу в DBGrid обработать двойной клик по записи


14-68987
Beglec
2002-09-28 21:54
2002.10.21
Где можно СКАЧАТЬ Delphi 7.0