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

在BCB裡面,呼叫一個批次檔並修改

答題得分者是:axsoft
borispong
一般會員


發表:2
回覆:4
積分:0
註冊:2005-10-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-07-11 10:52:56 IP:210.203.xxx.xxx 訂閱
前輩們您好:
小弟想要在BCB裡面嘗試去讀取一個批次檔,並且要修改內容,譬如第幾個位元到第幾個位元之間,之前有拜過Google大師,可是還是感到困惑,煩請前輩們,提示或是給個方向,最好是有簡單的範例,可以讓小弟參考一下嘍!
JH
一般會員


發表:3
回覆:13
積分:3
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-07-11 16:37:06 IP:203.75.xxx.xxx 未訂閱

或許你可以先讀取 * .bat file 的內容到一個String, 然後去修改這個String的內容之後,再寫入 *.bat file

borispong
一般會員


發表:2
回覆:4
積分:0
註冊:2005-10-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-07-11 22:12:27 IP:210.203.xxx.xxx 訂閱
小弟愚昧,敢問前輩,您說將bat file的內容讀到一個string裡面,請問是使用啥方法呢?或是利用那個函數呢?
那假設成功可以讀到一個string裡面的話,那我應該怎麼去修改第幾個位元到幾個位元的值呢?
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-07-12 16:22:50 IP:61.219.xxx.xxx 未訂閱

以下是MemoryStream讀取跟寫入的方法,至於中間字串該如何處理...自己思考一下...
大致的檔案處理架構是如此.

//---------------------------------------------------------------------------
//寫入
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TMemoryStream *mswWrite=new TMemoryStream;
BYTE data=0;
mswWrite->Size=256;
for(int i=0; iSize; i )
{
mswWrite->Position=i;
data=i;
mswWrite->Write(&data, 1);
}
mswWrite->SaveToFile("test.bat");
delete mswWrite;
}
//---------------------------------------------------------------------------
//讀取
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TMemoryStream *msRead=new TMemoryStream;
msRead->LoadFromFile("test.bat");
BYTE data=0;
for(int i=0; iSize; i )
{
msRead->Position=i;
data=i;
msRead->Read(&data,1);
ShowMessage(data);
}
delete msRead;
}
//---------------------------------------------------------------------------

===================引 用 文 章===================
小弟愚昧,敢問前輩,您說將bat file的內容讀到一個string裡面,請問是使用啥方法呢?或是利用那個函數呢?
那假設成功可以讀到一個string裡面的話,那我應該怎麼去修改第幾個位元到幾個位元的值呢?
JH
一般會員


發表:3
回覆:13
積分:3
註冊:2006-07-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-07-12 16:30:15 IP:203.75.xxx.xxx 未訂閱


===================引 用 文 章===================
小弟愚昧,敢問前輩,您說將bat file的內容讀到一個string裡面,請問是使用啥方法呢?或是利用那個函數呢?
那假設成功可以讀到一個string裡面的話,那我應該怎麼去修改第幾個位元到幾個位元的值呢?

====================================================

把一些字串寫入*.Bat:

[Sample code start]

FILE *write;

String WritePath,str;

WritePath = "C:\\my.bat";

str="abcdefg12345";

write = fopen(WritePath.c_str() ,"w");
fprintf(write,"%s",str);
fclose(write);

[Sample code End]

你寫能夠使用 fopen 的方式去讀取 *.bat 的內容到字串裡, 讀出來後, 去修改這個

字串的內容,再寫入即可

borispong
一般會員


發表:2
回覆:4
積分:0
註冊:2005-10-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-07-12 21:11:09 IP:210.203.xxx.xxx 訂閱
感謝axsoft和JH前輩的指導,小弟實做看看,有不懂的地方,再向兩位前輩請教,感謝你們嘍!!
borispong
一般會員


發表:2
回覆:4
積分:0
註冊:2005-10-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-07-13 20:14:54 IP:210.203.xxx.xxx 訂閱
axsoft前輩您好:
您所提供給我的範例,實做上面目前在讀取方面是OK的,可是在寫入方面的話,有遇到點問題,像是在資料方面,你是宣告成BYTE,其參數為data沒錯吧!!可是我想要改成使用TEdit的方式來輸入值給data就會發生問題"無法轉換AnsiString to unsigned char",不知有沒有方法可以解決,我有試著將TEdit前面加上StrToInt也是沒有用。煩請您幫個忙嘍!
CoffeeX
中階會員


發表:18
回覆:121
積分:72
註冊:2005-02-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2006-08-15 22:54:47 IP:140.125.xxx.xxx 未訂閱

你要不要試試看使用TStringList把他當做純文字檔處理,

最後再更換副檔名...

只要可以用記事本開的檔案似乎都可以這樣作...
===================引 用 文 章===================
前輩們您好:
小弟想要在BCB裡面嘗試去讀取一個批次檔,並且要修改內容,譬如第幾個位元到第幾個位元之間,之前有拜過Google大師,可是還是感到困惑,煩請前輩們,提示或是給個方向,最好是有簡單的範例,可以讓小弟參考一下嘍!

------
=.=???
gyl_60939
一般會員


發表:0
回覆:4
積分:0
註冊:2006-08-16

發送簡訊給我
#9 引用回覆 回覆 發表時間:2006-08-16 11:19:59 IP:218.186.xxx.xxx 未訂閱

如果你不介意介面多出一個TMemo, 你可以加一個Memo1, 然後用Memo1->Lines->LoadFromFile("C:\\test.bat"); 把內容轉到Memo1, 然後在從Memo1中作你的事情

把Memo1的內容複製到一個新的AnsiString TestString,然後做完後,Memo1->Clear(); Memo1->Lines->Append(TestString);

最後再Memo1->Lines->SaveToFile("C:\\new_test.bat");

borispong
一般會員


發表:2
回覆:4
積分:0
註冊:2005-10-25

發送簡訊給我
#10 引用回覆 回覆 發表時間:2006-08-18 23:54:08 IP:220.134.xxx.xxx 訂閱
感謝您所提供的方法,小弟目前也是有採用過此方法,的確是方便,但是就是要多一個Memo嘍!當然上面大大所提供的其它方式都是不錯的選擇,
系統時間:2024-05-14 4:27:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!