同样的源码,2个人编译出来的文件大小一样,一个能正常,一个不能用!delphi版本一模一样,安装的控件也一模一样!所以,我们两人是折腾了几天了,无法解决,请大神给点思路!

解决方案 »

  1.   

    补充:我们用的操作系统都是win1064位,为了这个问题,系统做了不下5遍,换了N个操作系统版本,delphi也安装了无数次,包括控件!其他程序都是一样的,都正常,就一个人物网关,他编译的能正常登陆,我编译的就断开!非常诡异的事情,我们也算是非常熟悉D的人了。。竟然第一次遇到这样的事情。。求解!
      

  2.   

    我前段时间发过一个帖子,台式机编译运行一切正常,就是在神船的新笔记本上,编译后,运行一场,主要是窗体显示异常,也同时发给坛友运行也正常,就是在神船笔记本上异常,都解决不了。
    远离神船,珍爱生命!
    我一直怀疑,硬件和这个有关,比如CPU缺陷,可惜没有什么证据。
      

  3.   

    把两台电脑编译的exe文件二进制比较看有无字节不同,必须同一个项目文件,同一个版本delphi。估计是运行环境问题。
      

  4.   

    编译没问题的exe,发给你在你电脑运行正常不?
      

  5.   

    编译的exe在我自己电脑和服务器都测试过,我编译的都不能用,编译没问题的,都可以用,所以说太诡异了,编译的汇编文件我用文本对比器对比过,指令都相同,除了几个地方的注释显示不同,继续求解中
      

  6.   

    windows 10 的话是这样,我原来有个程序 运行一切正常,后来 windows 10 更新了有不行了,后来发现是 sqlite3.dll 版本的问题
      

  7.   

    编译的exe在我自己电脑和服务器都测试过,我编译的都不能用,编译没问题的,都可以用,所以说太诡异了,编译的汇编文件我用文本对比器对比过,指令都相同,除了几个地方的注释显示不同,继续求解中编译出来的还有注释?
    二进制比较可以用fc命令:
    ——————
    比较两个文件或两个文件集并显示它们之间
    的不同
    FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/U] [/W] [/nnnn]
       [drive1:][path1]filename1 [drive2:][path2]filename2
    FC /B [drive1:][path1]filename1 [drive2:][path2]filename2  /A         只显示每个不同处的第一行和最后一行。
      /B         执行二进制比较。
      /C         不分大小写。
      /L         将文件作为 ASCII 文字比较。
      /LBn       将连续不匹配的最大值设置为指定
                 的行数。
      /N         在 ASCII 比较上显示行数。
      /OFF[LINE] 不要跳过带有脱机属性集的文件。
      /T         不要将制表符扩充到空格。
      /U         将文件作为 UNICODE 文本文件比较。
      /W         为了比较而压缩空白(制表符和空格)。
      /nnnn      指定不匹配处后必须连续
                 匹配的行数。
      [drive1:][path1]filename1
                 指定要比较的第一个文件或第一个文件集。
      [drive2:][path2]filename2
                 指定要比较的第二个文件或第二个文件集。
      

  8.   

    编译的exe在我自己电脑和服务器都测试过,我编译的都不能用,编译没问题的,都可以用,所以说太诡异了,编译的汇编文件我用文本对比器对比过,指令都相同,除了几个地方的注释显示不同,继续求解中编译出来的还有注释?
    二进制比较可以用fc命令:
    ——————
    比较两个文件或两个文件集并显示它们之间
    的不同
    FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/U] [/W] [/nnnn]
       [drive1:][path1]filename1 [drive2:][path2]filename2
    FC /B [drive1:][path1]filename1 [drive2:][path2]filename2  /A         只显示每个不同处的第一行和最后一行。
      /B         执行二进制比较。
      /C         不分大小写。
      /L         将文件作为 ASCII 文字比较。
      /LBn       将连续不匹配的最大值设置为指定
                 的行数。
      /N         在 ASCII 比较上显示行数。
      /OFF[LINE] 不要跳过带有脱机属性集的文件。
      /T         不要将制表符扩充到空格。
      /U         将文件作为 UNICODE 文本文件比较。
      /W         为了比较而压缩空白(制表符和空格)。
      /nnnn      指定不匹配处后必须连续
                 匹配的行数。
      [drive1:][path1]filename1
                 指定要比较的第一个文件或第一个文件集。
      [drive2:][path2]filename2
                 指定要比较的第二个文件或第二个文件集。
    我用UE打开2个文件做了比较了。。确实很多地方不一样,满篇都是红色的提示,,纠结。。一样的源码。一样的DELPHI版本,,不知道为什么会这样。
      

  9.   

    可能Project——Options设置不同。
      

  10.   

    解决问题的方法很简单,就Debug跟踪一下,看看是具体那个地方出问题,然后在找出产生问题的原因就可以了。整天都在瞎猜问题的原因,基本上解决不了问题。
      

  11.   

    debug跟踪能定位代码行的,基本都能解决,关键是现在的调试错误时,直接进入汇编界面,我勒个去啊,天书看不懂啊,哈哈
      

  12.   

    上一个帖子满三贴不能发言了,正好这个可以参考:
    使用XLSReadWriteII还有一个奇怪的问题:家里的机子和单位的机子安装的软件版本都一致,在家里使用 autowidthcol(acol,aminwidth,amaxwidth)正常,到了单位显示异常,只能使用autowidthcol(acol)。家里机子编译好的可以在单位机子上运行,单位机子上再编译提示参数不对。
    我对比了一下,delphi、XLSReadWriteII版本一致,只是系统家里是win10、64位,单位是win7、32位,难道和系统支持的bit有关系?
    楼主参考。
      

  13.   

    不同的编译选项,能编译出相同大小的exe问题,这样应该是很凑巧的事了。
      

  14.   

    不同的编译选项,能编译出相同大小的exe文件,这样应该是很凑巧的事了。
      

  15.   

    不凑巧,PE文件有结构对齐,一般文件对齐是512字节,虽然链接时可以修改对齐大小,比如ms的link有/align选项,但是在win64中对齐尺寸小于512字节的exe无法运行,win32中对齐尺寸可以小到16字节。
      

  16.   


    我有文件备份的习惯,有时候一个代码增改了几行代码再编译,备份到U盘,发现exe大小没变。
      

  17.   

    系统反复做了7 8次,32位 64位,WIN10 WIN7 各种折腾,控件各种安装,,,,今天。又做了一次系统。WN1064为专业版,,编译之后一切正常了。。百思不得其解啊。。总之。问题已经解决啦。多谢各位大神的热情回复!谢谢大家!祝好运常伴~
      

  18.   

    有一种可能叫做你的鸡子上了DELPHI官方的黑名单了。可考虑下,断网编译,软件是别人的,又用的是D版,什么都有可能。
      

  19.   

    还有一种可能就是硬件问题,特别是内存条,如有条件换一条内存条试试,其实如果上了DELPHI官方黑名单,官方也是根据硬件来识别的
    内存条质量不好,一切都白搞