一:使用靜態陣列應該注意的問題:
1:char靜態陣列用在全域性變數和區域性變數中的區別。
您可以編寫如下簡單的測試,此時
procedure tform1.button1click(sender: tobject);
vararraychar:array[1..100] of char;
begin
arraychar[1]:='a';
arraychar[100]:='6';
end;
你可以在point1處設定斷點,使用滑鼠觀察,執行到該處之前delphi 為
陣列arraychar分配記憶體的情況,可以看到,delphi在開始分配陣列時,
並不為所有的元素置空,應該是隨機分配值的,如果試圖進行這樣的操作,
你如果不理解這一點,在進行某些操作時就可能會感到很迷茫:例如
procedure tform1.button1click(sender: tobject);
varag :array[1..100] of char;
i:integer;
begin
arraychar[1]:='a';
arraychar[99]:='6';
for i:= low(arraychar) to high(arraychar) do
if ag[i]='6' then
showmessage(inttostr(i));
end;
你希望能夠找到的i 的值是 99 ,但是有可能就會得到的是錯誤的值,我
進行了小小的測試,我此時得到的值是 64,94,最後才是99,如果稍加修改,如下:
procedure tform1.button1click(sender: tobject);
vararraychar:array[1..100] of char;
i:integer;
j:integer;
begin
for j:=low(arraychar) to high(arraychar) do
arraychar[j]:=#0;
arraychar[1]:='a';
arraychar[99]:='6';
for i:= low(arraychar) to high(arraychar) do
if arraychar[i]='6' then
showmessage(inttostr(i));
end;
這時,就不會出現先前的情況了,如果你仔細仍然可以使用同樣的方法觀察動態陣列,會發現其實
動態陣列在開始初始化時,是已經將所有的值都置空的。如果是整形的靜態陣列的話,應該設定值為0,
而不是#0。
不過以上的情況是靜態陣列是區域性變數,你可以試著把它放到程式的前面,使它成為乙個全域性變數,你可以
再進行觀察,可以發現這是,delphi已經把所有元素自動置空,這種情況下,你就不需要考慮靜態陣列的
初始化問題了。
對於字串陣列,兩種情況下,初始化時都已經清空了,不需要你去做初始化工作
二:關於動態陣列的越界問題如下:
procedure tform1.button1click(sender: tobject);
vararraydy:array of char;
begin
setlength(arraydy,100);
arraydy[0]:='a';
arraydy[1]:='b';
arraydy[99]:='c';
arraydy[100]:='d';//error! 越界
arraydy[101]:='e'; //error!越界
showmessage(arraydy[101])
end;
這是雖然陣列arraydy[100],arraydy[101]都已經越界,但是程式卻照常執行。要能夠讓delphi能夠做出
提示,可以開啟:project optionscomplierange checking開關。
使用py solc時候應該注意的問題
在安裝py solc後,如果系統還沒有安裝solidity的話,會遇到以下的問題 oserror errno 2 no such file or directory 所以需要在系統上安裝solidity環境才可以執行 在ubuntu上安裝solidity環境如下 sudo add apt repos...
ssh 使用時應該注意的問題
因為使用spring來管理整個專案類的載入和解除安裝,一 所以當使用 resource name userservice private userservice userservice 這個注釋注入載入的時候就要注意了。如 a類是資料庫操作類 b類使用了 resource這個注釋注入a類 當在c類中...
在使用靜態建構函式的時候應該注意幾點
1 靜態建構函式既沒有訪問修飾符,也沒有引數。因為是.net呼叫的,所以像public和private等修飾符就沒有意義了。2 是在建立第乙個類例項或任何靜態成員被引用時,net將自動呼叫靜態建構函式來初始化類,也就是說我們無法直接呼叫靜態建構函式,也就無法控制什麼時候執行靜態建構函式了。3 乙個類...