将一个结构体变量,赋值给另一个相同类型结构体变量,会出现莫名错误,提示地址访问错误,

annhoo 2017-10-04 10:19:59
如题
本人用Delphi7使用结构体(record)类型,赋值的时候有时候成功有时候失败?很是不解,不知大家是否遇到过这样的情况。难道说是Delphi的bug还是需要注意那些问题?
...全文
1571 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
doloopcn 2017-10-05
  • 打赏
  • 举报
回复
简单的常量变量是不会有什么问题 但你的结构体中有需要初始化的指针、OBJECT等,就要先初始化 结构体中的资源回收时,要考虑共享冲突
annhoo 2017-10-05
  • 打赏
  • 举报
回复
问题找到了,呵呵 原因: 在于结构体定义的时候的 string 改成 string[xx] 就可以了。 还是不全是常数。疏忽了。麻烦大神们忙里偷闲帮兄弟一把。谢谢!
annhoo 2017-10-05
  • 打赏
  • 举报
回复
var vRec1 : TCRec; VRec1 := AClass.MyCRec; //一旦执行此语句就报错。MyCRec的定义也是用相同的TCRec定义的,其他类中的成员。 我用sizeof赋值的左右两边数值也是一样的。 之前遇到过一次从文件里面读取数据结构赋值变量也出现过,后来统一了size后就ok了。那个结构更简单就是一些string。 现在是两个变量之间的的直接赋值,反而不行了。呵呵,诡异呀!
lyhoo163 2017-10-05
  • 打赏
  • 举报
回复
你的结构,基本还是简单的结构。如果AClass.MyCRec的结构是TCRec,不应该有问题的。 注意二个变量之间正常赋值,需要同一类型来定义他们。
annhoo 2017-10-05
  • 打赏
  • 举报
回复
TARec = record Id: Byte; Name: string[2]; end; TBRec = record Name: string[10]; Codes: array[0..100] of TARec; Id1: Integer; Id2: Integer; Code1: string; Code2: string; Count1: Integer; Count2: Integer; Count3: Integer; end; TCRec = record Name: string[20]; Count: Integer; Id: Integer; Parts: array[1..100] of TBRec; end; 以上是我的结构 出错例子: var vRec1 : TCRec; VRec1 := AClass.MyCRec; //一旦执行此语句就报错。 就是您说的常量的定义,没有包括动态生成的内容。
annhoo 2017-10-04
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/10033219?list=lz 类似这个问题,不过我的有时候可以,有时候出错。 简单的结构没事,如果结构复杂就问题来了。 有人如此用么?谢谢。

16,748

社区成员

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

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