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

轉出bin檔

答題得分者是:aftcast
wa063
一般會員


發表:5
回覆:10
積分:3
註冊:2010-11-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-01-16 15:36:02 IP:59.124.xxx.xxx 訂閱
請教各位先進,目前小弟我有定義以下數值...
char aa[8]= {0x00,0x40,0x05,0x00,0x01,0x01,0x00,0x01};

想將 aa[8]內的0x00,0x40,0x05,0x00,0x01,0x01,0x00,0x01輸出bin檔,可以再開啟BIN檔程式顯示00 40 05 00 01 01 00 01之數值,
但小弟轉出來的BIN檔案,不是正確的BIN檔,請教如何轉出BIN檔?!感謝!!

程式碼如下:

void __fastcall TForm1::Button2Click(TObject *Sender)
{
char aa[8]= {0x00,0x40,0x05,0x00,0x01,0x01,0x00,0x01};
Form1->Memo2->Clear();
AnsiString Test_String="";
for(int i=0;i<8;i )
{
Test_String =aa[i];
}
Form1->Memo2->Lines->Add(Test_String);
Form1->Memo2->Lines->SaveToFile("C:\\TestBIN.txt");
}
編輯記錄
wa063 重新編輯於 2013-01-16 00:39:09, 註解 無‧
wa063
一般會員


發表:5
回覆:10
積分:3
註冊:2010-11-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-01-16 18:11:37 IP:59.124.xxx.xxx 訂閱
有參考http://delphi.ktop.com.tw/board.php?cid=168&fid=913&tid=87768之方式,可解決我的問題了!!

修改程式碼如下:

void __fastcall TForm1::Button2Click(TObject *Sender)
{
char Data[8] = {0x00,0x40,0x05,0x00,0x01,0x01,0x00,0x01};
TMemoryStream *ms = new TMemoryStream;
ms->Write((char*)Data, 8);
ms->SaveToFile("C:\\Data.bin");
delete ms;
ms = NULL;
}
aftcast
站務副站長


發表:81
回覆:1482
積分:1762
註冊:2002-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2013-01-16 19:04:46 IP:49.219.xxx.xxx 訂閱

[code cpp]
void __fastcall TForm1::_btn1Click(TObject *Sender)
{
char aa[]= {0x00,0x40,0x05,0x00,0x01,0x01,0x00,0x01};
TMemoryStream *ms = new TMemoryStream;
ms->Write(aa,sizeof(aa));
ms->SaveToFile("d:\\test3");
delete ms;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::_btn2Click(TObject *Sender)
{
TMemoryStream *ms = new TMemoryStream;
ms->LoadFromFile("d:\\test3");
AnsiString as;
for (int i=0;iSize ;i )
{
as = as IntToHex(((char*)ms->Memory)[i],2) AnsiString(" ");
}
delete ms;
this->_mmo1->Lines->Add(as);
}
//---------------------------------------------------------------------------
[/code]

以上bcb6完成。我一直改是因為…怎麼code貼出去都變成 html 的 CODE@@

------



蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2013-01-16 04:05:32, 註解 無‧
aftcast 重新編輯於 2013-01-16 04:06:10, 註解 無‧
aftcast 重新編輯於 2013-01-16 04:07:02, 註解 無‧
aftcast 重新編輯於 2013-01-16 04:10:31, 註解 無‧
wa063
一般會員


發表:5
回覆:10
積分:3
註冊:2010-11-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2013-01-17 08:27:07 IP:59.124.xxx.xxx 訂閱
感謝aftcast 先進大大熱心解答,分數還是給您,非常感謝!!
aftcast
站務副站長


發表:81
回覆:1482
積分:1762
註冊:2002-11-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2013-01-17 09:16:24 IP:114.32.xxx.xxx 訂閱
謝謝,是我回慢了,不過想說也許未來也有人有同樣的問題,所以還是貼了!    ^^

此外,還有一個要注意的地方! 很重要,若你的二進位裡有大於等於0x80時,那個button click2的地方show的就會錯,所以,可以的話還是改成

as = as IntToHex(((unsigned char*)ms->Memory)[i],2) AnsiString(" ");

你可以試看看把
char aa[]= {0x00,0x40,0x05,0x00,0x01,0x01,0x00,0x80};

就會知道我說的了! ^^


===================引 用 wa063 文 章===================
感謝aftcast 先進大大熱心解答,分數還是給您,非常感謝!!
------



蕭沖
--All ideas are worthless unless implemented--

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