各位大侠,帮忙看一下以下代码:begin
MyStream:=TMemoryStream.Create();
try
//Load
try
myStream.LoadFromFile(FFileName);
except
result:=-1;
Exit;
end; Size:=MyStream.Size; GetMem(buffer,Size);
try
myStream.Position:=0;
myStream.ReadBuffer(buffer^,size);
Text:=StrPas(buffer); //这一句转变,不过转变后的结果不是预期的结果 ......
......
finally
FreeMem(buffer);
end;
......
......在上面的代码中,我希望将Buffer转变成Text(String类型),可是结果不是预期的结果。请指教!谢谢
MyStream:=TMemoryStream.Create();
try
//Load
try
myStream.LoadFromFile(FFileName);
except
result:=-1;
Exit;
end; Size:=MyStream.Size; GetMem(buffer,Size);
try
myStream.Position:=0;
myStream.ReadBuffer(buffer^,size);
Text:=StrPas(buffer); //这一句转变,不过转变后的结果不是预期的结果 ......
......
finally
FreeMem(buffer);
end;
......
......在上面的代码中,我希望将Buffer转变成Text(String类型),可是结果不是预期的结果。请指教!谢谢
TDXChatMessage = record
dwType: DWORD;
Len: Integer;
C: array[0..0] of Char;
end;procedure TCDMessengerClass.OnMessage(Sender: TObject; From: TDXPlayPlayer;
Data: Pointer; DataSize: Integer);
var
s: string;
begin
// 获得聊天内容;
case DXPlayMessageType(Data) of
DXCHAT_MESSAGE:
begin
if TDXChatMessage(Data^).Len<=0 then
s := ''
else begin
SetLength(s, TDXChatMessage(Data^).Len); ///<----这里
StrLCopy(PChar(s), @TDXChatMessage(Data^).c, Length(s)); ///<----这里
end;
//Setxml(ExtractFilePath(Application.EXEName)+'myxml\talkdata.xml','talkForm','talkmanList',From.Name,S);
writeHtml(ExtractFilePath(Application.EXEName)+'talking.html','<strong>'+From.Name+':</strong>'+S,'#FF0000','9'); //MessengerForm.WebBrowser1.Refresh;
MessengerForm.WebBrowser1.Navigate(ExtractFilePath(Application.EXEName)+'talking.html');
MessengerForm.WebBrowser1.OleObject.document.parentWindow.scrollTo(0, MaxInt);
end;
end;
end;就可以把pChar转成String
var
fs:TFileStream;
size:int64;
buff:pchar;
text:string;
begin
fs:=TFileStream.Create('c:\autoexec.bat',fmopenread or fmsharedenynone); //autoexec.bat 则正确,command.com则不是预期的效果
size:=fs.Size;
getmem(buff,size);
fs.Position:=0;
fs.ReadBuffer(buff^,size);
text:=strPas(buff);
showMessage(text);
freemem(buff);
fs.Free;
end;
有问题请发信息到我的E-mail:[email protected]