同樣的原始碼,2個人編譯出來的檔案大小一樣,一個能正常,一個不能用!delphi版本一模一樣,安裝的控制元件也一模一樣!所以,我們兩人是折騰了幾天了,無法解決,請大神給點思路!
uj5u.com熱心網友回復:
補充:我們用的作業系統都是win1064位,為了這個問題,系統做了不下5遍,換了N個作業系統版本,delphi也安裝了無數次,包括控制元件!其他程式都是一樣的,都正常,就一個人物網關,他編譯的能正常登陸,我編譯的就斷開!非常詭異的事情,我們也算是非常熟悉D的人了。。竟然第一次遇到這樣的事情。。求解!
uj5u.com熱心網友回復:
我前段時間發過一個帖子,臺式機編譯運行一切正常,就是在神船的新筆記本上,編譯后,運行一場,主要是表單顯示例外,也同時發給壇友運行也正常,就是在神船筆記本上例外,都解決不了。遠離神船,珍愛生命!
我一直懷疑,硬體和這個有關,比如CPU缺陷,可惜沒有什么證據。
uj5u.com熱心網友回復:
我和一個朋友都是聯想筆記本。。編譯的都不行。。一個朋友是外星人筆記本,編譯的沒問題!糾結中~~考慮自己也換個外星人筆記本試試去。。
uj5u.com熱心網友回復:
方便的話,不如在不能登錄的那臺機器上除錯運行一下看看。也許是防火墻設定的問題?uj5u.com熱心網友回復:
把兩臺電腦編譯的exe檔案二進制比較看有無位元組不同,必須同一個專案檔案,同一個版本delphi。估計是運行環境問題。uj5u.com熱心網友回復:
編譯沒問題的exe,發給你在你電腦運行正常不?uj5u.com熱心網友回復:
編譯的exe在我自己電腦和服務器都測驗過,我編譯的都不能用,編譯沒問題的,都可以用,所以說太詭異了,編譯的匯編檔案我用文本對比器對比過,指令都相同,除了幾個地方的注釋顯示不同,繼續求解中。。。
uj5u.com熱心網友回復:
windows 10 的話是這樣,我原來有個程式 運行一切正常,后來 windows 10 更新了有不行了,后來發現是 sqlite3.dll 版本的問題uj5u.com熱心網友回復:
問題是一樣的原始碼,一樣的D版本人家編譯就運行正常,我編譯的進去就斷開,都是在我自己電腦和服務器甚至是朋友的電腦測驗過,結果一樣,無解啊,蒼天啊。。。
uj5u.com熱心網友回復:
編譯出來的還有注釋?
二進制比較可以用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
指定要比較的第二個檔案或第二個檔案集。
uj5u.com熱心網友回復:
編譯沒問題的exe,發給你在你電腦運行正常不?
編譯的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版本,,不知道為什么會這樣。。。。
uj5u.com熱心網友回復:
可能Project——Options設定不同。uj5u.com熱心網友回復:
解決問題的方法很簡單,就Debug跟蹤一下,看看是具體那個地方出問題,然后在找出產生問題的原因就可以了。整天都在瞎猜問題的原因,基本上解決不了問題。uj5u.com熱心網友回復:
解決問題的方法很簡單,就Debug跟蹤一下,看看是具體那個地方出問題,然后在找出產生問題的原因就可以了。整天都在瞎猜問題的原因,基本上解決不了問題。
debug跟蹤能定位代碼行的,基本都能解決,關鍵是現在的除錯錯誤時,直接進入匯編界面,我勒個去啊,天書看不懂啊,哈哈
uj5u.com熱心網友回復:
應該是編譯選項的問題,按他的選項設定再編譯uj5u.com熱心網友回復:
上一個帖子滿三貼不能發言了,正好這個可以參考:使用XLSReadWriteII還有一個奇怪的問題:家里的機子和單位的機子安裝的軟體版本都一致,在家里使用 autowidthcol(acol,aminwidth,amaxwidth)正常,到了單位顯示例外,只能使用autowidthcol(acol)。家里機子編譯好的可以在單位機子上運行,單位機子上再編譯提示引數不對。
我對比了一下,delphi、XLSReadWriteII版本一致,只是系統家里是win10、64位,單位是win7、32位,難道和系統支持的bit有關系?
樓主參考。
uj5u.com熱心網友回復:
不同的編譯選項,能編譯出相同大小的exe問題,這樣應該是很湊巧的事了。uj5u.com熱心網友回復:
不同的編譯選項,能編譯出相同大小的exe檔案,這樣應該是很湊巧的事了。uj5u.com熱心網友回復:
不湊巧,PE檔案有結構對齊,一般檔案對齊是512位元組,雖然鏈接時可以修改對齊大小,比如ms的link有/align選項,但是在win64中對齊尺寸小于512位元組的exe無法運行,win32中對齊尺寸可以小到16位元組。uj5u.com熱心網友回復:
不湊巧,PE檔案有結構對齊,一般檔案對齊是512位元組,雖然鏈接時可以修改對齊大小,比如ms的link有/align選項,但是在win64中對齊尺寸小于512位元組的exe無法運行,win32中對齊尺寸可以小到16位元組。
這個是不是PE檔案節有空洞的原因?比如可以藏病毒而不改變檔案大小。
uj5u.com熱心網友回復:
不湊巧,PE檔案有結構對齊,一般檔案對齊是512位元組,雖然鏈接時可以修改對齊大小,比如ms的link有/align選項,但是在win64中對齊尺寸小于512位元組的exe無法運行,win32中對齊尺寸可以小到16位元組。
我有檔案備份的習慣,有時候一個代碼增改了幾行代碼再編譯,備份到U盤,發現exe大小沒變。
uj5u.com熱心網友回復:
系統反復做了7 8次,32位 64位,WIN10 WIN7 各種折騰,控制元件各種安裝,,,,今天。又做了一次系統。WN1064為專業版,,編譯之后一切正常了。。百思不得其解啊。。總之。問題已經解決啦。多謝各位大神的熱情回復!謝謝大家!祝好運常伴~uj5u.com熱心網友回復:
不湊巧,PE檔案有結構對齊,一般檔案對齊是512位元組,雖然鏈接時可以修改對齊大小,比如ms的link有/align選項,但是在win64中對齊尺寸小于512位元組的exe無法運行,win32中對齊尺寸可以小到16位元組。
這個是不是PE檔案節有空洞的原因?比如可以藏病毒而不改變檔案大小。
PE結構有section對齊和檔案對齊,section對齊要大于等于檔案對齊,除了最后一個section的最后一塊可以不填充到檔案對齊大小,之前每個section的末尾都可能有空洞。另外很多編譯器會把每個函式的起始地址放在16位元組對齊的位置,這樣每個函式末尾都可能有一小塊空洞。
uj5u.com熱心網友回復:
不湊巧,PE檔案有結構對齊,一般檔案對齊是512位元組,雖然鏈接時可以修改對齊大小,比如ms的link有/align選項,但是在win64中對齊尺寸小于512位元組的exe無法運行,win32中對齊尺寸可以小到16位元組。
這個是不是PE檔案節有空洞的原因?比如可以藏病毒而不改變檔案大小。
PE結構有section對齊和檔案對齊,section對齊要大于等于檔案對齊,除了最后一個section的最后一塊可以不填充到檔案對齊大小,之前每個section的末尾都可能有空洞。另外很多編譯器會把每個函式的起始地址放在16位元組對齊的位置,這樣每個函式末尾都可能有一小塊空洞。
15位元組的空洞沒有大用,但是節尾的空洞鏈接起來就是不小的空間了。
uj5u.com熱心網友回復:
有一種可能叫做你的雞子上了DELPHI官方的黑名單了。可考慮下,斷網編譯,軟體是別人的,又用的是D版,什么都有可能。uj5u.com熱心網友回復:
還有一種可能就是硬體問題,特別是記憶體條,如有條件換一條記憶體條試試,其實如果上了DELPHI官方黑名單,官方也是根據硬體來識別的記憶體條質量不好,一切都白搞
uj5u.com熱心網友回復:
同樣的原始碼,2個人編譯出來的檔案大小一樣,一個能正常,一個不能用!delphi版本一模一樣,安裝的控制元件也一模一樣!所以,我們兩人是折騰了幾天了,無法解決,請大神給點思路!
是不是事件句柄的位置錯了,過去很多讀者都犯同樣的錯誤,懷疑系統問題,硬體問題,版本問題,最多的是懷疑作者的書有錯誤,結果都是自己的錯,將事情句柄的位置都搞錯了。
uj5u.com熱心網友回復:
同樣的原始碼,2個人編譯出來的檔案大小一樣,一個能正常,一個不能用!delphi版本一模一樣,安裝的控制元件也一模一樣!所以,我們兩人是折騰了幾天了,無法解決,請大神給點思路!
是不是事件句柄的位置錯了,過去很多讀者都犯同樣的錯誤,懷疑系統問題,硬體問題,版本問題,最多的是懷疑作者的書有錯誤,結果都是自己的錯,將事情句柄的位置都搞錯了。
多半是這個問題,有的很不得將機器都砸了,結果問題很簡單
uj5u.com熱心網友回復:
同樣的原始碼,2個人編譯出來的檔案大小一樣,一個能正常,一個不能用!delphi版本一模一樣,安裝的控制元件也一模一樣!所以,我們兩人是折騰了幾天了,無法解決,請大神給點思路!
是不是事件句柄的位置錯了,過去很多讀者都犯同樣的錯誤,懷疑系統問題,硬體問題,版本問題,最多的是懷疑作者的書有錯誤,結果都是自己的錯,將事情句柄的位置都搞錯了。
有些人,始終調不了程式,又沒發現任何錯誤,恨不得將機器都砸了,結果是代碼的句柄位置用錯了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/22563.html
標籤:VCL組件開發及應用
