線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1820
推到 Plurk!
推到 Facebook!

讀檔問題

 
nibabakaho
一般會員


發表:13
回覆:6
積分:13
註冊:2006-08-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-01-24 12:36:42 IP:125.229.xxx.xxx 訂閱
小弟我寫了一個讀RAW檔程式
不過卻出現 "Project Project1.exe raised exception class EStackOverFlow with message 'Stack overflow'. Process stopped.
Use step or run to continue
程式碼如下
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
unsigned char img[512][512];
int image[512][512];
int i,j;
FILE *fptr;
String Filename;

//read image data from file
if(OpenDialog1->Execute())
{
Filename=ExtractFilePath(OpenDialog1->FileName);
Edit1->Text=Filename;
Filename=Filename ExtractFileName(OpenDialog1->FileName);
Edit2->Text=Filename;
fptr=fopen(Filename.c_str(),"rb");
}
for(j=0; j<512; j )
for(i=0; i<512; i )
img[i][j]=fgetc(fptr);

for(j=0; j<512; j )
for(i=0; i<512; i )
image[i][j]=int(img[i][j]);
for(i=0; i<512; i )
for(j=0; j<512; j )
Image1->Canvas->Pixels[i][j]=RGB(image[i][j],image[i][j],image[i][j]);


}
//---------------------------------------------------------------------------

pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-24 13:18:01 IP:61.219.xxx.xxx 未訂閱
EStackOverFlow =>檢查陣列的索引值是否超過了宣告的大小
小弟實際測試結果, 把 512 改小就可以正常執行
至於要改到多小, 要看當時 Stack 可用記憶體多少而定

------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
nibabakaho
一般會員


發表:13
回覆:6
積分:13
註冊:2006-08-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-24 13:53:14 IP:125.229.xxx.xxx 訂閱
請問一下我那樣宣告
為什麼會超出索引值 @@"
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-01-24 15:03:21 IP:59.124.xxx.xxx 未訂閱
若索引值沒超出範圍,解決的方式有2
1.動態配置記憶體
2.調整[Project]->[Options]->[Linker]->Max Stack size



系統時間:2024-05-05 20:23:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!