• 締切済み

Delphiでバッチ処理を直ぐに書きたい

Delphiは初心者です。質問を考えながら我ながらメチャク チャだと感じてますが、妙薬があることを信じて質問します。 教えて貰いたいのは、次のプログラムを書くのに参考に なるものです。 サイトや本などでサンプルプログラムがあると嬉しい。 【やりたいこと】 過去19年分の日経平均株価データ(レコード数約5千件 10フィールドのCSVファイル)を入力し、テクニカル 分析(10種類でバリエーションを含めて50の結果)を CSVファイルに書き出すプログラムを作る。 【必要な計算】 四則演算と最大25レコードの最大値、最小値、ソート 処理など。 【プログラミング経験】 COBOLならリファレンスマニュアルを見ればどうにか なるレベルです。しかし、Delphiは以前、入門書を読みな がら勉強したものの投げ出しました。 Delphiに拘る理由は、手元にDelphi Studio7しかありません。

みんなの回答

  • rhl
  • ベストアンサー率37% (42/111)
回答No.3

>今まで、Excelを使って計算してきたのですが単純な加減算でゴミが入る >ことが分かってからMS製品に対して信頼性を疑っていることも >Delphiでプログラミングすることを思い立った理由なのでAccessは >使いたくありません。 そういう理由だったのですね。参考までにゴミというのは どのようなものでしょうか? その四則演算がどのようなものかちょっとわからないので 悩むところもありますが・・・。 delphiならばさきほどのような方法をとるしかないかと 思います。ズバリな参考文献などはわかりかねますが、 delphiならば AssignFile() CloseFile() Writeln() Readln() Rewrite() Reset() Eof() while~do などをキーワードに検索してみたりするといいかも知れません。 それでもやはり僕はDBを使うのをオススメしますが(笑) RDBMSなら商用、フリーいろいろあります。Accessにこだわる 必要もないですよ。ただAccess意外だとある程度の専門 知識が要求されてしまいますが・・・。

HAL007
質問者

お礼

ありがとうございました。 ヒントを頂き絞り込みが出来ました。 しかし、多すぎて都合の良いサンプルが 見つけることが出来ません。 参考書は古いバージョンのものが 数冊出てきたので取り敢えず使って見る ことにします。 質問は暫くこのままにして新たな回答を 待って見ます。 Excelの件はファイルが一部損傷しているのかも 知れません。昨日とうとうブールスクリーンが 出てシステムアベンドしてしまいました。 事象は、整数の引き算をしているのに指数?計算 の様に小数点以下6~7桁に実数が入ります。 また、HPからコピー&ペーストで貼り付けた データも本来は小数点以下2桁なのにいつの間に か計算と同じ様に10^-6,7に広がり実数が入れ られていました。 また、アベンドする前には列の挿入をすると 参照セルの座標は正しく修正されているのに計算 結果が変わって仕舞うと言う珍妙なことが起きて います。 5千件弱の行に50列以上の計算式が入っていいます。 HDDはがらがらですし、メモリーも768MBもあるので システムリソースとしては十分だと思うのですが このシートを開いている時だけ不安定です。

  • rhl
  • ベストアンサー率37% (42/111)
回答No.2

NO1です。 邪道とは思いませんが、INもOUTもCSVならばDBのほうが 楽ではないかと思ったのです。 Delphiでやってもいいとは思いますが、5000件で計算 処理もいれるならば結構処理時間がかかるかと・・・。 delphiでやるとしたら行ごとに読み込んで一行ごとに カンマで区切ったものを別の配列に入れて計算し、結果 をまた元の配列にカンマ区切りで格納しなおした後に ファイルを開いて書き込んで閉じるといった感じにし ますね。 やっぱりAccessとかのRDBのほうが楽ですよ!(笑) Accessはあまり詳しくないですが、CSVのファイルを インポートするテーブルと計算クエリを用意してその クエリの結果をCSVとしてエクスポートってな感じで しょうか?

HAL007
質問者

お礼

再度の回答感謝します。 Accessを使う場合、クエリで計算出来るレベルではなくVBAを 書く必要があります。 今まで、Excelを使って計算してきたのですが単純な加減算でゴミが入る ことが分かってからMS製品に対して信頼性を疑っていることも Delphiでプログラミングすることを思い立った理由なのでAccessは 使いたくありません。 ゴミの問題はオプションや、Round関数などで解決はできますけど 意図していないところで出たことが、どうも許しがたいです。

  • rhl
  • ベストアンサー率37% (42/111)
回答No.1

適当なデータベースを使うのはだめですか? 必要な計算とレコード数を見た感じでは DBを使ったほうが楽な気がしますが・・・。 もちろんCSVにはくこともできます。 Accessなんかでもいいと思います。

HAL007
質問者

お礼

早速のアドバイスありがとうございます。 >>DBを使ったほうが楽な気がしますが・・・。 確かに、DBを使った方がステップ数を少なく出来ると思います。 CSVにしたのは、Read・Write程度のファイル操作で済ませたい からです。この考えは邪道なんでしょうか? 因みに、Access2002を持っていますからDBへのコンバートに問題は ありません。