Я использую следующие две подпрограммы для получения текста из ресурсов, добавленных в 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;