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

讀 binary file 問題!!!!!

尚未結案
hcjmky
一般會員


發表:1
回覆:3
積分:0
註冊:2005-01-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-17 00:10:42 IP:218.32.xxx.xxx 未訂閱
各位高手: 我最近在讀一個 binary file 發現一個問. 當檔案內有 0x0d and 0x0a 相連時我只能讀到 0x0a ,我試過各總方法還是無法解決,希望能有大大能幫忙解決. 謝謝. void TForm1::load_file() { int i=0,j=0; unsigned char buff[10]={'\0','\0','\0'},wdata=0; _fmode=O_BINARY; ifstream InputFile("key.bin",ios::in|ios::binary); for(i=1;i<=16;i ) { for(j=1;j<=16;j ) { InputFile.read(buff,10); StringGrid1->Cells[j][i]=NULL; StringGrid1->Cells[j][i]=IntToHex(buff[0],2); } }
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-17 08:58:53 IP:61.66.xxx.xxx 未訂閱
我沒這樣讀過,不知道是不是會發生你說的問題 不過你可以用fgetc()去讀,它可以讀到所有的字元
hcjmky
一般會員


發表:1
回覆:3
積分:0
註冊:2005-01-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-17 09:38:37 IP:60.248.xxx.xxx 未訂閱
>>我沒這樣讀過,不知道是不是會發生你說的問題 >>不過你可以用fgetc()去讀,它可以讀到所有的字元 blk5743 大大: fgetc(),get(),...... 我都試過( bcb5 , bcb6 ) 我猜可能bcb上必須做其他設定而我 沒有找到,又或者 bcb 內定形態為 text mode 但是我設訂的方式 有問題.才造成0x0d 0x0a==>0x0a( text mode ).
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-17 10:29:29 IP:61.66.xxx.xxx 未訂閱
 
#include     void __fastcall TForm1::FormCreate(TObject *Sender)
{
    FILE *fp = fopen("C:\\a.txt","rb");
    char ch;        while ( (ch = fgetc(fp)) != EOF );
}
a.txt的內容為 1234(後接0x0D,0x0A) abcd(後接0x0D,0x0A) ABCD(後接0x0D,0x0A) 都讀得到0x0D,0x0A沒什麼問題
hcjmky
一般會員


發表:1
回覆:3
積分:0
註冊:2005-01-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-17 11:43:58 IP:60.248.xxx.xxx 未訂閱
blk5743 : 謝謝 問題已解. hcjmky
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-17 13:40:31 IP:61.66.xxx.xxx 未訂閱
hcjmky你好 我很好奇你的問題到底在哪裡?? 為什麼原來的方式讀不到0x0D??
hcjmky
一般會員


發表:1
回覆:3
積分:0
註冊:2005-01-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-17 14:01:26 IP:60.248.xxx.xxx 未訂閱
非常抱歉是我自己的問題啦 ,因為我用> >
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-17 15:50:56 IP:61.66.xxx.xxx 未訂閱
引言: 非常抱歉是我自己的問題啦 ,因為我用ultraedit 開檔來核對,而我將 它開為 dos mode (內容有 0x0a 則另外會自動補上 0x0d->0x0a = 0x0d 0x0a) ,所以我誤判內容有 0x0d 0x0a , 是實上只有0x0a 而以 ,害我搞了好幾天
不會啦,也感謝你分享資訊,因為我不知道開成DOS MODE會把 0x0A => 0x0D, 0x0A
系統時間:2024-05-19 17:22:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!