人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Delphi6で、CSVファイルを読み込みたい。プログラムのソースを教えてください。

例えば、kamoku.csvの内容が以下のもので
No,科目no,科目名
1,101,食費
2,201,ガス
3,202,電気
4,901,現金
(5,6,7,〜と続きます。)

2行目以下を配列A[](:Integer)、配列B[]に埋め込みたい。
A[1] := 101、B[1] := 食費
A[2] := 201、B[2] := ガス
A[3] := 202、B[3] := 電気
A[4] := 901、B[4] := 現金

●質問者: ktoshi
●カテゴリ:コンピュータ
✍キーワード:CSV ソース ファイル プログラム 現金
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●60ポイント

http://www.sakaki.keiaikai.or.jp/

未確認ですが だいたい このようにすればいいかと思います。

Publicで宣言

A: TStrings;

B: TStrings;

procedure TForm1.btnOpenClick(Sender: TObject);

var

f: TextFile;

s: string;

i, n: Integer;

Strings: TStrings;

begin

// TStrings は抽象クラスなので

// TStringList を生成する

Strings := TStringList.Create;

A := TStringList.Create;

B := TStringList.Create;

try

// ファイルオープン

AssignFile(f, ”kamoku.csv”);

Reset(f);

try

n := 1;

while Eof(f) = False do

begin

// 1行読み込んで CommaText に代入

Readln(f, s);

Strings.CommaText := s;

// Strings[i] にそれぞれの列が展開される

A.Add(Strings[1]);

B.Add(Strings[2]);

end;

finally

// Strings 破棄

Strings.Free;

end;

finally

// ファイルクローズ

CloseFile(f);

end;

end;

◎質問者からの返答

ありがとうございます。

今は時間がありませんので、今夜にでも確認させてもらいます。


2 ● cline
●60ポイント

http://nelsoa.parfait.ne.jp/hatena/kamoku.zip

URLはサンプルソース。

本当は

function ChooseString(const Text, Separator: string; Index: integer): string;

var

S : string;

i, p : integer;

begin

S := Text;

for i := 0 to Index - 1 do begin

if (AnsiPos(Separator, S) = 0) then S := ’’

else S := Copy(S, AnsiPos(Separator, S) + Length(Separator), Length(S));

end;

p := AnsiPos(Separator, S);

if (p > 0) then Result := Copy(S, 1, p - 1) else Result := S;

end;

この様なコードを使って展開するところですが、ブラケットの処理など色々と面倒くさいのでTStrings.CommaTextの機能を使います。

サンプルはDelphi5で作成されているため、Delphi6ではそのままコンパイルできるかどうかわかりません。

その時はフォームにTMemoとTButtonを一つずつ配置し、TButton.OnClickイベントにサンプルソースのコードをコピーしてあげてください。

◎質問者からの返答

サンプルソースまで作っていただきありがとうございます。そのままで動作の確認はできました。

今夜にでもソースを確認させていただき、どのような仕組みになってるのかを勉強させてもらいます。


3 ● wm5775
●5ポイント

http://www.hatena.ne.jp/

はてな

#URLはダミーです。

文字列処理の勉強をしたいわけではないのであれば、エクセルOLEもしくはFomula1コンポーネントをフォームに貼り付けて、そのコンポーネントからCSVファイルを開くというのはどうでしょうか?

#ちょっとコードは書きにくいのでヘルプかなにかを参照してほしいのですが。

◎質問者からの返答

ありがとうございます。

これだけだとどうしていいのか全然わからないです。基本を判ってないので、ヘルプで目的の機能の探し方もわからず、どの言葉でウェブ検索すればよいのかもわからずなもので、、、。

---------------

1.と2.の回答の両方とも動作の確認は出来ました。ソースはこれから読んでみます。ありがとうございました。

前回はフラッシュ暗算のソフトを作ってみました。今回は簡単なおこづかい帳ソフトを作ろうと思ってます。科目のマスタと明細のデータはCSVで管理しようかと思ってます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ