• ベストアンサー

Delphiによるファイルのコピー

初歩的な質問で恐縮です。 「Delphi6」というツールを友人にすすめられ使いはじめました。 そもそもプログラムの知識などないのですが(VBAを少しやった程度です)、 いきなりは無謀でしょうか? それはともかく、目的はハードディスクにある特定のファイルをMOなどにコピーするだけです。コピーするファイルは常に同じです。イメージとしてはアイコンをクリックするだけでコピーし、コピー終了後に「コピーが終了しました」みたいなメッセージを表示するだけです。 ドライブにディスクが装着されていないなどのエラー処理も必要でしょうが、 とりあえずコピーができればOKです。 Helpをみると「CopyFile」という関数を使えばよさそうなのですが、文法がわかりません。どなたかお分かりの方お教えください(初歩的な質問でごめんなさい)。

  • aikun
  • お礼率77% (114/147)

質問者が選んだベストアンサー

  • ベストアンサー
  • Double
  • ベストアンサー率44% (12/27)
回答No.1

始めまして、Doubleと申します。 DelphiはCなどに比べれば敷居は低い方なのでチャレンジしてみる価値は有ると思いますよ それでは質問内容のCopyFileの使い方ですが、リファレンスには CopyFile(lpExistingFileName, lpNewFileName: PChar; bFailIfExists: BOOL): BOOL; 引数の説明としては lpExistingFileName コピー元のファイル名のキャラクター型ポインタ lpNewFileName コピー先のファイル名のキャラクター型ポインタ bFailIfExists コピー先に同名のファイルが存在していた場合の動作を指定 TRUE : 関数は異常終了し、コピーは行われない。 FALSE: 関数は正常終了し、上書きコピーされる。 の様に書かれています。 したがって以下のようにすれば実現出来ると思います。 (まあ、書き方には他にもいろいろ考えられますがとりあえず以下の方法で・・・(^^;) function ExecFileCopy(FromF, ToF : String) : Boolean begin result := CopyFile(PChar(FromF),PChar(ToF),False); end; 上記関数の呼び出し方は if ExecFileCopy('C:\TEST.DAT', 'D:\TEST.DAT') begin //コピーが正常終了した時の処理 end else begin //コピーが異常終了した時の処理 end; このようになります。 頑張ってください。

aikun
質問者

お礼

ご回答ありがとうございます。 Delphiの基礎的なことも理解せず、いきなり目的だけ質問してすみません。 全体を学習しながら試させていただきます。ありがとうございました。

aikun
質問者

補足

早速の回答ありがとうございます。 上記を試してみたのですが、以下のエラーが出で動作しません。 function ExecFileCopy(FromF, ToF : String) : Booleanの部分で・・・ 「文が必要な場所に`FUNCTION'があります」 if ExecFileCopy('C:\TEST.DAT', 'D:\TEST.DAT')の部分で・・・ 「宣言が必要な場所に'IF'があります」 と出ます。入力ミスかと思い何度も見直したのですが、結果は同じでした。 お時間ありましたらお教えいただけますか?

その他の回答 (1)

  • Double
  • ベストアンサー率44% (12/27)
回答No.2

Doubleです。 すみません、一部文法ミスしていましたね・・・(^^; 誤)if ExecFileCopy('C:\TEST.DAT', 'D:\TEST.DAT') 正)if ExecFileCopy('C:\TEST.DAT', 'D:\TEST.DAT') then です。 あと、「文が必要な場所に`FUNCTION'があります」のエラーの方ですが。 関数の書き方に宣言が必要でして Typeのpublic節に 「function ExecFileCopy(FromF, ToF : String) : Boolean;」 を追加し 関数名には 「function (type名).ExecFileCopy(FromF, ToF : String) : Boolean;」 を付けてください。 文法等の詳細はヘルプの「Object Pascal言語ガイド」を参照すると理解出来ると思います。 これからもいろいろ有ると思いますが、頑張ってくださいね!(^^)

関連するQ&A

  • Delphi 6

    いつもお世話になりありがとうございます。 Delphi 6についてご教授お願い致します。 CopyFileにてファイルをコピーしているのですが、 コピーできない時があります。 サイズの大きいファイルとか関係あるのでしょうか? ************************************************ CopyFile('C:\TEST1.TXT', 'Z:\TEST1.TXT', False); CopyFile('C:\TEST2.TXT', 'Z:\TEST2.TXT', False); CopyFile('C:\TEST3.TXT', 'Z:\TEST3.TXT', False); というように連続でコピーしたいのですが・・・

  • Accessでのファイルコピーについて

    質問させていただきます。 Access97を使用しております。 あるデータMDBをMOへコピーする(フォームからボタンを押したときに目的のMDBがコピーされる)ようにしたのですが、MOの装着を確認できるようにするにはどうすればよいでしょうか? ・MOが正しく装着されていればコピー開始 ・MOが装着されていなければ装着を促すメッセージを 表示(MOが装着されるまでコピーされない。または    キャンセルする) 以上、よろしくお願いします。

  • ExcelVBAでファイルコピー

    ExcelVBA2000です。 VBAでファイルコピーしたいのですがどのようにしたらよいのでしょうか。 Dim FromFile As String ' コピー元ファイル Dim ToFile As String ' コピー先ファイル Copy FromFile, ToFile とか FileSystemObject.CopyFile FromFile, ToFile とかのようには思うのですが出来ません。

  • CD_RからハードディスクにコピーしたFileを書き込み可能としたい。

    VC++6.0を使っているのですが、 CD_Rからハードディスクにコピーしたファイルに書き込みをできるようにしたいのですが、方法がわかりません。教えてください。 CD_Rからハードディスク間のコピーは、CopyFileを使用しています。

  • Delphi6 Labelの表示を切り替える

    Delphi初心者です。 ファイルをコピーする処理を作っています。 ボタンをクリックしたときファイルのコピーを開始するのすが、ファイル容量が大きいので ”コピー中”というメッセージを表示しょうと思います。 Labelにメッセージを書いて、このLabelのVisibleをFalseにし、ボタンをクリックしたときにTrueにしているのですが、うまくできません。ソースの一部は以下の通りです。 Label.Visible := True; CopyFile('C:\KBISDATA.MDB','E:\KBISDATA.MDB',False); Application.MessageBox('バックアップが完了しました。','データバックアップ処理',mb_ok); exit; この方法では、コピーが終了してからLabelのVisibleがTrueになります(ラベルが表示される)。 一体何が悪いのでしょうか? また、できればコピー中はラベルを点滅できればベストなのですが・・・。 以上、よろしくお願いします。

  • JWCADのファイルを他のPCにコピーできますか

    最近JWCADをはじめたばかりなのですが,自分のPC(XP)で作成した図面のファイルを,メモリースティックにおとして,会社のPC(Vista)にコピーしようとしたのですができません。CADのファイルはコピーはできないものなのでしょうか?ヘルプも使えませんでした。 初歩的な質問かもしれませんが,どなたか教えてください。

  • VBAでネットワークコンピュータのファイルにアクセスできない(XL2000)

    EXCEL2000で、EXCELのファイルと、データ専用のファイルを組にして運用しています。都度データファイルのバックアップを取るために、VBA中でネットワークコンピュータ(LAN)のフォルダにFileCopyしようとするのですが、ファイルが見つからないというエラーが出て、コピー出来ません。しかし、エクスプローラーで一回ネットワークフォルダーを開いてから終了し、再度VBAを実行すると問題なくコピー出来ます(何か道筋が出来るらしい)。 また、WEBで調べてAPIのCopyFileを用いると良いという記事をみて、トライしましたが事態は同じでした。なお、過去の類似の質問で、WindowsXPの場合のMicrosoftの情報が紹介されていましたが、本ケースでは両方のPCともWindows98です。 以上、宜しくお願いします。

  • AVIファイルのDVDへのコピーができません

    以前知り合いから借りたAVI動画ファイルをハードディスクにコピーをしました。今回このAVIファイルを別のブランクDVD-Rにコピー(エクスプローラーにて)しようとしたところエラーが出てしまいます。また、「ROXIO DEGITALMEDIA SE」のデータディスクでもエラーが出てしまいます。ファイルはちゃんと再生されるので壊れたりはしてないと思うのですが・・ 原因がわからず困っています。初歩的な質問かも知れませんが、ご教示いただければ幸いです。

  • 簡単なexeファイルの作り方。

    初歩的な質問で恐縮です。 社内で使用するexeファイルの作り方を教えてください。 (1)ファイルサーバーからファイルをローカルにコピーする (2)コピーされたファイルを開く これだけの作業なのですが・・・すみません、わからないので教えて下さい。

  • フォルダーからファイル名の取得と、エクセルファイルへのコピー

    初歩的な質問ですが、 あるファイルに、規則的なPDFファイルが大量にあり、 そのファイル名の先頭から2~10桁を抜き出し。 エクセルファイルに落としたいのですが、 良い方法が分かりません。 VBA初心者のため、できればプログラムくんでくれる方 おりませんでしょうか? また、ファイル内のPDFファイルの名前だけをコピーして、 エクセルシートに落とすことはできないでしょうか? よろしくお願い致します。

専門家に質問してみよう