崩溃了,大家帮忙看看

tjj5203 2010-06-01 05:17:39

DataModule2.MeterQuery.Edit;
Str:=LedParaGet;
ShowMessage(IntToStr(Length(str)));//这里是48
DataModule2.MeterQuery.FieldByName('LedPara').AsString:=str;
DataModule2.MeterQuery.Post;
ShowMessage(IntToStr(Length(DataModule2.MeterQuery.FieldByName('LedPara').AsString)));//这里变2

为什么会这样呢。。。。。。如果我把str:='aaaaaaaaaaaaaaaaaaa';那么一切正常。
...全文
168 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjj5203 2010-06-02
  • 打赏
  • 举报
回复
我一开始也是这么猜测的,但是,str同样是string类型的,我读str就能正常读出所有数据
是不是数据库中的string直接是以#0作为结束符,而delphi中的string保存了长度,所以不以#0结束呢
SuperTitan002 2010-06-02
  • 打赏
  • 举报
回复
#0被认为是string的结束符,结束了

把#0转换为'00'保存吧
tjj5203 2010-06-02
  • 打赏
  • 举报
回复
str中的40多个字节
F8 03 F9 03 EF 03 F8 03 F8 03 F9 03 F8 03 F8 03 F8 03 F8 03 EF 03 EF 03 EF 03 B5 00 60 00 F9 03 F8 03 F8 03 EF 03 F8 03 EF 03 F8 03 00 00 00

post后
DataModule2.MeterQuery.FieldByName('LedPara').AsString读出的字节
F8 03 F9 03 EF 03 F8 03 F8 03 F9 03 F8 03 F8 03 F8 03 F8 03 EF 03 EF 03 EF 03 B5
从00 60后丢失了
SuperTitan002 2010-06-02
  • 打赏
  • 举报
回复
你把数据读出来,看看记录位置有没有变化,数据有没有写下去啊

你不调试的啊?
tjj5203 2010-06-02
  • 打赏
  • 举报
回复
同样的代码今天又从2变28了。。。。。。想死的心都有了
另外TO8楼的,放post前后没变化
孤独de猫 2010-06-02
  • 打赏
  • 举报
回复
你是要将什么数据,存储到数据库中?字符,还是字符的长度???
xinghun61 2010-06-02
  • 打赏
  • 举报
回复
可能是数据库字符集设置和Delphi软件的设置不一样导致的吧,在MySQL中,可以用
show variables like "c%"
来查看相关设置
具体分为3种字符集
1. 客户端字符集
2. 连接字符集
3. 数据库字符集
如果这些设置不一样,在提交到数据库中时,系统会自动进行类型转换,这种转换可能会造成数据异常
不担心 2010-06-01
  • 打赏
  • 举报
回复
把showmessage放在post语句的前面试看看
应该是post后数据集滚动了
SuperTitan002 2010-06-01
  • 打赏
  • 举报
回复
是不是触发了别的事件记录位置发生了变化?
存盘后把数据取出来看看
yshuui 2010-06-01
  • 打赏
  • 举报
回复
在工程文件中:
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
把 Application.CreateForm(TDataModule2, DataModule2);放到其它窗口创建后试试。
iqyely 2010-06-01
  • 打赏
  • 举报
回复
关注下。
tjj5203 2010-06-01
  • 打赏
  • 举报
回复
1,2楼的都不是,所以我才郁闷了。。。。。。
tjj5203 2010-06-01
  • 打赏
  • 举报
回复
我的长度设置了150。。。。。。。。。。
guanking 2010-06-01
  • 打赏
  • 举报
回复
两个地方,
一个数据库中表设计,字段定义的长度,如char(50).
其次是ADOQuery或ADOdataset中,添加了fields列表,一般双击ADOQuery控件,就会弹出显示fields列表的界面,点中一行,在属性栏中修改其size超过48即可。
bdmh 2010-06-01
  • 打赏
  • 举报
回复
看看你的字段是不是做了长度限制,只能存储2个长度啊

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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