我现在只解决了正确显示字符串的问题:var hRes:Thandle;
// pRes: pointer; ***************
pRes: Cardinal;
ResSize:integer;
i:integer;
{$IFDEF WIN32}
s:shortstring;
{$ELSE}
s:string;
{$ENDIF}
begin
hRes:=FindResource(hInstance,'MYUSERDATA','MYDATATYPE');
if hRes=0 then
begin
showMessage('没有找到资源文件!');
exit;
end;
ResSize:=SizeOfResource(hinstance,hRes);
if ResSize=0 then
begin
showmessage('没有装载任何资源!');
exit;
end;
// pRes:=LockResource(hRes); ****************
pRes:=LoadResource(hInstance, hRes);
if pRes=0 then
begin
showmessage('资源装载失败!');
FreeResource(pRes);
exit;
end; s:='';
i:=0;
while(i<ResSize) do
// while pChar(p1)[i]<>'!' do ************
begin
s:=s+pChar(pRes)[i];
inc(i);
end; showMessage(s);
// UnLockResource(hRes); *************
FreeResource(pRes);
end;
另外,你提供的文本中无!,有怎能以!为结束标记?
// pRes: pointer; ***************
pRes: Cardinal;
ResSize:integer;
i:integer;
{$IFDEF WIN32}
s:shortstring;
{$ELSE}
s:string;
{$ENDIF}
begin
hRes:=FindResource(hInstance,'MYUSERDATA','MYDATATYPE');
if hRes=0 then
begin
showMessage('没有找到资源文件!');
exit;
end;
ResSize:=SizeOfResource(hinstance,hRes);
if ResSize=0 then
begin
showmessage('没有装载任何资源!');
exit;
end;
// pRes:=LockResource(hRes); ****************
pRes:=LoadResource(hInstance, hRes);
if pRes=0 then
begin
showmessage('资源装载失败!');
FreeResource(pRes);
exit;
end; s:='';
i:=0;
while(i<ResSize) do
// while pChar(p1)[i]<>'!' do ************
begin
s:=s+pChar(pRes)[i];
inc(i);
end; showMessage(s);
// UnLockResource(hRes); *************
FreeResource(pRes);
end;
另外,你提供的文本中无!,有怎能以!为结束标记?
TempStream:=TMemoryStream.Create;
TxtRes.SaveToStream(TempStream);
TempStream.Position := 0;
Memo1.Lines.LoadFromStream(TempStream);
TxtRes.Free;
TempStream.Free;