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

[問題] 如何讀到某特定位置的資料呢??

尚未結案
p6691112
一般會員


發表:1
回覆:1
積分:0
註冊:2003-07-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-03 17:39:35 IP:140.116.xxx.xxx 未訂閱
請問各位 假設我有一個文字檔,其內容格式如下 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-03 19:14:24 IP:140.135.xxx.xxx 未訂閱
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()<CommaText=data;
 for (int i=0;iCount ;i  )
 {
  ShowMessage(sl2->Strings[i]);
 }
 delete sl1;
 delete sl2;
順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-03 21:23:51 IP:61.221.xxx.xxx 未訂閱
引言: 請問各位 假設我有一個文字檔,其內容格式如下 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-03 22:22:43 IP:163.28.xxx.xxx 未訂閱
感謝 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可以大量減少我的資料量才對) 講了這麼多好像已經偏離原本的主題了...若不符版規的話煩請版主刪除
系統時間:2024-06-02 0:50:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!