powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
25 сообщений из 175, страница 7 из 7
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40062247
Вы будете удивлены, но после автоматической замены string --> AnsiString, char --> AnsiChar и т. д.

и еще парой десяткой правок вручную проект успешно скомпилировался и запустился (хоть и с кучей багов и сообщений) на Delphi XE8.

На Delphi 2010 только скомпилировался, но не запустился сплошные Access Violation. Вот и думайте, какая версия Delphi стабильнее.

Походу, проще купить мощнее комп и сразу переходить сразу на XE8, чем мучаться с глючной 2010, а потом в итоге всё равно переходить на XE8. Думаю только - почему XE8

папка

C:\Program Files (x86)\Embarcadero

занимает 21 Гб что туда такого напехали. Можно ли оттуда что нибудь удалить и вообще заставить XE8 работать побыстрее ...
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40062254
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Петровна
Вы будете удивлены, но после автоматической замены string --> AnsiString, char --> AnsiChar и т. д.

и еще парой десяткой правок вручную проект успешно скомпилировался и запустился (хоть и с кучей багов и сообщений) на Delphi XE8.

На Delphi 2010 только скомпилировался, но не запустился сплошные Access Violation. Вот и думайте, какая версия Delphi стабильнее.

Походу, проще купить мощнее комп и сразу переходить сразу на XE8, чем мучаться с глючной 2010, а потом в итоге всё равно переходить на XE8. Думаю только - почему XE8

папка

C:\Program Files (x86)\Embarcadero

занимает 21 Гб что туда такого напехали. Можно ли оттуда что нибудь удалить и вообще заставить XE8 работать побыстрее ...


не удивлен ни разу. сам переносил толстые проекты, переносится чаще всего десятокой правок. ну если код, конечно, не убитый костылями.
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40062256
makhaon

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


Правок около 100. Проект убитый костылями. Перенесся с отключением кучи функций (надо теперь постепенно восстанавливать и включать) и с кучей багов, также с эмуляцией Delphi 7 в среде XE8 (во всех функциях AnsiString и AnsiChar) - но в целом работает. Удивительно то, что на XE8 оказалось проще перенести, чем на 2010. Теперь буду думать перейти все таки на XE8 или навставлять костылей и остаться пока на D7. Вариант с D2010 точно теперь отметается, либо сразу XE8, либо оставаться на D7 и дальше городить костыли.
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40062412
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Петровна
string --> AnsiString, char --> AnsiChar
Есть у меня подозрение, что после этого исходная проблема не решится
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40062418
avp_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё хотел спросить на что влияет параметр Charset у шрифта. В каких случаях с DEFAULT_CHARSET получается криво, а с RUSSIAN_CHARSET нормально?
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40062420
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
14.04.2021 13:36, avp_ пишет:
> Всё хотел спросить на что влияет параметр Charset у шрифта. В каких случаях с DEFAULT_CHARSET получается криво, а с RUSSIAN_CHARSET нормально?

он задаёт "шифтинг" юникодных шрифтов для неюникодных приложений.
сильно упрощенно можно сказать, что у юникодного шрифта есть множество "кодовых страниц".
параметр Charset позволяет выбрать нужную "страницу".
обычно дефолтный "шифтинг" выставляется в реестре в разделе
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes.
обрати внимание на циферки после названия шрифта.

для "нерусской" винды это самый "шифтинг" будет совсем не тот, который необходим для win1251.
поэтому, при выставленном DEFAULT_CHARSET на такой винде будут крякозябры при отображении win1251.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40062437
_Vasilisk_
Анна Петровна
string --> AnsiString, char --> AnsiChar
Есть у меня подозрение, что после этого исходная проблема не решится


Разумеется, сразу и не решится. Более того, сначала багов будет еще больше. Но борьба с багами - в любом случае это неизбежный процесс при переходе на новую версию Delphi - особенно юникодную.

Но если string --> AnsiString, char --> AnsiChar не сделать то проект вообще не работает, даже с багами, так как очень много там заточено на 1-байтную кодировку - получается что лучше сделать string --> AnsiString, char --> AnsiChar при первоначальном переходе на новые Delphi, а потом уже в новой Delphi потихоньку исправлять баги и избавляться где надо от AnsiString итд.
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40062447
Еще есть идея - создать свой тип, назвать

type
string7 = AnsiString
char7 = AnsiChar

и переходить не на AnsiString, а на тип string7 - который первоначально будет = AnsiString а потом пробовать иногда его менять на string и следить за багами
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40062537
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из личного опыта скажу что пересобрать в Unicode ничего не меняя - проще, чем менять весь код на Ansi, а потом обратно.
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40062557
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Петровна,

в целом разумно, пробуй
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40062559
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker
Из личного опыта скажу что пересобрать в Unicode ничего не меняя - проще, чем менять весь код на Ansi, а потом обратно.

с нормальным кодом так и есть. но судя по описанию код там далек от идеала :) сделано абы работало. вот абы и работает
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40063242
GunSmoker
Из личного опыта скажу что пересобрать в Unicode ничего не меняя - проще, чем менять весь код на Ansi, а потом обратно.


Судя по всему, по экспериментам компиляции в разных вариантах - оказалось, в моём случае лучше всего что-то среднее.

Не менять прям всё на Ansi, а поменять на ANSI только код модулей, которые самописные и не являются модулями форм. Потому что если поменять на UTF-8 - мой код в 95% случаев перестанет работать или будет много багов, там много кода для работы с файлами и т. д. - где важно чтобы именно 1 символ строки соответствовало 1 байту и разделить код, который можно перевести на UTF-8 и который нельзя - довольно сложно - проще всё оставить на ANSI.

Код модулей форм, код, сгенерированный Delphi и всё, что связано с VCL стараться не трогать - пусть будет в Unicode.

В общем, в процессе работы проекта будет много перекодирований из Ansi в Unicode и обратно (при обращении из форм к моим самописным модулям) - но как я понимаю, это не проблема - в конце концов работать будет уж точно не хуже, чем сейчас на Delphi 7, а над багами можно работать. По алгоритмам перекодирования из Ansi в Unicode и наоборот не проблема - у меня только русский и английский - можно смело хранить в Ansi в нужной мне кодировке (Windows 1251) - а не в той однобайтной, что Windows подсунет. На крайний случай можно вообще написать свои процедуры перекодирования Ansi-->Utf8 и обратно чтобы не зависели вообще никак от системных настроек.

В общем, написать нормальный скрипт замены - который максимально - насколько это возможно - произведёт замены только там, где это нужно - чтобы можно было потом обойтись минимальным количеством правок.

Кстати, уже сейчас - когда часть кода осталась на Unicode, а мой на Ansi, глюков стало гораздо меньше.
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40063244
Кстати, спасибо за советы. С Delphi 7 тоже получилось. В 99% кода при включенной опции . Далее пишу что было сделано - на случай если кому ещё может пригодится.

"Бета-версия: Использовать Юникод (UTC-8) для поддержки языка во всем мире"/"Use Unicode UTF-8 for worldwide language support"

больше нет крякозябр. За счет добавления дополнительных костылей (получилось перехватом обращений к свойствам Text, Caption компонентов - перехватчики пришлось писать для каждого компонента свои - тк одни хранят данные в Ansi, другие в Unicode - но в целом ничего страшного и не такие уж костыли - всё вполне компонуется в один модуль - но если посчитать общее количество костылей за все годы по теме нормального отображения ANSI - можно испугаться).

Хотя если подумать - сколько усилий за последние годы было потрачено на борьбу с ветряными мельницами в виде крякозябр на разных системах (не конкретно то, что обсуждалось именно в этой теме, а вообще всё) - там целый лес из костылей - возможно, проще было сразу на юникодную версию Delphi перейти ...
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40063443
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотел помочь, но не понял вопроса.
точнее потратил время, все прочитал, советов много, но причина проблемы мне не понятна.

и так к чему я это всё, засомневался, а не выстрелит ли у меня такое, нет русских символов, а уменя тут Умляуты и Китайцы по мимо русского.

для проекта использую 2 Delphi Seattle и Berlin, и 3-й есть установленный CG2010
после успеха на 2-х двельфи, немного попробовал на CG2010, тоже успех.

сейчас в проекте использую две базы Oracle 10G и MariaDB. заказчику надо 2 базы. пофиг, делаю.

и так CHARSET в базах равен UTF8

протестировал свой софт на виртуальных машинах windowsXP, 2008R2, windows7, windows10

в итоге надпись, как в интерфейсе дельфи, так и в базе, сохранение и получение из базы в базу, даже в одном поле, полет нормальный

Language / Sprache / Язык / 语言 / 言語 / and Ümläut
но содержимое не отразилось здесь, прикрепил картинку

если Вы, Анна Петровна переводите двоичный файл и увас там терется инфа, а не русские буквы, то поиграйте между Ansistring и Widechar, я уверен быстро найдете решение.
и вместо ReplaceStr ипользуйте StringReplace
больше не чего сказать
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40063444
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

ах не, все отразилось, в предварительном не видно было
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40063729
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yemets63
для проекта использую 2 Delphi Seattle и Berlin, и 3-й есть установленный CG2010

Внезапно! Софт на юникодной среде корректно отображает юникод, вот это поворот ))
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40063777
yemets63

если Вы, Анна Петровна переводите двоичный файл и увас там терется инфа, а не русские буквы, то поиграйте между Ansistring и Widechar, я уверен быстро найдете решение.
и вместо ReplaceStr ипользуйте StringReplace
больше не чего сказать


Проблемы только в интерфейсе, в отображении русских букв в интерфейсе Windows.

С файлами никаких проблем нет - более того, используются свои форматы файлов - при разработке форматов - разумеется, предполагалось, что русские буквы записываются в кодировке Ansi. Можно, конечно, всё тупо перенести на Юникод - но это будет потеря обратной совместимости.

Усложнять без необходимости не хочется - поэтому придётся по умолчанию всю внутреннюю логику оставить в ANSI - а при обращениях к VCL - использовать Unicode. Полностью ПО переводить на Юникод имеет смысл - если продавать ПО за границу - чтобы могли использоваться языки, отличные от русского и английского (а если варианты только русский или английский то и ANSI сойдёт).
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40064933
UPD. При переходе всё работает с минимальными багами, хотя баги ещё есть. При переходе на XE8 - как оказалось, многие костыли - которые были в D7 - оказались и не нужны - поэтому собственно эти костыли не надо и переносить.

Например, некорректная отрисовка некоторых элементов (TDateTimePicker, например) больше не требует костылей для исправления - так как отрисовывается всё нормально без костылей. То, что модальные формы после сворачивания/разворачивания гуляют с переднего фона на задний как захотят - похоже, в Delphi XE8 тоже решено.

Не говоря про проблемы с Unicode - тут нагороженные костыли скорее мешают.

Для использования private-переменных классов (если уж нужен такой костыль) - не обязательно копировать файл класса целиком себе в проект и его менять - можно использовать Helper-ы. Но придётся отказаться от Delphi XE10 - разработчики Delphi решили, что это баг и такую возможность закрыли. В XE8 ещё можно это использовать нормально.

Размер Delphi XE8 - тоже, в принципе, уменьшается и не так много занимает - достаточно зайти в папку Program Files\Embarcadero - и снести всё лишнее - например - то, что относится к Linux и Android и прочее.
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40064963
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Петровна
и снести всё лишнее
А зачем лишнее устанавливать?
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40064985
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему именно xe8? Более новой, бесплатной Community Edition не хватает?
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40065061
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
white_nigger
А почему именно xe8? Более новой, бесплатной Community Edition не хватает?

В 10 закрыли доступ из хелперов к приватным полям. Но в какой именно, не помню
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40065091
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
В 10 закрыли доступ из хелперов к приватным полям. Но в какой именно, не помню

Закрыли, но не до конца. Лазеечка осталась :)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  type
    TComponentHelper = class helper for TComponent
    public
      procedure _SetComponentState(AState :TComponentState);
    end;

  procedure TComponentHelper._SetComponentState(AState :TComponentState);
  begin
//  Self.FComponentState := AState;
    with Self do
      FComponentState := AState;
  end;
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40065169
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Rusov
Закрыли, но не до конца. Лазеечка осталась :)

Да, знаю про такую, но вроде в 10.4 и это прикрыли, или собираются
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40065174
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

Пока - работает.
...
Рейтинг: 0 / 0
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
    #40065383
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Rusov,

Однако, надо отписать товарищу майору.))
...
Рейтинг: 0 / 0
25 сообщений из 175, страница 7 из 7
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]