delphi 裡move函式的用法

2021-04-28 22:04:57 字數 667 閱讀 8619

我們能看到以下**

var psource,pdest:pchar;

len: integer;

.......................//一些**

move(psource,pdest,len); //錯誤

move(psource^,pdest^,len); //正確

看起來確實好像是傳值,而不是傳位址,但是各位別忘了,這不是c,c++,而是delphi

object pascal,所以,絕不能從函式呼叫的方法判斷是傳值還是串位址!!必須看函式的

定義,只有定義才能說明是傳值還是傳位址,再說一遍,這不是c,c++!!

我們看到的函式定義是這樣的

procedure move(const source; var dest; count: integer);

從定義上看,很清楚,dest是傳位址,而不是傳值,那麼source呢,其實大家不太清楚

這裡的const修飾符有兩個含義,第乙個大家都知道就是source一常量方式在函式體內,

不可以改變它的值,第二個可能知道的人不多,那就是source的傳遞方式和dest一樣,

是傳位址!也就是說const和var一樣,都是傳位址,只不過乙個在函式內不允許修改,

另乙個是修改後影響呼叫的變數值

所以move是傳位址,而恰恰不是傳值

delphi中move函式的用法

psource,pdest pchar len integer 一些 move psource,pdest,len 錯誤 move psource pdest len 正確 看起來確實好像是傳值,而不是傳位址,但是各位別忘了,這不是c,c 而是delphi object pascal,所以,絕不能從...

delphi中move 函式額用法

var psource,pdest pchar len integer 一些 move psource,pdest,len 錯誤 move psource pdest len 正確 看起來確實好像是傳值,而不是傳位址,但是各位別忘了,這不是c,c 而是delphi object pascal,所以,...

去掉 禁止系統選單裡的MOVE的方法

1。用api去掉move,dllimport user32.dll entrypoint getsystemmenu extern static system.intptr getsystemmenu system.intptr hwnd system.intptr brevert dllimpor...