procedure LoadRES(RESName: string);
var
hRes: THandle;
pRes: pointer;
Loader: TStrings;
begin Loader := TStringList.Create;
Loader.Clear;
hRes := FindResource(hInstance, pchar(RESName), 'TXT');
hRes := LoadResource(hInstance, hRes);
pRes := LockResource(hRes); Loader.Text := pchar(pRes);
ShowMessage(Loader.Text) // d2010 显示 乱码 UnLockResource(hRes);
FreeResource(hRes);
end;
.rc 内容 如下 CNMarc TXT CNMarc.txt
USMarc TXT USMarc.txt不知道是哪里的原因 难道是pchar
pchar改為pansichar;
procedure TForm2.Button1Click(Sender: TObject);
var
str: AnsiString;
begin
str := '中华人民共和国';
ShowMessage('长度:' + IntToStr(Length(str)));
ShowMessage('位置:' + IntToStr(AnsiPos('民', str))); // 换为pos还是返回4
end;
摘自 网上http://blog.csdn.net/sunstone/archive/2009/10/22/4711487.aspx
Delphi 只是一个工具,遇到 bug 自己动手解决才是正途,
自己写一个函数也是一样:procedure TForm1.Button1Click(Sender: TObject);
function AnsiPos(const Substr, S: Ansistring): Integer;
var
P: PAnsiChar;
begin
Result := 0;
P := AnsiStrPos(PAnsiChar(S), PAnsiChar(Substr));
if P <> nil then
Result := Integer(P) - Integer(PAnsiChar(S)) + 1;
end;var
i: Integer;
begin
i := AnsiPos('民', '中华人民共和国');
ShowMessage(IntToStr(i)); //不再是 4,显示为 7
end;