• 締切済み

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

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

  • HAL007
  • お礼率90% (307/340)

みんなの回答

  • 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へのコンバートに問題は ありません。

関連するQ&A

  • Delphiで使用しているindyコンポーネントについて

    Delphi6をつかってファイルが添付されたメールの自動受信のプログラムを作っています。問題はindypop3(var10)コンポーネントを使用して添付ファイルを受信していますが、ファイル名が以下のようになり困っています。 =_utf-8_q_=E9=A6=99=E5=85=B8=E8=BF=94=E3=81=972.csv_= 変換方法をご存知の方がいらしゃれば教えていただきたいと思います。よろしくお願いします。

  • COBOL85でのCSVファイルの取扱方法について

    COBOL85でCSVファイル使用して、プログラムを組みたいのですが、SELECT句、FD句等のコーディングの仕方がわかりません。有識者の方、ご教示の程、宜しく、お願い致します。 ★開発条件  ・UNIX(HP-UX)環境  ・日立COBOL85  ・入力ファイル、出力ファイルともCSVファイル  ・入力ファイル、出力ファイルともASSIGN句の定義は一回ず   つとし、レコード長が違う入力ファイル、出力ファイルの場合で   も取扱可能とし、その場合でもプログラムの修正は行わないよう   にし、汎用性を持たせる。

  • Access2000 CSVファイルのインポート

    アクセスでCSVファイルをインポートしようと思うのですが CSVファイルに項目がありません。 COBOLで作成したファイルなのですが レコードだけの状態です。そのままインポートしようと しても文字化けのような感じになります。 どうしたらよいでしょうか?

  • 繰り返しの演算

    C言語についてです 数値データのファイルからデータを読み取り四則演算をするプログラムをつくっているのですが、2つでペアの数値データが4つあります。これを繰り返し演算できるようにする関数はありますか?

  • sortコマンドについて

    いつもお世話になっております。 sortコマンドについて質問させて下さい。 現在UNIXコマンドのsortによってファイルをソートしようとしています。 ソート対象となるファイルは下記の通りです。 ファイルの種類:csvファイル ファイルサイズ:80MByte 1レコード長:48Byte レコード数:120万レコード レコード例: 2,1000 ,1,10C0,15,0000000100000000000000000000000000000000 2,1117 ,1,10B0,16,0000000300000000000000000000000100000000 ・ ・ ・ そこで下記のようなコマンドにてソートしています。 sort -t, -k 1,1 -k 2,2 -k 3,3 -k 4,4 < fileA.csv > fileB.csv すると「sort:0653-657ソート中に書込みエラーが発生しました。」と出力され中断してしまいます。 自分なりにsortコマンドについて調べてみたところ、 /usr/tmpディレクトリのファイルシステムがいっぱいになることでコマンドが失敗しているようです。 (一時的にそのディレクトリにソート内容を展開しているようでした) 社内にて/usr/tmpディレクトリのファイルシステムの拡張を求めたところ「できない」と言われてしまいました。 開発の最終段階でのボリュームテストを行ったときの障害でしたので、 処理を大幅に変更するような対処は出来ない状況です。 代替方法などありましたらご教示頂きたいと思います。 以上、宜しくお願い致します。

  • VBSでソート&ファイル分割

    VBScriptでCSVファイルを最大5件のレコードになるように ファイル分割しようとしています。 ただし、同じコードが複数のファイルに分かれないようにしたいです。 入力するCSVファイル(test_in.csv)は以下のような形式です。 (実際のファイルに項目行はありません) 連番,コード,フラグ,日付 01,0001,A,20091001 02,0002,A,20091001 03,0003,A,20091002 04,0001,U,20091003 05,0003,D,20091003 06,0004,A,20091003 07,0005,A,20091003 08,0001,D,20091005 09,0006,A,20091003 10,0006,A,20091003 ※入力ファイルに同じコードのレコードが5件を超えることはありません) 上記の入力ファイルの場合は以下の3つのファイルに分割することになります。 【test_out_001.csv】 01,0001,A,20091001 04,0001,U,20091003 08,0001,D,20091005 02,0002,A,20091001 【test_out_002.csv】 03,0003,A,20091002 05,0003,D,20091003 06,0004,A,20091003 07,0005,A,20091003 【test_out_003.csv】 09,0006,A,20091003 10,0006,A,20091003 ※コード"0003"のレコードは2件あるので、test_out_001.csvには出力せず、  test_out_002.csvに出力します。  コード"0006"についても同様でtest_out_003.csvに出力します。 処理の手順としては 入力ファイルのデータをコードでソートし、 1ファイルに5件を超えないように追加していくのかと思いますが、 ソートと5件制限はどのように記述すればよいでしょうか?

  • データベース

    手順ですが (1)COBOLで必要なレコードをホストのマスターから 抜き出しファイルを作成する。 (2)このファイルをCSVに変換してファイルサーバーに 転送する。 (3)csvファイルを利用してリストなどにする (1)、(2)までできたとして これ以降の処理で ファイルサーバーのCSVファイルを データベースを利用したいと考えています。 例えばAccessのリンクテーブルとして csvファイルを紐付ければできそうな気がしますが 前のデータが上書きされるのはさけたいです。 なにから勉強してよいかも迷っているので アドバイスをいただけると助かります 関心があるのは Access(少し勉強しています)とVisual basic.netです

  • BASICプログラムの変換。

    大昔に書いた、BASICプログラムがあります。 これを簡単に、Windows コンピュータでファイルに変換出来ますか。 言い換えるとEXEファイルに直せますか。 中身はごく簡単なことです。例えば、Xの五次式に数値を代入して答の正負を見るというような物です。四則演算、判別/分岐などがあります。

  • CSVファイルをperlプログラムで処理する場合

    すみません、度々perl初心者のものです。 CSVファイルを1行ずつ読み込んで処理をしたい場合、 1項目内のデータの中に改行がある場合、 どのような方法で対処出来るでしょうか? 例えば "aaa,bbb,ccc ddd,eee,fff" 上記のようにcccとdddの間に改行が入ってるため 本当は1レコードのはずなのに2レコードとして 処理を行ってしまう。 perlで何かやり方はあるのでしょうか? csvを加工するのもよいのですが、データが多量に あるため、プログラム上でなんとかしたいと思うのですが。。。 すみません、宜しくお願い致します。

    • ベストアンサー
    • Perl
  • レコードの分割処理

    お世話になります 現在、レコード長70000バイト (50000-70000バイトの不定長) のテキストファイルがあります この長さだと他のソフト(エクセルなど)で 処理が不可の場合が多いということもありますので レコード長を分割して5000バイトぐらいにして 最大14レコードを作成したいと思います vb6ランタイムはあるのですが プログラムの作成とその起動処理がわかりません お手数ですがよろしくお願い致します それと、そのようなことができるフリーソフトが あればよろしくお願い致します WINDOWS98SEです

専門家に質問してみよう