Hallo,
ich habe ein Problem mit LoadString in 64-bit Windows.
Delphi-Quellcode:
class procedure TResourceMeldung.GetResMeldung(var ResMeldung: TStringlist; Offset : integer; lang: string);
var
buffer : array[0..MaxBuffer] of char;
ls : integer;
idx, lng : integer;
maxPos : integer;
begin
if lowercase(lang) = 'de' then lng := 1;
if lowercase(lang) = 'en' then lng := 2;
if lowercase(lang) = 'fr' then lng := 3;
if lowercase(lang) = 'sp' then lng := 4;
ls := GetOffset(lng);
maxPos := GetMaxPos(offset);
if ls = 0 then exit;
for idx := ls to ls+MaxPos do
begin
ResMeldung.Add(GetString(Offset + idx));
end;
end;
class function TResourceMeldung.GetOffset(lg: integer): integer;
var
buffer : array[0..MaxBuffer] of char;
ls : integer;
begin
Result := 0;
ls := LoadString(hInstance, lg, buffer, sizeof(buffer));
if ls <> 0 then
begin
Result := strtoint(buffer);
end;
end;
Funktioniert in
WIN32 ohne jedes Problem, als Wert für deutsch wird korrekt 1000 aus dem Ressourcenfile zurückgeliefert, SizeOfBuffer ist 4.
WIN64 liefert ???, sowohl Server 2008 wie Win7 Home, SizeOfBuffer ist 3.
Bin dankbar für jeden Hinweis, da beim suchen nicht wirklich fündig geworden.
Johannes