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

開啟RAW圖檔使用fwrite時發生的錯誤訊息

答題得分者是:taishyang
etgees
一般會員


發表:10
回覆:11
積分:4
註冊:2008-11-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-12 15:32:26 IP:140.128.xxx.xxx 訂閱

[code cpp]
請在此區域輸入程式碼

void __fastcall TForm1::open1Click(TObject *Sender)
{
int i,j,k,a,b,c;
char *fname;
FILE *ptr_raw;
if(OpenDialog1->Execute())
{
imagefile=fopen(OpenDialog1->FileName.c_str(),"rb"); //讀進RAW檔
for(i=0;i {
for(j=0;j {
for(k=0;k<3;k )
{
image[j][i][k]=fgetc(imagefile); //放進3為陣列裡
}
}
}
for(i=0;i {
for(j=0;j {
Image1->Canvas->Pixels[i][j]=(TColor)RGB(image[i][j][0],image[i][j][1],image[i][j][2]); //顯示出來
}
}
}
for(i=0;i {
for(j=0;j {
Rimage[i][j][0]=image[i][j][0];
Rimage[i][j][1]=image[i][j][1];
Rimage[i][j][2]=image[i][j][2]; //轉存到RImage陣列
}
}

fwrite(Rimage,sizeof(unsigned char),W*H*dim,result); //寫進result裡, 就是這行出問題..

fclose(result);
fclose(imagefile);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::save1Click(TObject *Sender)
{
SaveDialog1->Execute();
result=fopen(SaveDialog1->FileName.c_str(),"wt"); 將result內容存進指定檔名的檔案
}

[/code]

嗯...主要就是如果有fwrite那行語法, 就會出現


這錯誤句...

要是沒有fwrite這行 開檔可以正常執行並顯示

我是用原本完成的C語言程式改寫過來的

fwrite沒修改,但在BCB就會出這個問題

Compiler全過, 但是在開啟檔案後就出跳出那錯誤訊息

請各位不吝指教

謝!
附加檔案:491a868a86d8f_Error.rar
編輯記錄
etgees 重新編輯於 2008-11-12 15:34:35, 註解 無‧
etgees 重新編輯於 2008-11-12 15:54:04, 註解 無‧
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-12 15:50:17 IP:118.169.xxx.xxx 訂閱
純猜測

for(i=0;i<=W;i ) //不應該有等號
for(j=0;j<=H;j ) //不應該有等號

etgees
一般會員


發表:10
回覆:11
積分:4
註冊:2008-11-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-12 15:57:29 IP:140.128.xxx.xxx 訂閱
嗯嗯   我把程式跟原文都修改過了  

可是還是一樣的錯誤 囧?

嗯...還是有沒有別種寫法能不用fwrite , 將陣列資料寫入result裡輸出?
taishyang
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-12 16:58:58 IP:118.169.xxx.xxx 訂閱

//--------------------------------------------------------------------------
void __fastcall TForm1::open1Click(TObject *Sender)
{
int i, j, k;
if(OpenDialog1->Execute()){
FILE *imagefile = fopen(OpenDialog1->FileName.c_str(),"rb");
for(i=0; i < W; i ){
for(j=0; j < H; j ){
for(k=0; k < 3; k ){
image[j][i][k]=fgetc(imagefile);
}
}
}

for(i=0; i < W; i ){
for(j=0; j < H; j ){
Image1->Canvas->Pixels[i][j]=(TColor)RGB(image[i][j][2], image[i][j][1], image[i][j][0]);
}
}

for(i=0; i < W; i ){
for(j=0; j < H; j ){
Rimage[i][j][0]=image[i][j][0];
Rimage[i][j][1]=image[i][j][1];
Rimage[i][j][2]=image[i][j][2];
}
}

fclose(imagefile);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::save1Click(TObject *Sender)
{
if(SaveDialog1->Execute()){
FILE *result = fopen(SaveDialog1->FileName.c_str(),"wt");
fwrite(Rimage, W*H*dim, sizeof(unsigned char), result);
fclose(result);
}
}
//---------------------------------------------------------------------------

編輯記錄
taishyang 重新編輯於 2008-11-12 16:59:59, 註解 無‧
taishyang 重新編輯於 2008-11-12 17:03:47, 註解 無‧
etgees
一般會員


發表:10
回覆:11
積分:4
註冊:2008-11-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-11-18 22:11:31 IP:220.140.xxx.xxx 訂閱
我用你寫的程式碼在存檔的時候顯示出了問題

後來發現是:

FILE *result = fopen(SaveDialog1->FileName.c_str(),"wt");

那個"wt"要改成"wb"

是因為現在在處理raw檔的關係吧

改過後就全都正常囉~

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