初歩的な質問で失礼いたします。
csvファイルを読み込み
一部の列を削除
保存
といったプログラムを検討中です。
具体的には、
1 5 6 7
6 2 5 9
9 3 6 5
といったデータの、第一列と第二列を削除して
6 7
5 9
6 5
のデータをcsvで再保存したく思っております。
列の削除方法について、何かしらのアドバイス頂ければ幸いです。
これは、
>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>
Excelマクロとかでよくないか?
わざわざソフト組んでやるほどのことじゃないと思うんだが。
どういうアドバイスが欲しいの?
普通に考えたらTMemo.Lines.LoadFromFileとDeleteでいけると思うんだけど。
TStringsに読み込んで、各行の3番目からを取り出せばいいのでしょう。
失礼いたしました。
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
を抜き取り、保存を試みております。
普通に考えたらTMemo.Lines.LoadFromFileとDeleteでいけると思うんだけど。
ありがとうございました。
知識が浅いため、上記ご指摘の手法まで考えが及びませんでした。
試みてみたいとおもいます。
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;
Fusaさん、Hireさん、それってさん、HOtaさん
ありがとございました。おかげ様で解決いたしました。
最終的には、TStringListを使う方法を採用しました。
ツイート | ![]() |