掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
StringGridの内容をCSV形式で保存するには?また、保存の際に、自動で.csvのファイル拡張子を付与するには? (ID:35257)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんにちは。 StringGridの中身をCSVデータとして保存したいのですが、 その際に、『自分の好きな名前』で『デスクトップ』に保存できるようにしたいと考えています。 ソース1では、CSV形式での保存は行えるのですが、 名前をつけるやり方とデスクトップの指定方法が分かりません。 opendialog,savedialogを使うと思うのですが、 上手く組み合わせることが出来ずに困っています。 ソース2では、理想どおりの結果を出力できるはずなんですが、 実行すると空の結果が出力されます。どこが間違っているか分からず、困り果てています。 ・間違っている部分がどこか? ・保存する際に自動で端子に.csvを付与するにはどうすれば良いか? //'C:\Windows\デスクトップ\*.csv' アドバイス頂けると助かります。 宜しくお願いしします。 -----------ソース1:------------------------------------------ procedure TForm2.GridSaveCSV(SGrid:TStringGrid; fName: String); var stList :TStringList; ARow :Integer; begin stList:=TStringList.Create; try for ARow:=0 to SGrid.RowCount-1 do stList.Add(SGrid.Rows[ARow].CommaText); stList.SaveToFile(fName); finally stList.Free; end; end; //CSVFileからStringGridへ読込み1 procedure TForm2.GridLoadCSV(SGrid:TStringGrid; fName:string); var stList: TStringList; ARow: Integer; begin stList:=TStringList.Create; try stList.LoadFromFile(fName); SGrid.RowCount:= stList.Count; for ARow:=0 to stList.Count-1 do SGrid.Rows[ARow].CommaText:= stList[ARow]; finally stList.Free; end; end; procedure TForm2.Button3Click(Sender: TObject); var fName: String; begin fName := 'csvtest.csv'; GridSaveCSV(StringGrid1,fName); end; -------------------------------------------------------------- -----------ソース2:------------------------------------------ procedure TForm2.Button8Click(Sender: TObject); var F : TextFile; Str : String; CellA,CellB,CellC,CellD,CellE : String; RowCNT : Integer; begin if not SaveDialog1.Execute then exit; if FileExists(SaveDialog1.FileName) then //↑ここのFileNameの使い方が良く分かりません>< //保存するときに、自動で.csvが付与されるようにしたいと思っています。 if Application.MessageBox('上書きしますか','注意',MB_YESNO ) = 7 then exit; //_ AssignFile(F,SaveDialog1.FileName); Rewrite(F); RowCNT := 0; try while not (StringGrid1.Cells[0,RowCnt] = '') do begin CellA := StringGrid1.Cells[0,RowCnt]; CellB := StringGrid1.Cells[1,RowCnt]; CellC := StringGrid1.Cells[2,RowCnt]; CellD := StringGrid1.Cells[3,RowCnt]; CellE := StringGrid1.Cells[4,RowCnt]; Str := Format('%s,%s,%s,%s,%s',[CellA,CellB,CellC,CellD,CellE]); //↑ここのFormatの使い方が良く分かりません。 // この辺りが怪しいと思っています。 WriteLn (F,Str); Inc(RowCNT); end; finally CloseFile(F); end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.