![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Все же думаю, что ru есть. Ось врать не может, раз говорит "есть", значит в ней присутствуют и локаль ru-RU и русскоязычная кодовая страница. Панель управления - Часы, язык и регион - Язык и региональные стандарты - Дополнительно - текущий язык программ, не поддерживающих Юникод. Что там? И есть ли возможность изменить на "Русский (Россия)"? |
|||
|
||||
| lollollollol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
Странно, там действительно есть Русский язык, но всё равно не могу сохранить русские символы, чтото с кодировкой?
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
||||
|
||||
| lollollollol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
BOOL = LongBool;
Boolean False = 0 True = 1 LongBool False = 0 True <> 0 В любом случае должно вернуть нуль для False, так что тут это роли не играет, или я не прав? Добавлено @ 19:01
На англ винде не нашел в прошлый раз, увидел только список языков. гляну черз 2 часа, отпишу Это сообщение отредактировал(а) lollollollol - 30.1.2014, 19:01 |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
О боги, да неужели стало доходить! Ну разумеется в кодировке. Твоя семерка пытается сохранить в анси, а сервер сохраняет в юникоде. Локаль системы тут вообще не при делах. Тут хоть кириллица, хоть иероглифы, разницы нет. Отдавай на сохранение текст в юникоде и считывай его как юникод и все твои проблемы решатся. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| kami |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Сравни SizeOf(Boolean) и SizeOf(BOOL);. В данном случае - это ничего не решает, но лучше так не привыкать делать.
Это как? Где в сохранении файла участвует Ось, кроме открытия этого файла (грабли в моей теме были именно в именах)? В D7 Memo1.Items.SaveToFile в любом случае запишет ANSI, каким бы юникодным не был сервер. Вот отображение на том же сервере содержимого Memo1 даст крякозябры, но это не означает, что сам файл побился. Это сообщение отредактировал(а) kami - 31.1.2014, 08:58 |
||||
|
|||||
| lollollollol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
Пуск - Control Panel - Regional and Language Options - Administrative - Change system locale... - Current system locale:
Вот тут если поставить Russian, то все проблемы с сохранением Русского языка пропадают, соответственно вопрос: Как сделать это программно? Вероятно нужно поменять какой-то ключик реестра, какой? кто знает, или подскажите как узнать? Это сообщение отредактировал(а) lollollollol - 31.1.2014, 11:56 |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Фигасе! Любое сохранение в результате приходит к функции CreateFile. А это, ну так, между прочим, функция оси. Хочется увидеть, как возможно сохранить файл без операционной системы?
Записать запишет, а толку? Стандартными способами прочитает как юникод и получаем ерунду. Но мы тут вообще не об этом говорим. Вся суть заключается в том, что ОС по барабану какой она локали и есть ли в ней язык отображаемого текста. lollollollol, я думаю в твоей ОС нет какого-нибудь японского, но при этом всякие там японские сайты отобразятся у тебя нормально. Арабская вязь нормально отобразится в большинстве случаев. Я это к тому, что НЕ ВАЖНО есть ли в системе нужный язык. Т.е. ты изначально пошел не тем путем, и вместо того, что бы разобраться с кодировкой ты пытаешься понять есть ли нужный тебе язык в системе. Определись с тем, что бы твой файл читался в той же кодировке, в какой и сохраняется. На данный момент у тебя сохранение в ANSI, а чтение в Unicode. Отсюда и проблемы. Добавлено через 2 минуты и 41 секунду
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Вообще-то полный мой вопрос звучал как Давай не будем выдергивать фразы из контекста. +100500. Это сообщение отредактировал(а) kami - 1.2.2014, 09:46 |
|||
|
||||
| lollollollol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
Согласен, не подумал А вообще нашел софт который показывает изменения в реестре и файлах, так что сделать не проблема. По сути нужно просто передавать файлы в юникоде, что является проблемой, клиент который передаёт серверу файлы, передаёт их именно в ansi, если только в буфере при получении как-то менять с ansi на юникод Это сообщение отредактировал(а) lollollollol - 1.2.2014, 10:13 |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Контекст изначально сам себе противоречит. "Где в сохранении файла участвует Ось, кроме открытия этого файла". Хочешь сказать, что при открытии файла ОС участвует в сохранении? Звучит как бред. А вот мой довод о том, что в сохранении файла ОС участвует как минимум своей WinAPI-функцией CreateFile, по-моему, звучит вполне логично. Плюс я попросил привести пример сохранения файла без ОС, примера нет. Вывод? А вывод прост, в сохранении файла ОС в любом случае участвует. Более того, файл сохраняется средствами ОС. Нет у железа возможности самому сохранить файл, только средствами ОС.
Ну молодец. К третьей странице разобрались. Dephi 7 изначально не умеет работать с юникодом, поэтому и получается такая вот бяка. Придется перелазить на более ранние версии. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| kami |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Гхм... чтобы сохранить файл, его надо сперва открыть, не? И CreateFile как раз возвращает хендл на открытый файл. Посему -
Вообще - да, изначальное мое высказывание было несколько неполно и допускало двоякие толкования. Я хотел сказать, что участие оси, в котором хоть как-то принимает участие кодировка, завершается на открытии этого файла. Если брать не-юникодное приложение, то участие заключается в перекодировке не-юникодного имени файла в юникодное на основе дефолтной локали. В дальнейшем все операции с файлом идут в бинарном режиме (естественно, с участием ОС - это, наверное, было не очевидно из контекста), к которому кодировка не имеет отношения. Исходя из всего вышесказанного, немного переиначу.Сервер просто сохраняет. Кодировка содержимого файла определяется приложением и только им. Посему с моей точки зрения фраза
|
||||||
|
|||||||
| lollollollol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 12.3.2013 Репутация: нет Всего: нет |
вопрос не по теме, какую версию с юникодом посоветуете, чтобы было как можно меньше проблем с переносом проектов?
могу лишь сказать что у меня все проекты не используют делфийские компоненты(серверное ПО). Это сообщение отредактировал(а) lollollollol - 1.2.2014, 18:52 |
|||
|
||||
| Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Не. Вот представим, файла у нас нет. Мы получаем его из сети в память, а потом его сохраняем из памяти на диск. В какой из этих операций участвует открытие файла? CreateFile возвращает хэндл на созданный этой функцией файл.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Если получаем "в память" - то как минимум CreateFile. Если не "получаем в память", то - я не знаю внутренностей работы CopyFile. В любом случае на исходную кодировку способ копирования не повлияет. specified <> "созданный". Poseidon, продолжать прения дальше не вижу смысла - ты ищешь ошибки в моих высказываниях и не хочешь признавать в своих. На начальный вопрос автора ответ был дан, всё дальнейшее считаю выходящим за рамки обсуждения. Это сообщение отредактировал(а) kami - 1.2.2014, 20:52 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |