乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      【轉(zhuǎn)】delphi中pointer的使用

       Gavin-book 2013-09-24

      怎樣才能訪問pointer指針的所有數(shù)據(jù)?(最好有多種方法一起說明)
      例:
      var
      p:pointer
      begin
      p:=一個(gè)指針變量
      p:=p+1;//為什么不能這樣使用?怎樣才能指向下一個(gè)地址?
      end;

      var
      p: pointer;
      s: string;
      begin
      s:= 'abc';
      p:= PChar(s); //給指針賦值
      p:= Pointer(Integer(p)+1); //把指針后移一位
      Caption:= string(Char(p^)); //讀取后移后的指針內(nèi)容
      end;

      我有這樣一段代碼
      var
      Pos: Byte;
      PP: PByte;

      Pos := 1
      PP := PP + Pos;
      PP^ := 12;

      在這三句話中Delphi老是說第二句有錯(cuò)誤,我知道如果寫成這樣是沒有問題的PP【Pos】 := 12;
      但是有時(shí)候就是感覺和C的不一樣,不習(xí)慣(一直是用C做底層的東東,改了太難受了,呵呵)  

      Delphi 里面的Integer 和 Pointer, 0 和 nil前兩天,一個(gè)同事問我關(guān)于Delphi里面Pointer的問題,便和他一起推敲, 結(jié)果發(fā)現(xiàn)一個(gè)有趣的結(jié)論:Delphi里面, nil = 0; 想想,這也是很好理解的, 在32位Windows操作系統(tǒng)里面, 一個(gè)整數(shù)是32位, 一個(gè)指針也是32位的無符號(hào)整數(shù)。 但是,具體編程上的操作,卻比較有趣, 各位老大請(qǐng)看:vara : Pointer;begin// a := nil;if Assigned(a) thenbegin    ShowMessage('我有種')endelse begin    ShowMessage('我沒種')endend; 結(jié)果是:'我有種', 說明Pointer和Integer一樣,聲明后,必須初始化。再看下面:vara : Pointer;begina := 0;if Assigned(a) thenbeginShowMessage('我有種')endelse begin   ShowMessage('我沒種')endend; 結(jié)果是:'我沒種', 說明對(duì)于Pointer,nil其實(shí)就是等于這個(gè)Pointer里面的內(nèi)存地址是$00000000。

      指針 Pointer @

      var p1,p2,p3:pointer
      S:String;
      I:Integer;
      begin
      p1:= Pointer(S);
      p2:= @S;
      P3:= pchar(s);
      // p1 和 p2 p3 有什么區(qū)別嗎?
      // Pointer(S)^ 字符串和Buffer

      end;

      Pointer 是Borland VCL 的一個(gè)結(jié)構(gòu)類型.
      因此還有 PPointer 這樣一個(gè)東東呢!.指針的指針,如同管理類的類.

      @是取地址的操作.什么都可以取地址.但取出來的不一定可以進(jìn)行內(nèi)容的訪問.
      這就是一個(gè)數(shù)了,脫離了實(shí)際的現(xiàn)場就沒有意義了。(一個(gè)變量不可能下次還使用同一個(gè)物理內(nèi)存吧 呵呵)
      pchar 指的是字符串?dāng)?shù)組的首地址. 后面連續(xù)的字符串直到 "\0" 結(jié)束.

      雖說有些需用到的功能Delphi或第三方大都已提供元件或原始碼,
      但如果欲從C++自己轉(zhuǎn)些碼來用真是麻煩,
      看看下面

      function GetHostAddress(const hostname : string) : u_long;
      var
      pHostAddr : PHostEnt;
      type
      T = ^u_long;
      begin
      pHostAddr := gethostbyname(PCHAR(hostname));
      if (pHostAddr = nil) then
      begin
      result := 0;
      end
      else
      begin
      result := T(pHostAddr^.h_addr^)^;
      end;
      end;


      想來必定是從C++直接按範(fàn)例寫的, 但能看出在做什麼呢?
      指標(biāo)在Object Pascal Language Guide有提及, 還有Delphi學(xué)習(xí)筆記
      也有一小段落也提起。
      但以我的觀念, 大致上只會(huì)用到如此而已

      type
      TStruct=record
      no:integer;
      name:string;
      end;
      PStruct=^TStruct;
      var
      i:integer;
      pi:PInteger;
      group:array[0..10] of TStruct;
      PMember:PStruct;
      begin
      pi:=@i;
      pi^:=10;
      ShowMessage(IntToStr(i));
      PMember:=@group[0];
      PMember.no:=1;
      PMember.name:='曾水舜';
      Inc(PMember);
      PMember.no:=2;
      PMember.name:='sunshine';
      ShowMessage(group[0].name);
      Dec(PMember);
      PMember^.name:='愛玩';
      ShowMessage(group[0].name);
      end;


      一起研究吧....
      >我想大部分人用 delphi 來開發(fā)資料庫
      >用到Pointer實(shí)在不多,很多事Delphi 已經(jīng)幫你做的好好地(如動(dòng)態(tài)陣列)
      >不像 C++ 還要自己控制,So....至少到目前為止我只用過他在動(dòng)態(tài) Record 上
      >除非要做很低階控制,不過這可能不會(huì)用 delphi 來作吧
      >anyway 手冊上那一本介紹pascal 講的蠻詳細(xì)地
      >>經(jīng)??吹揭恍?Sample code 都會(huì)使用到 Pointer. 但不論中文或英文書都
      >>什少提及 Pointer. 就算有頁數(shù)亦很少. 幾巳遺忘 Delphi 有 Pointer.
      在Delphi中使用指針參數(shù)
      在c語言中用function (int ^par)很方便,查過好多資料沒找到delphi的用法,
      今晚沒事突然想起用delphi萬能指針pointer(無類型指針)應(yīng)該可以代替。測試一下通過。
      procedure xx(a:pchar); 【擴(kuò)展信息:用 Javascript 實(shí)現(xiàn)的“Dua】
      var
      tm:^tadodataset;
      begin
      tm:=pointer(a);
      ...
      end;
      procedure bb;
      var
      tm:tadodataset;
      begin
      tm...
      xx(@tm);
      end;

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多