Delphi运行开始出现问题

秋天之落叶 2019-03-03 10:44:44
神舟笔记本,win10,64位。
以前运行1803版本,安装Delphi10.3+cnpack+ehlib+XLSReadWriteII一切正常。
清理系统,升级为1809版本后,原样安装,编译运行时出现错误,原因不明,网上也没有同样的问题。
单独运行一个简单的实例运行,同样出现类似错误。
去掉cnpack+ehlib+XLSReadWriteII单独运行delphi,错误依旧。
网上查到2018年论坛有10.2+cnpack这样的问题,但cnpack论坛没有给出答案。从其他帖子中看到,可能是和谐后的问题。
最后判断是和谐问题,但不知道该如何解决。
其他大神有类似问题吗?
...全文
1366 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjl333 2019-03-27
  • 打赏
  • 举报
回复
新的系统都是小白鼠,一路跌打滚爬。。。。
秋天之落叶 2019-03-13
  • 打赏
  • 举报
回复
测试了一下,不是这个自定义函数的问题,多线程调用的问题
秋天之落叶 2019-03-13
  • 打赏
  • 举报
回复
引用 15 楼 看那山瞧那水 的回复:
10.3.1+cnpack ,windows1809一般没什么问题啊,只是在FMX下,关闭Style设计器,我的电脑会经常发生灾难性错误...........

我的系统目前还没有类似问题,当然,我也还没有使用过FMX
秋天之落叶 2019-03-13
  • 打赏
  • 举报
回复
引用 14 楼 早打大打打核战争 的回复:
你新建一个空项目,只一个按钮,点击调用你的自定义函数,看看还有没有问题

只有在家里才能测试,昨晚光顾着喝酒了,没顾上测试,今天回去测试
就是这个函数,简单的不能再简单了
// 获取服务器的时间
function TForm1.xtsj: TDateTime;
begin
dm1.ADOQuery1.Close;
dm1.ADOQuery1.SQL.Clear;
dm1.ADOQuery1.SQL.Add('select getdate() as 时间');
dm1.ADOQuery1.Open;

Result := dm1.ADOQuery1.FieldByName('时间').AsDateTime;
end;
原来引用SysUtils,函数要加上SysUtils.DateTimeToStr(xtsj)才能正常使用,改用System.SysUtils就不用加前缀了。
秋天之落叶 2019-03-12
  • 打赏
  • 举报
回复
你们的笔记本上没有这个问题吗?
笔记本是神舟i5-8400处理器
我怀疑和新的CPU有关系。我的PC机是i5-750,老版本CPU
看那山瞧那水 2019-03-12
  • 打赏
  • 举报
回复
10.3.1+cnpack ,windows1809一般没什么问题啊,只是在FMX下,关闭Style设计器,我的电脑会经常发生灾难性错误...........
  • 打赏
  • 举报
回复
你新建一个空项目,只一个按钮,点击调用你的自定义函数,看看还有没有问题
秋天之落叶 2019-03-11
  • 打赏
  • 举报
回复
引用 11 楼 lyhoo163 的回复:
还没有解决?????????

10.3.0升级到10.3.1还是如此的错误,同样的代码,在PC机上win1803和1809都没问题,在笔记本上两个版本都提示错误。
错误停在一个引用系统时间的自定义函数,尝试着修改了一下代码,把引用部分修改为today,则不再出现错误。
单独运行自定义函数没有问题,又怀疑是多线程引起的错误,将多线程修改为timer则问题解决,但是主窗体和登录窗体会同时出现。修改工程文件先创建登录窗体可以解决,但是又面临着将创建主窗体上的很多代码移植问题,这叫一个乱啊。
同时,timer并不是真的多线程,在连接数据库错误时也会长时间假死,只能有换回多线程。
反正我现在是晕的乱七八糟的了,慢慢的改吧。
我怀疑,delphi新旧版本的编译机制存在差异,或者新CPU和老CPU的运行机制有差异,但又说不上是哪里的问题。
lyhoo163 2019-03-10
  • 打赏
  • 举报
回复
还没有解决?????????
jakefj 2019-03-05
  • 打赏
  • 举报
回复
cnpack卸掉看看.
lyhoo163 2019-03-05
  • 打赏
  • 举报
回复
新版本的使用,犹如吃螃蟹。
  • 打赏
  • 举报
回复
新出的10.3.1,之前的10.3有一个C++ Toolchain Hotfix
秋天之落叶 2019-03-05
  • 打赏
  • 举报
回复
引用 7 楼 jakefj 的回复:
cnpack卸掉看看.

反复试过,Cnpack的某一个软件可能和和谐文件有冲突,安装时已经和谐好的系统,一安装Cnpack马上就要重新和谐,新笔记本上这样,旧PC机上没问题。
个人猜测,新的CPU是不是有哪些功能不支持了,导致cnpack和delphi有冲突。Cnpack网站管理人员说需要补丁,XE10.3好像还没有补丁系列吧。
秋天之落叶 2019-03-03
  • 打赏
  • 举报
回复
错误信息: First chance exception at $00E9DAAA. Exception class $C0000005 with message 'access violation at 0x00e9daaa: read of address 0x0000006c'.
秋天之落叶 2019-03-03
  • 打赏
  • 举报
回复
目前,PC机1803版本,一切正常。
秋天之落叶 2019-03-03
  • 打赏
  • 举报
回复
uses
Windows, Messages, System.SysUtils,......
......
// 获取系统时间
function xtsj: TDateTime;
......
dm1.SaveDialog1.FileName := 'data_hyzx_' + FormatDateTime('YYYYMMDD', xtsj);
...
dm1.SaveDialog1.FileName := '单字录入文件_' + FormatDateTime('YYYYMMDD_hhnnss', xtsj);
...
dm1.ADOQ监督.FieldByName('完成时间').Value := FormatDateTime('yyyy/MM/dd', xtsj);
...
sj := xtsj;
...
sj := DateTimeToStr(xtsj);
...
StatusBar1.Panels[5].Text := '【登录时间】 ' + DateTimeToStr(xtsj) + ' ' + getweek(Now);
...
// 获取服务器的时间
function TForm1.xtsj: TDateTime;
begin
dm1.ADOQuery1.Close;
dm1.ADOQuery1.SQL.Clear;
dm1.ADOQuery1.SQL.Add('select getdate() as 时间');
dm1.ADOQuery1.Open;

Result := dm1.ADOQuery1.FieldByName('时间').AsDateTime;
end;
原来引用SysUtils,函数要加上SysUtils.DateTimeToStr(xtsj)才能正常使用,改用System.SysUtils就不用加前缀了。
----
各位大神给诊断一下,在笔记本上,原来单元引用SysUtils报错,改用System.SysUtils不报错了,但是主窗体和登录窗体同时显示了,登陆后,一切正常了。原来登录窗口显示后,主窗体就看不到了。
同样的代码,全部考到PC机上,就一切正常。
procedure TForm1.FormShow(Sender: TObject);
begin
Form2.ShowModal;
end;
今天我的头有点大,当然,不用笔记本也行,就是不甘心,这是为什么呢?
秋天之落叶 2019-03-03
  • 打赏
  • 举报
回复
引用 3 楼 BlueStorm 的回复:
看看电脑是不是中毒了

应该不是,我格式化笔记本,装完系统就装sql2014,然后装XE10.3和第三方插件。


引用 4 楼 lyhoo163 的回复:
新版本,往往支持上有风险。

确实是,我都想退回10.2了,教训啊。

我把笔记本退回1803版本,还是不行,难道是我安装的系统有问题,笔记本刚买来,我安装10.2是没有问题的。

刚才我步进了一下,发现是一个获取系统时间的自定义函数的问题,SysUtils单元引用的几个函数,都指向这个自定义函数,正在检查中。
lyhoo163 2019-03-03
  • 打赏
  • 举报
回复
新版本,往往支持上有风险。
BlueStorm 2019-03-03
  • 打赏
  • 举报
回复
看看电脑是不是中毒了

829

社区成员

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

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