掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
テキストファイルを読み込み、各行頭の値ごとに処理を行うには? (ID:7885)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
例えばこんな感じです。 # エラーチェック・整合性などは見ていません TDataRec=record dummy0: char; sName: array[0..7] of char; dummy1: char; Item1: array[0..7] of char; dummy2: char; Item2: array[0..7] of char; dummy3: char; Item3: array[0..7] of char; dummy4: char; end; と定義し、 procedure TForm1.Button1Click(Sender: TObject); var fs: TFileStream; flag: char; dr: TDataRec; begin fs := nil; try fs := TFileStream.Create('C:\test.txt', fmOpenRead); while fs.Read(flag, 1)=1 do begin case flag of 'A': // 値は3つ begin fs.Read(dr, 1+8+1+8+1+8+1+8+2); // 最後の2はCRLF Memo1.Lines.Add('Name:[' + String(dr.sName) + ']'); Memo1.Lines.Add('Item1:[' + String(dr.Item1) + ']'); Memo1.Lines.Add('Item2:[' + String(dr.Item2) + ']'); Memo1.Lines.Add('Item3:[' + String(dr.Item3) + ']'); end; 'B': // 値は2つ begin fs.Read(dr, 1+8+1+8+1+8+2); // 最後の2はCRLF Memo1.Lines.Add('Name:[' + String(dr.sName) + ']'); Memo1.Lines.Add('Item1:[' + String(dr.Item1) + ']'); Memo1.Lines.Add('Item2:[' + String(dr.Item2) + ']'); end; else // 値は1つ begin fs.Read(dr, 1+8+1+8+2); // 最後の2はCRLF Memo1.Lines.Add('Name:[' + String(dr.sName) + ']'); Memo1.Lines.Add('Item1:[' + String(dr.Item1) + ']'); end; end; end; finally if Assigned(fs) then fs.Free; end; end; TMemoryStreamを使っていませんが、Readの使い方は同じです。 もっと良いやり方もあるかと思いますが、サンプルと言うことで。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.