ファイルからの読みこみについて
下記のようなdata.txtがあります。
2005/12/01,0:44:55,2.2
2005/12/01,0:45:55,7.8
2005/12/01,0:46:55,4.8
2005/12/01,0:47:55,5.5
いまこのようなプログラムがあります。(一部)
$date=[];
$temp=[];
open(DATA,"data.txt");
while(<DATA>){ #一行ずつ読む
if(/$name/){print "$_<BR>";} #$nameの中身を発見→出力
@field = split(/,/,);
push @$date, $field[1];
push @$temp, $field[2];
}
@data=($date, $temp);
です。
簡単にプログラムの説明をしますとdata.txtで$name($name=2005/12/01)という文字を一行単位で検索していきます(今はすべてが当てはまります)この検索してヒットした一行の,区切りの一番右のデータを並べたものを$tempとし、,区切りの真ん中のデータを並べたものを$dateとしています。このプログラムですと$temp は [2.2,7.8,4.8,5.5]になり$dateは["0:45:55","0:45:55","0:45:55","0:45:55"]となるはずですがこのプログラムを実行すると検索結果は表示されるのですがプログラムの最後の行の@data=・・・というところが検索結果でなくdata.txtのすべてになってしまいます。どうやったら正常にもどりますか??お願いします。
補足
わかりました Dim hEdit As Long Dim hFile As Long Dim dwFileSize As DWord Dim dwAccessByte As DWord Dim FileName As String Dim buffer As BytePtr Dim Buffer As BytePtr Dim Length As Long Dim ss as String Dim ssPtr As BytePtr Length = GetWindowTextLength(GetDlgItem(hMainWnd,EditBox1)) Buffer = calloc(Length+1) GetWindowText(hMainWnd,Buffer,Length+1) ss = Str$( Buffer ) PassWord0=ss free(Buffer) 'Open先を設定 FileName=".\Date\Setting\setting.txt" '------------------- ' ファイル オープン '------------------- hFile=CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, _ ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0) If hFile=INVALID_HANDLE_VALUE Then MessageBox(hMainWnd,Ex"ファイルが存在していません","Error(読み込みエラー)",MB_OK or MB_ICONWARNING) SendMessage(hMainWnd,WM_CLOSE,0,0) Exit Sub End If 'ファイルサイズを取得し、バッファを確保する dwFileSize=GetFileSize(hFile,0) buffer=malloc(dwFileSize+1) 'ファイルの内容を文字列変数bufferに読み込む ReadFile(hFile,buffer,dwFileSize,VarPtr(dwAccessByte),ByVal 0) buffer[dwAccessByte]=0 ss = Str$( buffer ) PassWord1=ss 'ファイル ハンドルを閉じる CloseHandle(hFile) free(buffer) If PassWord0 = PassWord1 Then MessageBox(hMainWnd,Ex"正解","",MB_OK or MB_ICONWARNING) Else MessageBox(hMainWnd,Ex"不正解","",MB_OK or MB_ICONWARNING) MessageBox(hMainWnd,PassWord1,PassWord0,MB_OK) SetDlgItemText(hMainWnd,EditBox1,"") SetFocus(GetDlgItem(hMainWnd,EditBox1)) End If