Загрузка текста из файла ресурсов (.res) - PullRequest
1 голос
/ 14 января 2012

Я нашел этот урок несколько дней назад и последовал ему. Поскольку меня интересует только загрузка текста из файла ресурсов, я использовал только то, что мне нужно. Код можно найти из учебника можно найти здесь . Примечание. Я использую код из функций GetResourceAsPointer и GetResourceAsString . У меня есть:

  • создан файл ресурса, который содержит один текстовый файл. Текстовый файл содержит «тест»
  • включено {$ R resource.res}

Примечание: я использую памятку для загрузки строки из ресурса.

Программа способна компилироваться без каких-либо ошибок, но когда я нажимаю кнопку, чтобы загрузить строку в заметку, загружается строка, но не "тест". Вместо этого я получаю случайные символы, такие как квадраты и китайские символы.

Кто-нибудь знает, в чем может быть проблема? Кто-нибудь испытывал это раньше?

Спасибо заранее, Питер

Ответы [ 2 ]

2 голосов
/ 15 января 2012

Я использую следующие две подпрограммы для получения текста из ресурсов, добавленных в EXE: одна подпрограмма для строк ANSI и одна для строк Unicode.Ваши случайные символы могут быть вызваны тем, что вы прочитали больше символов, чем необходимо.

Function GetResString (i, lang: integer): string;
var
 buffer: array [0..400] of char;
 ls: integer;

begin
 result:= '';
 ls:= loadstring (hinstance, i + lang * 1000, buffer, sizeof (buffer));
 if ls <> 0 then result:= buffer
end;

function LoadResW (id, lang: integer): WideString;
const
 maxlength = 1024;

var
 ls: integer;

begin;
 setlength (result, maxlength);
 ls:= loadstringw (hinstance, lang * 1000 + id,
 pwidechar (result), length (result));
 if ls > 0
  then setlength (result, ls)
  else result:= ''
end;
1 голос
/ 14 января 2012

В какой кодировке находится текстовый файл, который вы кладете на ресурс?Если ANSI, попробуйте сохранить его как Unicode (GetResourceAsString из статьи использовать PChar тип).

...