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] := 現金

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/11/25 06:36:54
  • 終了:--

回答(3件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982004/11/25 07:16:03

ポイント60pt

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

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;

id:ktoshi

ありがとうございます。

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

2004/11/25 11:22:21
id:cline No.2

cline回答回数60ベストアンサー獲得回数02004/11/25 09:35:03

ポイント60pt

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イベントにサンプルソースのコードをコピーしてあげてください。

id:ktoshi

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

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

2004/11/25 11:40:35
id:wm5775 No.3

wm5775回答回数351ベストアンサー獲得回数42004/11/25 15:10:37

ポイント5pt

#URLはダミーです。

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

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

id:ktoshi

ありがとうございます。

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

−−−−−−−−−−−−−−−

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

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

2004/11/25 20:34:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません