Einzelnen Beitrag anzeigen

JohannesK

Registriert seit: 17. Jul 2003
Ort: Abtwil
118 Beiträge
 
Delphi 2010 Professional
 
#1

Problem mit LoadString bei 64 bit

  Alt 26. Jul 2011, 12:24
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) = 'dethen lng := 1;
  if lowercase(lang) = 'enthen lng := 2;
  if lowercase(lang) = 'frthen lng := 3;
  if lowercase(lang) = 'spthen 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
mit freundlichem Gruss

So einfach wie möglich. Aber nicht einfacher.
  Mit Zitat antworten Zitat