一个类型转换的问题

dengwei1116 2002-10-11 10:04:51
var
iFileHandle: Integer;
iFileLength: Integer;
ConnectionStrBuf:PChar;
..........
ConnectionStrBuf:=PChar(AllocMem(iFileLength+1));
FileRead(iFileHandle, ConnectionStrBuf^, iFileLength);
FileClose(iFileHandle);
SPSADOConnection.ConnectionString:= ConnectionStrBuf;

showmessage(SPSADOConnection.ConnectionString);//这里发现了只赋了一个字符
..........

我想ConnectionStrBuf是PChar型,怎么才能把它的内容赋给一个widestring型?
...全文
25 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengwei1116 2002-10-13
  • 打赏
  • 举报
回复
blazingfire(烈焰):谢谢您,问题解决了
blazingfire 2002-10-13
  • 打赏
  • 举报
回复
你的代码中:
SPSADOConnection.ConnectionString:= ConnectionStrBuf;
改为:
SPSADOConnection.ConnectionString:=WideString(ConnectionStrBuf);
var
ConnectionStrBuf:PChar;
改为:
ConnectionStrBuf:PWideChar;

blazingfire 2002-10-13
  • 打赏
  • 举报
回复
var
iFileHandle: Integer;
iFileLength: Integer;
ConnectionStrBuf:WideString;
.....
SetLength(ConnectionStrBuf,iFileLength);
FileRead(iFileHandle, ConnectionStrBuf[1], iFileLength);
FileClose(iFileHandle);
SPSADOConnection.ConnectionString:= ConnectionStrBuf;
ShowMessage(SPSADOConnection.ConnectionString);
dengwei1116 2002-10-13
  • 打赏
  • 举报
回复
to Hillside(要命的是买不到D盘了):

还是不行,用messagebox打印connectionstrbuf里面的内容还是只有第一个字符
Hillside 2002-10-12
  • 打赏
  • 举报
回复
GetMem(ConnectionStrBuf,iFileLength+1);
try
FileRead(iFileHandle, ConnectionStrBuf^, iFileLength);
FileClose(iFileHandle);
ConnectionStrBuf[iFileLength]:=#0;
SPSADOConnection.ConnectionString:= String(ConnectionStrBuf);
finally
FreeMem(ConnectionStrBuf);
end;
Hillside 2002-10-12
  • 打赏
  • 举报
回复
try
GetMem(ConnectionStrBuf,iFileLength+1);
FileRead(iFileHandle, ConnectionStrBuf^, iFileLength);
FileClose(iFileHandle);
ConnectionStrBuf[iFileLength]:=#0;
SPSADOConnection.ConnectionString:= String(ConnectionStrBuf);
finally
FreeMem(ConnectionStrBuf);
end;

cnsuyong 2002-10-11
  • 打赏
  • 举报
回复
var
P: PChar;
W: WideString;
S: string;
begin
S := 'PChar needs to be allocated memory before using it.'#13#10 +
'You should call FreeMem to dispose its memory, too.';
GetMem(P, 200);
StrLCopy(P, @S[1], 200);
W := P;
ShowMessage(W);
FreeMem(P);
end;
dengwei1116 2002-10-11
  • 打赏
  • 举报
回复
好象不行啊
naughtyboy 2002-10-11
  • 打赏
  • 举报
回复
用Strpas试试

5,931

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧