本篇文章將一些常見的錯誤復現與解決方案寫出來供新手參考,旨在幫助新手更好的了解易語言,在用易語言編程的時候少踩坑。
常見錯誤:001
癥狀:調試運行之后點擊“按鈕1”不會彈出信息框
病因:“將參數變量聲明到組件事件里”
治標:將“參數一”與“參數二”刪除
治本:組件事件的參數變量除了支持庫自帶的參數回調變量外,不允許用戶額外聲明組件事件子程序里的參數變量,牢記則治本
常見錯誤:002
癥狀:聲明了變量“A”與變量類型“整數型”也用“=”號賦值了但報錯不是聲明的變量類型“整數型”
病因:一行代碼中連續出現兩個“=”號則從第一個“=”號后的代碼為一個整體判斷
治標:將第二個“=”號改為“+”號
治本:A=A 自身等于自身無實際意義也會報錯“錯誤(10092): 不能將變量自身賦值給自身。” A=A=1 這里第一個A看作是一個變量,第二個A=1 看作是一個判斷,這里是表達的意思是 A是否等于1 是否在程序的表達是真假,也就是如果A=1,則這個判斷的結果就是真,第一個A也就等于真易語言程序特征碼,第一個A等于真了,真假的類型是邏輯型,這和開始聲明的A是整數型不符,調試的時候易語言就檢查到這個錯誤就報錯了。牢記一行代碼中出現的“=”號數量與第一個變量實際表達的意義是什么
常見錯誤:003
病癥:聲明了自定義數據類型仍提示“錯誤(36): 找不到指定的對象成員命令名稱“xx”。”
病因:模塊或者支持庫已定義了的自定義數據類型被用戶重復在源碼里重新定義,易語言自動將用戶自己重新定義的自定義數據類型為首選加載。
治標:刪除自己重新聲明的同名自定義數據類型,直接聲明引用模塊或者支持庫已定義的自定義數據類型
治本:自定義數據類型DLL命令子程序類模塊資源文件常量數據全程局變量 這些需要聲明或定義的數據易語言會在調試或者在編譯的時候優先加載用戶自己聲明或定義的數據,沒有找到匹配的才會去支持庫或模塊中尋找匹配的數據。牢記已聲明或定義的過的數據無需重復聲明或定義,直接引用即可。
常見錯誤:004
病癥:已加載模塊名,按模塊里的命令參數提示傳遞的對應變量類型的參數但提示報錯
病因:加載兩個擁有同名的模塊,但命令參數不相同。
治標:挨個刪除已加載的模塊,直到命令通過調試或者編譯,將沖突的模塊移除模塊引用表。
治本:易語言調試或編譯的時候,對于從模塊中引用名的順序是按模塊引用表的前后順序引用的,如果你引用的命令在引用的第二個,但第一個模塊也有同名的命令,則優先加載第一個模塊的命令,如果第一個模塊命令參數不同于第二個模塊的命令,易語言就會報錯。牢記引用的模塊的時候盡量避免出現有同名但不同參數多個模塊同時引用
常見錯誤:005
病癥:已賦值變量傳遞到命令里,最后調試輸出的時候并不是一開始賦值的數據
病因:如果支持庫或模塊命中里有參考返回的參數變量,一旦命令內部對可參考返回的參數賦值,則會覆蓋一開始賦值的數據
治標:只聲明變量,不對變量賦值,由命令內部自動賦值。
治本:參考返回是為了讓命令支持多個數據返回,理論上現有易語言的調用的命令返回值均只有一個,如果想返回多個則需要通過參考返回的形式將數據返回(注意:在易語言里數組、用戶定義數據類型、庫定義數據類型、文本型、字節集型數據是默認參考返回),在DLL命令中,參考返回為“傳址”。牢記參考返回的變量無需在調用命令前賦值,注意參考返回的數據類型,避免聲明的變量類型錯誤。
常見錯誤:006
病癥:已聲明變量且已賦值,但提示數據類型轉換錯誤
病因:只聲明了變量名未聲明變量的數據類型
治標:根據你賦值的數據的實際類型將聲明的變量名定義對應的類型
治本:易語言默認的數據類型(數值型[字節型、短整數型、整數型、長整數型、小數型、雙精度小數型]、文本型、字節集、日期時間型、邏輯型),此外還有庫定義的數據類型,用戶自定義數據類型。而聲明變量時類型不填寫,易語言默認為整數型。牢記聲明變量的時候除了填寫變量名稱也要記得填寫對應的數據類型,如果聲明的就是整數型則可以直接留空(不建議這么做哦),留空為整數型同樣適用DLL命令與自定義數據類型的成員變量。
常見錯誤:007
病癥:正確聲明了類模塊,也正確傳遞了參數值,調用命令返回結果也是正確的,但最后效果是錯誤的
病因:類模塊命令在引用的時候會自動運行類里面默認的“_初始化”子程序,在當前變量域結束的時候自動調用類里面的“_銷毀”。除了調用一次便直接生效的類模塊命令外,動態的調用的例如圖中的“類_托盤”,在類自動調用“_銷毀”之后,里面的類命令將全部失效
治標:將動態調用類型的類模塊聲明到程序集變量或全局變量即可。
治本:單獨的子程序中,局部變量只會在該子程序被調用的時候有效,如果該子程序運行完畢,則子程序中的所有局部變量將失效。這里有前提條件,子程序中的局部變量沒有設置為靜態變量,因為按易語言的規則(如果局部變量在定義時此屬性被設置為假,那么運行應用程序時,此變量在其所在子程序開始被執行前自動分配存儲空間并初始化,在所在子程序執行完畢后自動釋放所分配的存儲空間。也就是說,變量的存儲空間僅在其所在子程序執行過程中存在;如果此屬性被設置為真,那么此變量與全局、程序集變量一樣,被分配給在程序運行期間永久存在的存儲空間并僅在應用程序啟動運行前被初始化一次。)設置為靜態變量后局部變量將和全部、程序集變量一樣。注意這里類模塊命令即時設置為靜態局部變量但其他子程序仍不能直接調用該類模塊的其他命令。牢記局部變量的特性與類模塊命令的特性。
常見錯誤:008
病癥:未勾選支持庫但打開源碼仍然能正常調用該支持庫提供的命令,把源碼發給也沒勾選支持庫的易友,易友打開源碼提示xx支持庫不存在,無法正常運行源碼
病因:未勾選支持庫,本地易語言支持庫文件夾里也沒有這個支持庫,只要打開的源碼里調用了該支持庫的命令易語言就會報xx支持庫不存在。
治標:下載提示中對應版本的支持庫文件放到易語言根目錄(elib)文件夾中,重新打開源碼即可。
治本:發源碼給易友或開源源碼的時候如果用到了不常見或非官方支持庫的支持庫,盡量將該支持庫的文件與源碼打包發送或開源。因為易語言IDE加載支持庫的方式是先將根目錄(elib)里的所有支持庫文件(.fne)加載到內存里,再根據用戶最后一次配置的支持庫信息顯示是否勾選,如果你沒勾選但支持庫配置表里有這個支持庫,打開調用了這個支持庫命令的源碼也不會報錯。牢記如果源碼里用到了不常見或非官方的支持庫的命令,盡量將該支持庫(.fne)文件與源碼打包,
常見錯誤:009
病癥:將支持庫文件(.fne)與源碼打包給了易友,但對方只能調試與編譯,不能靜態編譯。
病因:未將(.fne)動態庫對應的靜態支持文件一起打包。
治標:將(.fne)動態庫對應的靜態支持文件一起打包易語言程序特征碼,將動態庫(.fne)放到易語言根目錄(elib)文件夾中,靜態支持文件(.lib與.res)放到易語言根目錄()文件夾中,重新打開源碼即可。
治本:支持靜態編譯的支持庫除了有(.fne)的動態庫還有(.lib)與(.res)靜態支持文件。牢記包含支持靜態編譯支持庫的源碼需要將動態(.fne)與靜態(.lib與.res)一起打包再發送或開源,不然在打開源碼靜態編譯的時候就會報錯
常見錯誤:010
病癥:打開源碼調試或編譯的時候提示“錯誤(37): 找不到指定的命令/子程序/Dll命令調用名稱xxx”
病因:調用了當前調試或編譯環境里沒有的命令
治標:勾選對應的支持庫或引用對應的的模塊。
治本:調試或編譯的時候提示“錯誤(37)”,將提示的命令名在百度一下查找一下這個命令的出處。
Tip
善用F1:易語言IDE代碼編輯區哪里不懂,鼠標點到那里再按F1,看提示信息,根據提示信息糾正錯誤。返回搜狐,查看更多
責任編輯: