隨機讀取 TXT檔値 |
尚未結案
|
sambass0313
一般會員 發表:8 回覆:5 積分:2 註冊:2004-11-11 發送簡訊給我 |
請問有什ㄇ方法可以
隨機讀取 TXT檔値 假設我ㄉ TXT 檔 0.123 0.456 0.789 1 //亂取
0.234 0.345 0.456 2
0.567 0.678 0.789 3
0.123 0.456 0.789 2
0.434 0.345 0.456 2
0.567 0.678 0.789 3
0.823 0.956 0.789 4 //亂取
0.234 0.345 0.556 2
0.567 0.678 0.789 3 我如果要亂數取 一行(4筆)
EX
0.123 0.456 0.789 1
0.823 0.956 0.789 4
.
.
. 請問有什ㄇ方法ㄇ
|
limeca
中階會員 發表:2 回覆:74 積分:60 註冊:2005-05-11 發送簡訊給我 |
|
s1937kk
一般會員 發表:2 回覆:15 積分:8 註冊:2004-11-15 發送簡訊給我 |
您好,由於你的檔案每一行都是固定的
每一行固定是19個字元+2個Windows換行字元\r\n
所以一行固定是21個字元
因此可以依此計算出每一行的位置 抓取到指定的行之後,再分解欄位即可
分解的方式可搜尋「split」關鍵字 Form上放一個Button、一個Memo 以下我寫成一個函數,來抓取指定的一行,請參考....
請注意:每一行結尾必須有/r/n
//用法:RandomRead(檔案路徑,每行長度,抓取第幾行) AnsiString TForm1::RandomRead(AnsiString strPath, int iLineLength, int iLine) { int iFileHandle; char *pszBuffer; int iOffset=0; AnsiString strResult; iFileHandle = FileOpen(strPath, fmOpenRead); iLine = iLine -1; //計算檔案指針位置 if (iLine == 0) { iOffset = 0; } else { iOffset = iLineLength * iLine ; } iLineLength = iLineLength-2; FileSeek(iFileHandle,iOffset,0);//移動檔案指針到正確位置 pszBuffer = new char[iLineLength]; FileRead(iFileHandle, pszBuffer,iLineLength);//讀取該行,不包括\r\n strResult = pszBuffer; strResult.SetLength(iLineLength); FileClose(iFileHandle); delete [] pszBuffer; return strResult; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int iRand = 0; int iFileHandle; int iFileLength; int iLineLength = 21;//一行有幾個字元(包含Windows換行字元\r\n兩個字元) int iLineCount; AnsiString strPath = "C:\\test.txt"; iFileHandle = FileOpen(strPath, fmOpenRead); iFileLength = FileSeek(iFileHandle,0,2); FileClose(iFileHandle); iLineCount = int(iFileLength / iLineLength); //計算總行數 if (iLineCount > 0) { //亂數擷取行 Randomize(); iRand = RandomRange(1,iLineCount 1); ShowMessage("總共有" AnsiString(iLineCount) "行抓取第" AnsiString(iRand) "行"); //RandomRead(檔案路徑,每行長度,抓取第幾行) Memo1->Text = RandomRead(strPath,iLineLength,iRand); } }發表人 - s1937kk 於 2005/07/08 09:23:18 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |