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

請問一下,如何將TXT檔的內容轉成數字型態的矩陣~

答題得分者是:jow
cindy54610
一般會員


發表:1
回覆:3
積分:5
註冊:2007-10-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-10-24 12:10:29 IP:140.118.xxx.xxx 訂閱
你好:
最近用BCB寫老鼠走迷宮的程式,在讀檔發生問題~

#,#,#,#,#,#,#,#,#
#,‧,‧,‧,‧,‧,‧,‧,#
#,‧,#,#,‧,#,#,‧,#
#,‧,#,‧,‧,#,‧,‧,#
#,‧,#,‧,#,‧,#,‧,#
#,‧,‧,‧,‧,‧,#,‧,#
#,#,‧,#,#,‧,#,#,#
#,‧,‧,‧,‧,‧,‧,‧,#
#,#,#,#,#,#,#,#,# 我想要轉成數字型的矩陣

int maze[9][9] = {{2, 2, 2, 2, 2, 2, 2, 2, 2},
{2, 0, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 2, 2, 0, 2, 2, 0, 2},
{2, 0, 2, 0, 0, 2, 0, 0, 2},
{2, 0, 2, 0, 2, 0, 2, 0, 2},
{2, 0, 0, 0, 0, 0, 2, 0, 2},
{2, 2, 0, 2, 2, 0, 2, 2, 2},
{2, 0, 0, 0, 0, 0, 0, 0, 2},
{2, 2, 2, 2, 2, 2, 2, 2, 2}};

可以麻煩教我寫一下嗎(我用的是BCB6.0)?非常感謝唷^^

另外,如果是沒有","分隔的話我又要怎麼寫呢?

#########
#‧‧‧‧‧‧‧#
#‧##‧##‧#
#‧#‧‧#‧‧#
#‧#‧#‧#‧#
#‧‧‧‧‧#‧#
##‧##‧###
#‧‧‧‧‧‧‧#
#########
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-10-24 13:46:21 IP:210.66.xxx.xxx 訂閱
參考這一篇 http://delphi.ktop.com.tw/board.php?cid=168&fid=1499&tid=90919
稍微修改一下應該就可以用了.
cindy54610
一般會員


發表:1
回覆:3
積分:5
註冊:2007-10-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-10-24 14:44:16 IP:140.118.xxx.xxx 訂閱
不好意思唷!因為我的非常新的新手,所以可不可以教我一個比較淺顯易懂的程式,讓我更加了解呢?


String a;
char *tChar;
AnsiString str1[9]={0};

if(OpenDialog1->Execute())
if(OpenDialog1->FileName!="")
{
Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
}
for(int i=0;i<9;i )
{
str1[i]=Memo1->Lines->Strings[i];
tChar = str1[i].c_str();
for(int j=0;j<9;j )
{
if(tChar[i]=='‧')
maze[i][j]=0;
else if(tChar[i]=='#')
maze[i][j]=2;
}
}
但是maze[9][9]內容都是0耶???一怎麼寫才可以將數字正確的放入數字型態矩陣maze[9][9]中呢?
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-10-24 18:14:35 IP:123.193.xxx.xxx 訂閱
"‧", "#" 是全形字, 各佔2byte..

LAYOUT.TXT的內容:

#########
#‧‧‧‧‧‧‧#
#‧##‧##‧#
#‧#‧‧#‧‧#
#‧#‧#‧#‧#
#‧‧‧‧‧#‧#
##‧##‧###
#‧‧‧‧‧‧‧#
#########


檔案LAYOUT2.TXT的內容:

#,#,#,#,#,#,#,#,#
#,‧,‧,‧,‧,‧,‧,‧,#
#,‧,#,#,‧,#,#,‧,#
#,‧,#,‧,‧,#,‧,‧,#
#,‧,#,‧,#,‧,#,‧,#
#,‧,‧,‧,‧,‧,#,‧,#
#,#,‧,#,#,‧,#,#,#
#,‧,‧,‧,‧,‧,‧,‧,#
#,#,#,#,#,#,#,#,#


[code cpp]
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int maze[9][9];
AnsiString S, T;
char *filename = "LAYOUT.TXT";

if(FileExists(filename)){
TStringList *L = new TStringList();
try{
memset(&maze,0,sizeof(maze));
L->LoadFromFile(filename);
for(int i=0; i<9; i ){
for(int j=0; j<9; j ){
S = L->Strings[i].SubString(j*2 1,2);
if(S=="‧")maze[i][j]=0;
else if(S=="#")maze[i][j]=2;
}
}

//顯示結果
L->Clear();
for(int i=0;i<9;i ){
T="";
for(int j=0;j<9;j )
T =S.sprintf("%d",maze[i][j]);
L->Add(T);
}
Memo1->Lines->Text=L->Text;
}
__finally{
delete L;
}
}
}


//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int maze[9][9];
AnsiString S, T;
char *filename = "LAYOUT2.TXT";
TStringList *L, *M;

M = new TStringList();
try{
if(FileExists(filename)){
L = new TStringList();//產生TStringList物件
try{
L->LoadFromFile(filename);
M->CommaText = L->Text;
}
__finally{
delete L; //TStringList用畢後釋放
}
}

memset(&maze,0,sizeof(maze));
for(int i=0; i<81; i ){
S = M->Strings[i];
if(S=="‧")maze[i/9][i%9]=0;
else if(S=="#")maze[i/9][i%9]=2;
}

//顯示結果
M->Clear();
for(int i=0;i<9;i ){
T="";
for(int j=0;j<9;j )
T =S.sprintf("%d",maze[i][j]);
M->Add(T);
}
Memo1->Lines->Text=M->Text;
}
__finally{
delete M;
}
}
//---------------------------------------------------------------------------

[/code]
編輯記錄
jow 重新編輯於 2007-10-24 18:15:17, 註解 無‧
jow 重新編輯於 2007-10-24 20:43:12, 註解 無‧
jow 重新編輯於 2007-10-24 20:47:15, 註解 無‧
jow 重新編輯於 2007-10-24 20:50:18, 註解 無‧
cindy54610
一般會員


發表:1
回覆:3
積分:5
註冊:2007-10-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-10-25 10:53:46 IP:140.118.xxx.xxx 訂閱
真是感謝你了,我終於了解了。...謝謝你唷....
系統時間:2024-04-25 16:19:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!