[問題] 如何讀到某特定位置的資料呢?? |
尚未結案
|
p6691112
一般會員 發表:1 回覆:1 積分:0 註冊:2003-07-20 發送簡訊給我 |
請問各位
假設我有一個文字檔,其內容格式如下
1
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
-99
2
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
-99
3
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
-99
4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
-99
.
.
.
其中1至16為每筆資料的位置而不是目前所看到的數值
假設我要讀取第2與3組資料的6 7 10 11位置中的數值
請問該怎麼以BCB來實現呢??
請各位先進不吝指教
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
p6691112您好:
請參考下面的code,可取得第二組的5 6 7 8
Memo1->Lines->LoadFromFile("1.txt"); TStringList* sl1 = new TStringList(); TStringList* sl2 = new TStringList(); sl1->LoadFromFile("1.txt"); AnsiString data=sl1->Strings[8]; data=StringReplace(data, " ", ",", TReplaceFlags()<順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~> |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問各位 假設我有一個文字檔,其內容格式如下 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -99 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -99 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -99 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -99 . . . 其中1至16為每筆資料的位置而不是目前所看到的數值 假設我要讀取第2與3組資料的6 7 10 11位置中的數值 請問該怎麼以BCB來實現呢?? 請各位先進不吝指教 p6691112 你好: (1)理論上依照你所提供的文字檔資料結構,的確是有方法可以取出你所指定的 特定資料,但是,恕小弟我直言,是不是太麻煩了一點??< > 是否能夠在設 計資料檔案的時候,就考慮到日後的方便性呢??< > (2)例如: 利用 ini file 來做數值的存取 (a)假設你的原始資料檔案內容改成以下這個樣子 [1] 1=100 2=200 3=300 4=400 5=500 6=600 7=700 8=800 9=900 10=1000 11=1100 12=1200 13=1300 14=1400 15=1500 16=1600 [2] 1=100 2=200 3=300 4=400 5=500 6=600 7=700 8=800 9=900 10=1000 11=1100 12=1200 13=1300 14=1400 15=1500 16=1600 [3] 1=100 2=200 3=300 4=400 5=500 6=600 7=700 8=800 9=900 10=1000 11=1100 12=1200 13=1300 14=1400 15=1500 16=1600 [4] 1=100 2=200 3=300 4=400 5=500 6=600 7=700 8=800 9=900 10=1000 11=1100 12=1200 13=1300 14=1400 15=1500 16=1600 (b)配合以下的程式碼就可以讀到你想得到的值 #include "IniFiles.hpp" // .............. int i=0; AnsiString szIniFile=ExtractFilePath(Application->ExeName) "b.txt"; TMemIniFile *ini=new TMemIniFile(szIniFile); i=ini->ReadInteger("2", "6", 0); ShowMessage(i); i=ini->ReadInteger("2", "7", 0); ShowMessage(i); i=ini->ReadInteger("2", "10", 0); ShowMessage(i); i=ini->ReadInteger("2", "11", 0); ShowMessage(i); i=ini->ReadInteger("3", "6", 0); ShowMessage(i); i=ini->ReadInteger("3", "7", 0); ShowMessage(i); i=ini->ReadInteger("3", "10", 0); ShowMessage(i); i=ini->ReadInteger("3", "11", 0); ShowMessage(i); delete ini; (c)配合以下的程式碼就可以寫入值到某個特定的位置 #include "IniFiles.hpp" // .............. int i=0; AnsiString szIniFile=ExtractFilePath(Application->ExeName) "b.txt"; TMemIniFile *ini=new TMemIniFile(szIniFile); i=9999; ini->WriteInteger("4", "1", i); delete ini; (3)當然,如果你所取得的資料檔案是你自己沒有辦法控制的話,那可能也只有 乖乖的做字串運算來取得特定的資料了 (提示: 可判斷的條件「-99」,或者 是以每 6 行為一組資料單位)-- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/11/03 21:31:22
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
p6691112
一般會員 發表:1 回覆:1 積分:0 註冊:2003-07-20 發送簡訊給我 |
感謝 taishyang 與 RaynorPao 的解答 (1)理論上依照你所提供的文字檔資料結構,的確是有方法可以取出你所指定的
特定資料,但是,恕小弟我直言,是不是太麻煩了一點?? 是否能夠在設
計資料檔案的時候,就考慮到日後的方便性呢??
1
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
-99
2
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
-99
3
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
-99
4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
-99
其實這樣的資料型態以影像的觀點來看的話
把1與-99之間的資料視為一張影像
所以在這個資料裡頭我有4張影像
比如說我需要處理每張影像的6 7 10 11等位置的資料
因此才有以上的資料型態出現
而實際上我的資料維度遠比4*4*4還大可能會用到1000*1000*1000甚至更大的維度
而且在這之中有許多位置其實並沒有資料
可是我沒有修過資料結構相關的課程也不知從何著手
因此只好傻傻的用最原始的方式紀錄我的資料
(其實有看過OCTREE的方式,但要弄懂架構並熟用的話可能不是短時間可以完成的,否則OCTREE可以大量減少我的資料量才對) 講了這麼多好像已經偏離原本的主題了...若不符版規的話煩請版主刪除
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |