1樓:網友
你這麼做到底有什麼用呢?
還有你所謂的返回是什麼意思?另乙個按鈕嗎?
沒弄明白你的目的……如果只是想在特定時候執行按鈕點選,實現起來很容易。
delphi 如何向乙個指標內寫入字串
2樓:臺浦澤
將字串轉成位元組型陣列,然後再寫入指標。
delphi中怎麼定義乙個指向動態陣列的指標。。
3樓:守意如城
動態陣列變數本身,實際上就是乙個指標了,不需要再專門去定義乙個指向動態陣列的指標。
比如:a, b: array of integer;
beginsetlength(a, 1);
a[0] := 1;
b := a;
end;動態陣列變數b,它指向動態陣列a的內容,即b[0] =a[0] = 1;修改b[0],a[0]的值也變了。
4樓:網友
varp: pointer;
arr:array of double;
beginsetlength(arr,18); //設定陣列長度p:= @arr;
end;p是指標只是為了配合你原來的寫法。
實際上建議不用指標。
vararr:array of double;
beginsetlength(arr,18); //設定陣列長度end;
就可以對arr進行操作了。
delphi,如何獲得函式位址或指標,是函式的,不是過程的,是function的,不是procedure的
5樓:網友
不管是function的,還是procedure的,都是利用取址符@,你碰到的錯誤應該是其它原因。
delphi中如何將陣列轉換為指標?
6樓:網友
我覺得你應該先搞清楚writebuffer寫入的時候是按照多少位元組寫入的,也就是說是1位元組、2位元組還是其它。
一般如果僅僅是記憶體區域的話,我覺得按1位元組的可能性最大,這樣就存在問題了,你定義的是bufbit: array of integer; integer在delphi中是4位元組的,你要是轉化的話建議轉化為byte指標比較好:
varbp: pbyte;
beginbp:= pbyte(@bufbit[0]);
處理部分。另外,一樓所說很有道理!
1、看你writebuffer的寫法似乎是為了和c語法相容,未指定長度的話可能會以 0 作為結束符,需要注意。
2、或者裡面隱含處理的長度,這樣的寫法不安全,可能會造成未知的錯誤,或讓程式崩潰!
7樓:文件類共創空間
關於delphi陣列,指標,字串轉換的例子:
varaa: array [0..5] of char;
bb:pointer;
cc:string;
dd:pchar;
procedure : tobject);
begindd:='abcdef';
以下是pchar內容轉陣列。
fillchar(aa,length(dd),#
move(dd^,aa,sizeof(aa));
以下是陣列傳遞到指標。
bb:=getmemory(sizeof(aa));
move(aa,bb^,sizeof(aa));
以下是指標內容傳遞給字串。
setlength(cc,sizeof(aa));
move(bb^,cc[1],sizeof(aa));
freememory(bb);//這個是釋放記憶體//以下是陣列轉pchar
dd:='';
dd:=pchar(@aa);
messagebox(0,pchar('cc: '+cc),pchar('dd: '+dd),0);
end;
8樓:文句子
@bufbit,還是@bufbit[0]
如果bufbit定義的下標是從0開始的,二種寫法沒有區別,效果一樣。@是肯定都要帶著的。
但是你的陣列如果僅僅是寫了「var bufbit: array of integer;」,肯定不能直接拿來引用。
引用前要麼動態分配一下,要麼直接重新定義成固定長度的陣列,如array [0..bufmaxsize-1]of integer;。pascal不像c,它定義陣列的下標可以不從0開始。
9樓:網友
@bufbit[0]就可以了,會自動轉換的。
delphi tlist 方法指標,請高手賜教
10樓:網友
這個不難,非常簡單。你使用下面的例子,點選button1後,就會呼叫方法method1。
type/宣告不帶引數的類方法。如果你的有引數,不同引數的方法要宣告不同型別的類方法。
tmymethod = procedure of object;
tform1 = class(tform)
button1: tbutton;
procedure formcreate(sender: tobject);
procedure formdestroy(sender: tobject);
procedure button1click(sender: tobject);
private
flist: tlist; //你的list
public
procedure method1; //方法1
procedure method2; //方法2
procedure method3; //方法3end;
implementation
procedure ;
beginshowmessage('method1');
end;procedure ;
beginshowmessage('method2');
end;procedure ;
beginshowmessage('method3');
end;/將方法指標加入list
procedure : tobject);
beginflist := ;
;end;/銷燬。
procedure : tobject);
end;/根據list裡的指標呼叫類方法。
procedure : tobject);
varmethod: tmymethod;
beginmethod := ;
method;
end;
11樓:
老版本中的tlist指標呼叫,我就不寫了,建議樓主看看2007以後引入的泛型tlist的用法。
uses ;
var ss:tlist;
beginss:=;
with ss do
beginadd(1);
add(2);
end;showmessage(inttostr(ss[0]))
end;注意: tlist中的t可以是任意型別的變數/類例項/記錄,需要釋放資源的要手工釋放,方法就是ss[i].free.
如果想乙個free釋放所有元素,使用tobjectlist就可以。
另外,要達到雜湊表的效果,可以使用tdictionary.具體應用一下。
C語言的壓棧和入棧出棧什麼意思啊誰有什麼好方法理解一
棧的特點是先進後出。你把棧當成一個水桶,把書一本本放進去,然後最先放的書就被壓在最下面,所以最先進去的,最後出來。壓棧就是入棧就是把書放進水桶,出棧就是把書拿出來。壓棧 和 出棧 是什麼意思啊 可以理解成機槍的彈夾,彈夾就是一個棧,子彈一顆一顆壓進去,就是壓棧,有個順序特點就是先進後出,後進先出,出...
A,B,C,D字母依次入棧有哪幾種出棧順序,為什麼會這樣,不是隻有一種出棧順序碼,我真的不懂啊高手賜
1 abcd的全排復 列有24,但有4種不可制能,因此 出棧bai有20種。2 樓主理解的出棧順序du就是全部zhi 入棧,dao再出棧,這只是20種中的一種。可以a入棧,出棧後,bcd再入棧,出棧,這提第二種。其他18種你慢慢想。我暈,你不可以a近了又出再近b啊?有好多種。給定4個元素a,b,c,...
設計演算法,入棧和出棧的操作。具體實現要求 1寫出棧的入棧和出棧演算法。2寫程式,將輸入的十進
樓主 這是我用連結串列結構實現的棧,以下是演算法,順序表部分沒寫,最近沒什麼時間,不好意思啦。include include 包括malloc 和realloc 函式的標頭檔案 include 包括pow 函式的標頭檔案 define max stack size 20 define addersi...