怎么用自己的語言在delphi中重新實作concat,pos,copy,setlength,length這幾個函式的作用?
uj5u.com熱心網友回復:
為什么要這么做?或者說
你這么做的目的是什么?
uj5u.com熱心網友回復:
這些實際上是intrinsics,不是普通函式,你要自己實作只能針對特定的型別來做,要實作地一模一樣是不太可能的,除了concat,針對string的pos,copy,setlength,length是可以做到的,但是動態陣列不行。uj5u.com熱心網友回復:
這幾個函式的原始碼是在{DELPHI|\Source\Rtl\Sys中的System.pasSystem單元是編譯器實作的,所以,即使你的程式中沒有Uses它們,但仍然可以用System.Pos()這種方式來呼叫函式。
也就是說,System.pas無法被編譯!
另一個比較特殊的是SysInit單元,其中的變數和指標,是由Delphi聯結器做處理,所以無論你是否Uses了它,里面的HInstance全域變數都是可用的。
這些單元的實作代碼,只有不同版本的Delphi有所差異,你自己就不用想著改了。
PS:以前有個病毒專門針對Delphi的,系統感染后,只要用Delphi編譯出來的exe就帶毒,而病毒代碼存在于SysInit.dcu里面,所以理論上你可以使用相同的方法 ,通過SysInit.dcu中的例行程序,偷偷修改System.Pos一類函式的指標位置,實作這個修改內部函式的需求。
不過貌似作業量有點偏大~~
uj5u.com熱心網友回復:
這幾個是Delphi的原生函式,一般情況不宜修改的。如果,您要修改,可以修改System.pas源代碼。
也可以自己重新寫幾個類似功能的函式。
uj5u.com熱心網友回復:
是的,這是delphi的原有函式,直接呼叫就行····· 或者自己重新自定義函式轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61624.html
標籤:語言基礎/算法/系統設計
