我要如何做才能抓到txt檔的數字 |
答題得分者是:RedSnow
|
iii0628
一般會員 發表:50 回覆:46 積分:19 註冊:2005-04-04 發送簡訊給我 |
螢幕尺寸為1280*1024
請問我要怎麼寫,才能抓到txt檔中以數字排列成的2個圓形。我現在要將2個圓形的相對位置做相加.. Report Name : ABxxxx.x-x-xx Title : XXXX XXX XXX XX-XXX-XXXX XX:XX:XX page : X ************************************************************************************************************************************ Product Name : OVxxxx-Tx Tester Name : Txxxx
LOT No. : FHxxxx.x Wafer No. : xx
Start Time : xxxx-xx-xx-xx:xx:xx End Time : xxxx-xx-xx-xx:xx:xx
Operator ID : xxxxxxx Test Program : TMLxxx_Tx_Rx_Xx_VGA.tp
Probe Card : Pxxxx-xxxx Load Board : PBxxx-xxxx
Gross Die : xxx
. 1 1 1 1 1 1 1
30 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 4 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
25 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 15 1 1 1 1 1 1 1 1 1 1 11 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 1 1 1 1 1 1 1 1 3
. 1 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 1 15 1
. 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1
20 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 3 1 1 15 1 1 1 15 1 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15
. 1 1 1 1 1 1 1 15 1 1 1 1 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 15
. 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15
15 1 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 9 1 1 1 1 1 1 1 15
. 1 1 1 1 1 1 1 1 1 1 1 1 3 6 1 26 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 4 1 9 1 15
. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15
. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 1 1 1 3
. 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
10 1 1 1 27 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 1 6 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 15 1 1 1 3 1 3
. 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 26 1 1 15 1
. 2 1 3 1 1 15 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 1 1 1 1 6
5 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
. 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 3
0 1 1 1 3 3 3 3 3 1 3 1 1
..:..............:..............:..............:..............:..............:..............:..............:
0 5 10 15 20 25 30 35 Report Name : ABxxxx.x-x-xx Title : XXXX XXX XXX XX-XXX-XXXX XX:XX:XX page : X ************************************************************************************************************************************ Product Name : AAxxxx-AA Tester Name : Axxxx
LOT No. : AAxxxx.x Wafer No. : xx
Start Time : xxxx-xx-xx-xx:xx:xx End Time : xxxx-xx-xx-xx:xx:xx
Operator ID : xxxxxxx Test Program : AAAxxx_Tx_Ax_Xx_AAA.tp
Probe Card : Pxxxx-xxxx Load Board : PBxxx-xxxx
Gross Die : xxx
. 1 1 1 1 1 1 1
30 1 1 1 15 1 9 1 1 1 1 1 1 1 14
. 1 1 1 1 1 1 26 15 1 1 1 1 6 1 1 1 1 6
. 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 15 1 1 1 1 1 1 1 1 1 1 1 9 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 1 1 1 1 1 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
25 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 15 1 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3
. 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 26 1 9 1 1 1 1 14 1
. 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9 1 1 1 1 1 1 14 3 15
20 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15
. 1 1 1 1 1 1 6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15
. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 1 1 1 1 1 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 1 1 1 3
. 1 9 1 1 1 1 1 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 1 1 1 1 1 15 28 1 1 1 1 1 1 1 1 15 1 1 1 1 1 1 1 15 1 1 1 1 1 1
. 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 1 1 15 1 1 1 1
. 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 1 1 1 1 6 1 1 1 1 1
. 1 1 1 15 15 15 1 1 1 1 1 15 1 1 1 1 1 1 6 15 1 1 1 15 1 1 1 1 1
5 1 1 1 1 1 1 1 1 1 1 1 15 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 2
. 1 1 1 1 1 1 1 1 1 1 1 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1
. 1 1 1 6 1 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 1 2
. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 1 1 1 3 1 3 1 1 1 1 6
..:..............:..............:..............:..............:..............:..............:..............:
0 5 10 15 20 25 30 35
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
|
iii0628
一般會員 發表:50 回覆:46 積分:19 註冊:2005-04-04 發送簡訊給我 |
|
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
|
iii0628
一般會員 發表:50 回覆:46 積分:19 註冊:2005-04-04 發送簡訊給我 |
你好:我現在是想把TXT的內容放在StringGrid元件上再進行相加,不過前一個步驟就是要先將"英文字母"和"."去掉,只是要怎麼做才可以將"英文字母"和"."去掉只留下2個以數字排成的圓形...謝謝 我目前寫這樣的話,只能在txt檔案中都是數字下,才能WORK
void __fastcall TForm1::BitBtn1Click(TObject *Sender) { int i=0, j=0,x=0,y=0; int iArray[1224][1624]; AnsiString sz; TStringList *sl1=NULL; TStringList *sl2=NULL; if (OpenDialog1->Execute()) { sl1=new TStringList; sl1->LoadFromFile(OpenDialog1->FileName); for(i=0; i |
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
iii0628 您好: 因為您未說明一些其它的相關細節 (資料是否像您貼上來的一樣,都是固定格式?加號的處理?句號是否有其它作用?),因此我依據您貼上來的資料,單純的將您的程式修改如下,如此可過濾掉以文字開頭的資料行,同時將句號與加號直接清除掉,如果句號與加號有其它作用的話,請您依據需要自行修改處理過程:
void __fastcall TForm1::BitBtn1Click(TObject *Sender) { int i=0, j=0,x=0,y=0; int iArray[256][256]; AnsiString sz; TStringList *sl1 = NULL; TStringList *sl2 = NULL; AnsiString nStr = ".0123456789"; if (OpenDialog1->Execute()) { sl1 = new TStringList; sl1->LoadFromFile(OpenDialog1->FileName); for (i=0; i |
iii0628
一般會員 發表:50 回覆:46 積分:19 註冊:2005-04-04 發送簡訊給我 |
RedSnow你好:謝謝你的回應,不好意思我沒說清楚我這個程式的功能,我現在)""只要將2個以數字排列出來的圓形貼到StringGrid元件上""(要按照排列出來的圓形位置貼上)其他東西都要刪掉。再將2個圓形的相對位置做相加之後產生另外一個新的圓形出來 之後再連結到EXCEL中做分析(這一部份我已經寫好了) 另外最左邊第一行的.30 ....25 ....20 ....15 ....10 ....5 ....0 (這是Y座標)都要刪掉
再下列是
..:..............:..............:..............:..............:..............:..............:..............:
0 5 10 15 20 25 30 35 也要刪掉(這是X座標) 你修改過的程式,跑出來沒有任何結果勒..
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
iii0628 您好: 您所說的 "跑出來沒有任何結果" 應該是您未將 x 與 y 的值做相應調整的關係吧?我不知道您為何沒有做處理,因此我在前一篇的程式中並未去動它,我依據您前一篇所補充的說明,再次修改程式如下,您再試試看:
void __fastcall TForm1::BitBtn1Click(TObject *Sender) { int i=0, j=0,x=0,y=0; int iArray[256][256]; AnsiString sz; TStringList *sl1=NULL; TStringList *sl2=NULL; AnsiString nStr = ".0123456789"; AnsiString chkStr; if (OpenDialog1->Execute()) { sl1 = new TStringList; sl1->LoadFromFile(OpenDialog1->FileName); for (i=0; i對了,前一篇忘了說明,為了方便我自己的測試,我將 iArray 陣列大小做了修改,您自己斟酌改成您要的值。 |
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
iii0628: void __fastcall TForm1::Button1Click(TObject *Sender) { int i=0, j=0,x=0,y=0,k=0; int iArray[250][250]; AnsiString sz; TStrings* sl1 = new TStringList(); TStrings* sl2 = new TStringList(); if (OpenDialog1->Execute()) { sl1->LoadFromFile(OpenDialog1->FileName); for(i=0; iAndy Chang
------
Andy Chang |
iii0628
一般會員 發表:50 回覆:46 積分:19 註冊:2005-04-04 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
iii0628 您好:
引言:RedSnow你好:1.我現在的圓形如果是下面的連結的話,該如何修改,謝謝 2.如果方便的話麻煩請您解釋一下下面2行程式碼 nStr.Pos(chkStr.c_str()[0]) > 0 && chkStr.SubString(1,2) != "0 " sz = StringReplace(sl1->Strings[i], ". ", "", TReplaceFlags()< http://delphi.ktop.com.tw/loadfile.php?TOPICID=22709728&CC=507892 謝謝你我先回覆您第二個問題如下: nStr.Pos(chkStr.c_str()[0]) > 0 將 chkStr 的第一個字元與 nStr 做比對,如果傳回值大於 0 就代表該字元是數字或是小數點,應該要進行拆解 chkStr.SubString(1,2) != "0 " chkStr 的前兩個字元等於 "0 " 時,視為 x 座標的標尺資料,無需進行拆解 sz = StringReplace(sl1->Strings[i], ". ", "", TReplaceFlags()<接著回覆您第一個問題: 看了您上傳檔案的內容後,才知道原來是檔案內容的差異關係,難怪兩邊的測試結果會不同,您貼在這裡的資料並未在前後加上 [code] 與 [/code] 這一組指令簡碼,空白字元會被壓縮掉,所以複製下來的資料與您實際上使用的資料並不相同。 我依據您這次上傳的檔案內容再度做過測試,並修改了程式內容如下: void __fastcall TForm1::BitBtn1Click(TObject *Sender) { int col=0; int row=0; int iArray[256][256]; AnsiString sz; TStringList *slRow = new TStringList; TStringList *slCol = new TStringList; AnsiString nStr = ".0123456789"; AnsiString chkStr; if (OpenDialog1->Execute()) { slRow->LoadFromFile(OpenDialog1->FileName); for (int i=0; i您再試試看吧。 |
iii0628
一般會員 發表:50 回覆:46 積分:19 註冊:2005-04-04 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
iii0628 您好: 您是指 "需要擷取數字那些資料行" 裡的空白字元嗎?如果是的話,我個人是覺得這種 "資料" 的設定方式很奇怪,而且不妥當,怎麼會有 "資料有空白字元,卻又以空白字元當作分隔字元" 這種情形發生呢?這種做法似乎不太合理,為什麼那些 "空白字元資料" 不使用 "0" 或是其它字元來設定呢?要不然就使用其它的符號字元 (例如:逗號) 來當作 "分隔字元" 也可以啊? 如果那些資料一定要現在的方式來產生與分析,那就必須要有一些規則可供參考,例如:數字的最大位數是幾位?每個資料行的資料數量有幾個?否則難以拆解這種 "資料與分隔符號相同" 的資料。
|
iii0628
一般會員 發表:50 回覆:46 積分:19 註冊:2005-04-04 發送簡訊給我 |
RedSnow你好:這是WAFER的良率分析,機器分析出來之後產生的檔案就是這種格式。我現在是要將每一片WAFER的結果統計在一起(之後還會再寫將每一片WAFER相對位置相加再處理)。所以位置上一定要照原始檔案排列才行。
可能是我沒表達清楚,不好意思。我現在的問題是可以照原始檔案排列嗎???(空字元可以刪除)
例如:原始檔案是
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1那複製到StringGrid上時希望是這樣 11 1111 11111111 1111 11 而不是 11 1111 11111111 1111 11發表人 - iii0628 於 2005/06/10 16:46:26 |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
iii0628 您好: 我先假設您的資料都是固定寬度,且先暫時不考慮例外狀況,修改程式如下:
void __fastcall TForm1::BitBtn1Click(TObject *Sender) { int col=0; int row=0; int iArray[256][256]; TStringList *slRow = new TStringList; TStringList *slCol = new TStringList; AnsiString nStr = ".0123456789"; AnsiString chkStr; AnsiString sz; AnsiString tmp; if (OpenDialog1->Execute()) { slRow->LoadFromFile(OpenDialog1->FileName); for (int i=0; i您先試一下,有問題再討論。 |
iii0628
一般會員 發表:50 回覆:46 積分:19 註冊:2005-04-04 發送簡訊給我 |
|
penny015
一般會員 發表:20 回覆:15 積分:7 註冊:2005-03-25 發送簡訊給我 |
RedSnow 你好:http://delphi.ktop.com.tw/topic.php?TOPIC_ID=74195這是我問題的連結,我想請問我現在將您的程式小小修改之後一直出現-627.5783不是整數值的訊息,那我該加什麼條件判斷式才能將-627.5783視為無效資料
int col=0; int row=0; int iArray[256][256]; AnsiString sz; TStringList *slRow = new TStringList; TStringList *slCol = new TStringList; AnsiString nStr = ".0123456789"; AnsiString chkStr; if (OpenDialog1->Execute()) { slRow->LoadFromFile(OpenDialog1->FileName); for (int i=0; i |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |