自己寫了個dll,用delphi呼叫我自己delphi寫的dll,執行結果可以出來,但執行完畢後會提示記憶體訪問錯誤。我第二次呼叫的時候就直接提示記憶體訪問錯誤,無法執行。在程式中我使用了record集合作為返回記錄
uses
sharemem,
。。。。。。
var
。。。。。。
type
tps = record
sno: integer;
sname:string;
skt:string;
end;
tp=array of tps;
我的函式是
function sel(s:integer,var presult:tp):integer; export; stdcall;
begin
s:=0;
......
if (滿足條件) then
begin
s:=s+1;
setlength(presult,s);
presult[s-1].sno:=某資料;
presult[s-1].sname:=某資料;
presult[s-1].stk:=某資料;
end;
end;
請兄弟們幫忙看看**有問題啊!
把string型別換成shortstring
可能是其他**的原因,用注釋的方法或條件編繹逐塊排除
我試了一下,就是換成pchar也還是不行的了,應該就是這段**出的問題,因為沒加這段**前都是好好的,加了就有問題,我執行完畢後執行結果是有的,但會報記憶體錯誤。我第二次執行的時候居然連執行都不能執行就直接出錯了。
1.沒有string返回值,就不要用sharemem(sharemem有時會有問題,我也碰到過)
2.改string為string[250] //如果資料長度不超過250的話
或改為char[1000];
不要改為pchar,因為它要申請記憶體
用low high函式來訪問記錄陣列
我一般在訪問dll時都用pchar操作,只是多寫幾個引數罷了,可以避免很多問題的。
tp=array of tps;
ptp = ^tp;
function sel(s:integer,var presult:ptp):integer; export; stdcall;
tp改用指標
EditText文字輸入框使用完畢自動掩藏輸入法
很多時候edittext文字輸入框在輸入資訊完成操作之後後,我們希望能夠自動收縮掩藏起虛擬鍵盤,以方便處理其他業務邏輯。比喻本文中edittext文字在輸入商品編號完成商品檢索之後,需要自動掩藏虛擬鍵盤,不要遮擋其他頁面操作資訊,當下次再檢索商品資訊時,再自動彈出虛擬鍵盤完成輸入。看上圖效果,晚上輸...
序數是什麼意思 為什麼氦氣吸入後會變聲?
大家一定知道有一種能讓人聲音變細的氣球吧 那有知道氣球裡充裝的是什麼氣體嗎?為什麼人體吸入後會變聲呢?首先,氣球裡充裝的是什麼氣體呢?答案是 氦氣 那氦氣是一種什麼樣的氣體呢?氦氣 化學符號he,原子序數是2,一種無色的惰性氣體,放電時發深黃色的光。在常溫下,氦是一種極輕的無色 無臭 無味的單原子氣...
為什麼要對DLL進行簽名
曾經在乙個專案中,要求您為dll建立乙個強名稱,並且為乙個專案建立乙個強名稱,然後編譯專案解決方案開始出現奇怪的編譯錯誤。我去過很多次。面對這些問題時,我有些疑問浮出水面。讓我們仔細閱讀以下基礎知識。我們將調查以下內容 組裝 加密 雜湊 數字簽名assembly assembly是用於部署,安全性和...