StrPCopy的问题,在线等答案。。。

redlegend_126_com 2012-07-06 11:07:40
这个代码运行会报错,

Access violation at address 00404F22 in module 'Project1.exe'. Read of address 63580013.

请高手告知原因???


procedure TForm1.btn1Click(Sender: TObject);
var
R: TRect;
S: string;
temp: array[0..50] of Char;
begin
R := Rect(20, 20, 150, 30);
S := 'This is a very long string which will' +
'run into multiple lines of text.';
{ 采用StrPCopy函数转化string类型为PChar类型}
DrawText(Canvas.Handle, StrPCopy(temp, S), -1, R, DT_CALCRECT or DT_WORDBREAK);
Canvas.Brush.Style := bsSolid;
Canvas.Rectangle(R);
Canvas.Brush.Style := bsClear;
DrawText(Canvas.Handle, StrPCopy(temp, S), -1, R, DT_WORDBREAK);
end;


...全文
193 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2012-07-06
  • 打赏
  • 举报
回复
目的串容量也不够
onlyou13 2012-07-06
  • 打赏
  • 举报
回复
哦,是你的temp太小了。 S的长度为69, temp才51
onlyou13 2012-07-06
  • 打赏
  • 举报
回复
StrPCopy(@temp[0], pchar(S))

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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