Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2020, 08:34   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Загрузка файла из ресурса с кириллицей в ResName

Доброго времени суток!
Есть *.rc-файл
Код:
А txt "Words\Rus\А.txt"
Б txt "Words\Rus\Б.txt"
В txt "Words\Rus\В.txt"
Г txt "Words\Rus\Г.txt"
Д txt "Words\Rus\Д.txt"
Код:
...
CurrentWord: string;
...
TxtStream := TResourceStream.Create(HInstance, PChar(CurrentWord), 'txt');
...
Имя ресурса на кириллице. Это работало в Delphi 7, в Delphi 10.1 из-за ввода Unicode стало вызывать ошибку: ресурс не найден.
Shouldercannon вне форума Ответить с цитированием
Старый 28.09.2020, 08:39   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

а где у вас указано, какой именно из пяти ресурсов вы вызываете? А, Б, В, Г или Д?
попробуйте в качестве вызываемого имени использовать это - Chr(ваша буква), может, тогда сработает...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 28.09.2020, 11:09   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
а где у вас указано, какой именно из пяти ресурсов вы вызываете? А, Б, В, Г или Д?
Весь русский алфавит (33 кнопки). Проект очень старый и не оптимизирован.
попробуйте в качестве вызываемого имени использовать это - Chr(ваша буква), может, тогда сработает...
Весь русский алфавит (33 кнопки). Проект очень старый и неоптимизированный.
Код:
procedure TForm1.BRAClick(Sender: TObject);
begin
  CurrentWord := 'А';
  Obrabotka;
end;
...
procedure TForm1.Obrabotka;
var
  TxtStream: TResourceStream;
  data: TStrings;
begin
  data := TStringList.Create;
  TxtStream := TResourceStream.Create(HInstance, PChar(CurrentWord), 'txt'); // Char - E2089 Invalid typecast
  data.LoadFromStream(TxtStream);
  FreeAndNil(TxtStream);
end;

Последний раз редактировалось Shouldercannon; 28.09.2020 в 11:18.
Shouldercannon вне форума Ответить с цитированием
Старый 29.09.2020, 09:09   #4
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

ну, если неохота мучаться со старыми проектами и разбираться с кириллицей, тогда проще в файле ресурсов заменить кириллические буквы на их номера в алфавите. типа так:
1 txt "Words\Rus\1.txt"
2 txt "Words\Rus\2.txt"
3 txt "Words\Rus\3.txt"
4 txt "Words\Rus\4.txt"
5 txt "Words\Rus\5.txt"
....
до 33 буквы Я
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 29.09.2020, 09:28   #5
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
тогда проще в файле ресурсов заменить кириллические буквы на их номера в алфавите.
Лучше на коды из таблицы ASCII. Так обращаться к ним будет намного проще.
BLACK_RAIN вне форума Ответить с цитированием
Старый 29.09.2020, 21:37   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
Лучше на коды из таблицы ASCII. Так обращаться к ним будет намного проще.
С этим тоже не всё просто.
Решение: взятие Caption кнопки с кириллицей.
А - #1040; Б - #1041; В - #1042 и т.д.
Shouldercannon вне форума Ответить с цитированием
Старый 29.09.2020, 21:59   #7
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

я вот понимаю, что картинку, иконку, курсор, звук, файл, библиотеку, шрифт из ресурса берут. но чтоб буквы из ресурса или слова/текст... конечно, я не видел проект полностью и не знаю его особенностей, но кажется странным...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 30.09.2020, 07:35   #8
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
С этим тоже не всё просто.
почему?
BLACK_RAIN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка шрифтов из ресурса BARS1991 C++ Builder 8 29.10.2014 11:12
Загрузка ресурса в RichEdit Volkogriz Общие вопросы Delphi 3 05.06.2014 08:57
Загрузка стороннего ресурса, node.js Naive Общие вопросы Web 0 29.11.2013 12:05
загрузка в Image JPEG-файл из ресурса casio23 Мультимедиа в Delphi 1 10.02.2012 02:23
loadimage и загрузка изображение из ресурса fate Общие вопросы Delphi 11 10.08.2011 10:47