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

有關binary檔的讀寫問題

答題得分者是:brook
hjlin
一般會員


發表:63
回覆:48
積分:22
註冊:2003-02-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-19 18:39:33 IP:61.56.xxx.xxx 未訂閱
請教一下各位,我的目的是想從*.bin檔讀取byte值,然後合併成word值 例如  00 01 02 03   結果為 0001 0203 ... 以下程式要如何修改比較好?
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TMemoryStream *TMS=new TMemoryStream();
  char *pt;
  String i,buffer;
  if(OpenDialog1->Execute())
  {
    TMS->LoadFromFile(OpenDialog1->FileName);
  }
  pt=(BYTE *)TMS->Memory;
  i=pt;
  buffer = i;
  for (int i=0; i< 7; i  )
  {
    buffer=buffer *(pt  );
    Application->ProcessMessages();
  }
  ShowMessage(buffer);
  delete TMS;
}
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-20 10:32:34 IP:211.76.xxx.xxx 未訂閱
1.一般byte合併成word值,只要設一個word的指標,把指標指到byte的地方就可以了. 例: WORD *p = (WORD*)pt;    2.你的程式是把byte的值, 兩兩一組, 轉成AnsiString, 中間用空隔隔開, 試試:
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TMemoryStream *TMS=new TMemoryStream();
  char *pt;
  String i,buffer;
  if(OpenDialog1->Execute())
  {
    TMS->LoadFromFile(OpenDialog1->FileName);
  }
  pt=(BYTE *)TMS->Memory;
//  i=pt;
//  buffer = i;
AnsiString s;
  for (int i=0; i< 7; i++)
  {
    buffer=buffer+s.IntToHex(int(pt[2*i]),2)+s.IntToHex(int(pt[2*i+1]),2)+" ";
    Application->ProcessMessages();
  }
  ShowMessage(buffer);
  delete TMS;
}
系統時間:2024-09-19 10:21:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!