全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:990
推到 Plurk!
推到 Facebook!

在主程式可運行,但掛載至DLL檔案後,卸載時會出現記憶體溢位問題

尚未結案
clps1008
一般會員


發表:1
回覆:0
積分:0
註冊:2017-11-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2017-11-07 15:31:09 IP:122.146.xxx.xxx 未訂閱
如題,用BCB元件寫一個簡單的讀檔並用DLL掛載的函式,已用過其他DLL檔(回傳加減乘除,或是修改LABEL),因此不是運作DLL檔本身的問題,該函式放在主程式執行也是沒有問題,但用DLL掛載後,讀取檔案時候,若檔案大小大了一點 (約100KB以上)時候,在EXE關掉就會出現記憶體過載的問題,反覆檢查找不到問題點,請各位大神解惑

附上DLL程式:

void __declspec(dllexport)__stdcall SG_read(TStringGrid *sg, TOpenDialog *OpenDialog1) {
TStringList *sl = new TStringList;
int i=0, j=0;
// 歸零
for (i = 0; i < sg->RowCount; i )
sg->Rows[i]->Clear();
// 讀檔
if (OpenDialog1->Execute()) {
sl->LoadFromFile(OpenDialog1->FileName);
}

// 讀入StringGrid,並用分隔符號隔開
sg->RowCount = sl->Count 1;


j = 0;
for (int row = 0; row < sl->Count; row ) {
for (int col = 1; col < sl->Strings[row].Length(); col ) {

if (sl->Strings[row].SubString(col, 1) == "\t") {
j ;
}
else {
sg->Cells[j][row] = sg->Cells[j][row] sl->Strings[row]
.SubString(col, 1);
if (sg->Canvas->TextWidth(sg->Cells[j][row])
> sg->ColWidths[j] 10)
{
sg->ColWidths[j] = sg->Canvas->TextWidth(sg->Cells[j][row])
20;
}
}
}
j = 0;
}
delete sl; //釋放記憶體
}


有引用#include
確定可以跑GRID
------
新手新鮮人一枚
編輯記錄
clps1008 重新編輯於 2017-11-07 17:32:02, 註解 無‧
clps1008 重新編輯於 2017-11-07 17:32:30, 註解 無‧
系統時間:2024-03-28 22:18:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!