国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
關(guān)于delphi Move函數(shù)的用法
使用delphi多年,前些天忽然遇到不會(huì)string轉(zhuǎn)pbyte,很是失落,此時(shí)對(duì)于編程基本功的重要性深有體會(huì).這其中用到MOVE函數(shù).
 搞了好一會(huì)才搞明白其用法.所以想貼出來(lái)幫助需要幫助的人.
var
   s:string;
   ps:Pchar;
   b:pbyte;
   len:integer;
begin
   s:=edit1.Text; //字符串
   ps:=pchar(s); //轉(zhuǎn)成pchar類型,
   len:=length(s);//取字符串長(zhǎng)度,占用多少字節(jié)
   getmem(b,len);//申請(qǐng)內(nèi)存,pchar,pbyte在使用前都必須要申請(qǐng)內(nèi)存,因?yàn)樗麄兪侵羔?
   move(ps^,b^,len);//這里 ps^意思是pchar指向內(nèi)存數(shù)據(jù)的第一個(gè)字節(jié)地址,B^是表示申請(qǐng)內(nèi)存的第一個(gè)字節(jié)地址,這樣就可以一個(gè)一個(gè)字節(jié)的移到b里去了.
   memo1.Text:=pchar(b);//顯示.
   freemem(b);
end;
有些人遇到的困惑是為什么 move(s,b,len)不行呢?同樣我也遇到這樣的困惑.
看了一樣move的函數(shù)源碼才明白.
procedure       Move( const Source; var Dest; count : Integer );
{$IFDEF PUREPASCAL}
var
  S, D: PChar;
  I: Integer;
begin
  S := PChar(@Source);//取內(nèi)存地址
  D := PChar(@Dest);//取內(nèi)存地址
  if S = D then Exit;
  if Cardinal(D) > Cardinal(S) then
    for I := count-1 downto 0 do
      D[I] := S[I]
  else
    for I := 0 to count-1 do
      D[I] := S[I];
end;
如果直接傳入s,
 
S := PChar(@Source);//取內(nèi)存地址\
 就相當(dāng)于取的字符串S地址的地址.
如果傳入的是ps^
S := PChar(@Source);//取內(nèi)存地址
 就相當(dāng)于取pchar 所指向字符串實(shí)際數(shù)據(jù)的地址.
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Delphi Move - 移動(dòng)內(nèi)存塊
Delphi 中String類型原理介紹
『Delphi園地』-用好Delphi中的字符串
Delphi中關(guān)于MOVE和CopyMemory的用法區(qū)別
Delphi字符串、PChar與字符數(shù)組之間的轉(zhuǎn)換
Variant 調(diào)用的接口必須是由 IDispatch 接口繼承 簡(jiǎn)單的派發(fā)接口 DispInvoke
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服