Delphi6で複数のEditから入力した値を、項目別に既存のCSVファイルに追記させるにはどうしたらよいのでしょうか?
こういうことか?
AssignFile(F, てきとうなファイル名);
Reset(F);
Writeln(F, てきとうなCSVデータ1行分);
CloseFile(F);
「てきとうなCSVデータ1行分」=Edit1.Text + ',' + Edit2.Text
ってなとこかな〜?
他には、TStringListを使う。
以下参照
https://www.petitmonte.com/bbs/answers?question_id=1541
ヘルプより
Append 手続きは,既存ファイルの最後にテキストを追加できるようにします。
例
var
f: TextFile;
begin
if OpenDialog1.Execute then
begin { テキストファイルを開く }
AssignFile(f, OpenDialog1.FileName);
Append(f);
Writeln(f, 'I am appending some stuff to the end of the file.');
{ ファイルを閉じる前に,Flush するコードをここに記述する }
Flush(f); { テキストが実際にファイルに書き込まれたことを確かめる }
CloseFile(f);
end;
end;
Appendでは項目別には追記できませんね。
行単位の追記はできても。
TStringListを使うのが吉かと。
csvは1行データではないので、
phpのgetcsvなどの関数をぱくってくるのがいいかと思います
> Delphi6で複数のEditから入力した値を
だから、CSV の一行分なのでは?
> csvは1行データではないので、
そうなんですか? 改行がデータ区切りでない場合があるのですね?
csvは、
""でくくられたデータには改行を入れることができます。
"","
",
は 一個分になります。
きちんとしたcsvに対応するのが面倒なら
1レコードに改行データがないなら、
TStringListでいいと思います
もし改行データがある場合は、改行を他の文字に置換させるといいです。
で、1行1レコード前提なら
面倒はさけて、
StringList1 データ全体
StringList2 1レコード用
を二つ作ります
片方をデータ行読みとりよう。StringList1
もう片方のStringList2
StringList2.Delimiter := ','; にして
StringList2.DelimitedText := StringList1.strings[番号]で
StringList2.strings[番号] で そちらをデータ分解用にします。
とすると簡単にあつかえます。
csvなら何でも読み込みたいのなら
やっぱり、phpのソースコードからぱっくってくるのがいいかも
自分のデータだけなら、
そこまでしなくてもいいでしょう
ツイート | ![]() |