delphi中move函式的用法

2021-05-02 20:25:27 字數 1006 閱讀 7440

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是傳位址,而恰恰不是傳值!

var

bytes: array [0..10] of byte;

pbytes: array of byte;

str: string;

begin

setlength(str, length(bytes));

move(bytes[0],pchar(str)^,length(bytes));

setlength(pbytes,length(str));

move(pchar(str)^, pbytes[0], length(str));

setlength(pbytes,0);

pbytes := nil;

end;

delphi中move 函式額用法

var 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 pa...

Delphi中TStringList的用法

tstrings是乙個抽象類,在實際開發中,是除了基本型別外,應用得最多的。常規的用法大家都知道,現在來討論它的一些高階的用法。先把要討論的幾個屬性列出來 1 commatext 2 delimiter delimitedtext 3 names values valuefromindex 一 co...