delphi方法指標入棧。。。

2025-02-08 17:29:32 字數 3743 閱讀 9051

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