TStreamReaderを使用してのCSVファイル取込

解決


谷町  2015-09-08 19:15:42  No: 47621

http://mrxray.on.coocan.jp/Delphi/plSamples/200_MemoReadSpeed.htm
上記URLを利用して、行の読み込みはできたのですが、
カンマ毎の項目を取り出す方法があまりサンプルがなく困っています。

http://whoopsidaisies.hatenablog.com/entry/2013/11/22/130256
C#のコードサンプルでSplit(',')と切れるようで、
Delphiでも同様の関数はあるのですが、構文エラーがでて今のところ使えません。

TStreamWriterを使用して処理速度が向上しましたので、
従来のTextFileでの読み込みでなく、TStreamReaderでやりたいと思ってます。

ご存知の方、何卒ご教示お願い致します。


通りすがり  2015-09-08 22:10:11  No: 47622

SplitStringでやればいいんじゃないですか?
http://docwiki.embarcadero.com/Libraries/Seattle/ja/System.StrUtils.SplitString


谷町  2015-09-08 23:31:28  No: 47623

通りすがり様

ばっちりです。
以下で1項目ずつ値を取得できました。
ありがとうございました!

while StreamReader.EndOfStream = false do begin
  str_line := s_reader.ReadLine;
  SplitResult := SplitString(str_line,',');
  for str_line in SplitResult do begin
     ListBox1.Items.Add(str_line);
  end;
end;


谷町  2015-09-08 23:33:17  No: 47624

間違えました。

var 
str_line:string;
StreamReader:TStreamReader;
SplitResult:TStringDynArray;
begin
  while StreamReader.EndOfStream = false do begin
    str_line := StreamReader.ReadLine;
    SplitResult := SplitString(str_line,',');
    for str_line in SplitResult do begin
      ListBox1.Items.Add(str_line);
    end;
  end;
end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加