1樓:匿名使用者
這個確實是個奇怪的現象,我測試了半天結果都是不行,估計是delphi為了保護pchar在堆裡面的安全進行了防寫。不過利用一個string類做一下轉換,就成功了,你可以試試:
procedure : tobject);
vars:string;
pc:pchar;
pb:pbyte;
begins:='hello';
pc :=pchar(@s[1]);把pc指向string類裡面的字串首地址。
pb :=pbyte(pc);
inc(pb);
pb^ :65 ;
showmessage(pc);/hallo
end;這可絕對不是菜鳥的問題。其實delphi裡面string類的功能非常豐富,一般不要這樣操作。 要修改其中的字元這樣就行:
procedure : tobject);
vars:string;
begins:='hello';
s[2]:=#
showmessage(s);
end;
2樓:匿名使用者
pb[3]:=65
或。pb[3]:=a';
pb^ :65; 這種賦值是錯誤的。
3樓:匿名使用者
建議使用字串string進行操作。
delphi求高手解答關於指標的問題
4樓:
1、recmemorystream變數地址。
2、被例項化的物件地址。
3、例項化物件中的memory變數地址。
recmemorysream是一個變數,根據你的定義,這個變數可以引用tmemorystream型別的例項,說白了就是 recmemorysream 這個變數是個箱子,這個箱子有自己的地址就是第一個列印出來的,箱子裡面存了一個紙條,這個紙條上寫的是物件地址,就是第二個語句列印出來的,第三個是物件內部的定義的一個public變數,列印出來就是這個變數的地址。
樓上正確,我記反了,好久沒用delphi了。
5樓:匿名使用者
recmemorystream是個物件的引用,其實就是指標第一個是指標所指向物件的地址。
第二個是指標變數所在的地址。
第三個,memory是recmemorystream的一個成員指標,所以代表該成員指標指向的記憶體的地址。
delphi指標問題
6樓:匿名使用者
這裡的變數a是指標的指標。
函式本身就是一個指標,函式據是一系列指令集合依次排列於記憶體中,@now只是取其棧頂地址。棧頂地址存放的是第一條指令。
在這裡你不能將一個函式作為引數傳給datetimetostr
7樓:匿名使用者
你的指向的是now這個函式,而你的a確實pdatetime,型別都不一致的哈,你可以這樣測試:
vara:pdatetime;
b: tdatetime;
beginnew(a);
b :=now();
a :=b;
showmessage(datetimetostr(a^))
end;-注意b變數。
直接網頁上敲出沒經過ide測試的**,你自己測試看。
8樓:匿名使用者
a和兩者的資料型別不一樣。
a是日期時間指標,而是獲得now函式入口的地址。
9樓:匿名使用者
glaciersoft說的對,兩個型別都不一樣,now是函式,a是指標變數。
DELPHI資料庫操作
用sql查詢語名進行 1 用查詢回車選定一條記錄,插入到銷售表中 假設庫存表欄位為 零件號,名稱,單價,數量 銷售表欄位為 零件號1,名稱1,單價1,數量1 insert into 銷售表 零件號1,名稱1,單價1,數量1 select 零件號,名稱,單價,數量 from 庫存表 where 條件 ...
C 裡指標變數自身值的問題,關於c 中指標變數的問題
pt 1244996 是pt的地址 p 後 p p 優先順序高,因此 地址變為了 1245000 注意整形指標 1,其實就是 4,因為整形的size是4位元組 p 1245064 是地址1245000 對應的記憶體值,是不確定的 p 1244992 是p這個指標本身在記憶體中存放的位置,這個也是不確...
c語言中,指標和陣列的區別和聯絡
區別 c語言把記憶體劃分成四個區,它把一般的變數和陣列等存在於記憶體中的棧區,所以陣列在c語言的定義中只是一組同型別的普通變數,即使這個變數有可能是指標。所以他的作用比指標小的很多,而指標可以指向任何區的任何資料,所以就會覺得指標和陣列名很像,但是必須要注意的是,陣列名只是指標中的一種,它是指標中只...