csvファイルを読み込み、一部の列を削除して保存するには?

解決


Hara  2008-12-15 20:12:25  No: 32897  IP: 192.*.*.*

初歩的な質問で失礼いたします。

csvファイルを読み込み
一部の列を削除
保存
  といったプログラムを検討中です。

  具体的には、
1 5 6 7
6 2 5 9
9 3 6 5
  といったデータの、第一列と第二列を削除して
6 7
5 9
6 5
  のデータをcsvで再保存したく思っております。

列の削除方法について、何かしらのアドバイス頂ければ幸いです。

編集 削除
Hire  2008-12-15 20:36:48  No: 32898  IP: 192.*.*.*

これは、
>1 5 6 7
>6 2 5 9
>9 3 6 5

こういうファイルなの?
1,5,6,7<CRLF>
6,2,5,9<CRLF>
9,3,6,5<CRLF>

編集 削除
それって  2008-12-15 21:12:03  No: 32899  IP: 192.*.*.*

Excelマクロとかでよくないか?
わざわざソフト組んでやるほどのことじゃないと思うんだが。

どういうアドバイスが欲しいの?
普通に考えたらTMemo.Lines.LoadFromFileとDeleteでいけると思うんだけど。

編集 削除
HOta  2008-12-15 21:18:06  No: 32900  IP: 192.*.*.*

TStringsに読み込んで、各行の3番目からを取り出せばいいのでしょう。

編集 削除
Hara  2008-12-15 21:19:25  No: 32901  IP: 192.*.*.*

失礼いたしました。

1,5,6,7<CRLF>
6,2,5,9<CRLF>
9,3,6,5<CRLF>

というファイルです。

今現在は、
Square,Line  といった二つのTStringListを定義して、

Square  で全数読み込み
Line  で
6,7
5,9
6,5
 を抜き取り、保存を試みております。

編集 削除
Hara  2008-12-15 21:22:32  No: 32902  IP: 192.*.*.*

普通に考えたらTMemo.Lines.LoadFromFileとDeleteでいけると思うんだけど。

ありがとうございました。
知識が浅いため、上記ご指摘の手法まで考えが及びませんでした。
試みてみたいとおもいます。

編集 削除
Fusa  2008-12-16 17:48:44  No: 32903  IP: 192.*.*.*

Haraさんの考えているやり方でいいと思いますよ。

こんな感じでしょうか。いろいろ試してみてください。

var
  i: Integer;
begin
    StrList := TStringList.Create; try
    StrList.LoadFromFile(パス);
    CsvStrList := TStringList.Create; try
    for i=0 to StrList.Count -1 do
    begin
      CsvStrList.CommaText := StrList[i]
      if 3 <= CsvStrList.Count then
      begin
        CsvStrList.Delete(1);
        CsvStrList.Delete(0);
      end;
      StrList[i] := CsvStrList.CommaText;
    end;
    finally CsvStrList.Free; end;
    StrList.SaveToFile(パス);
    finally StrList.Free;
end;

編集 削除
Hara  2008-12-16 22:35:50  No: 32904  IP: 192.*.*.*

Fusaさん、Hireさん、それってさん、HOtaさん
ありがとございました。おかげ様で解決いたしました。

最終的には、TStringListを使う方法を採用しました。

編集 削除