Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.62 MB
Время: 0.044 c
1-68781
TTCustomDelphiMaster
2002-10-11 17:37
2002.10.21
двоичные константы


3-68603
Hawk2
2002-09-27 15:08
2002.10.21
Параметры в Query.


1-68815
Sabor
2002-10-09 20:31
2002.10.21
Stringgrid?


3-68627
Александр1
2002-09-28 10:45
2002.10.21
Удаление с помощью триггера


14-68928
Дремучий
2002-10-01 02:10
2002.10.21
Политические игры и интриги....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский