- ベストアンサー
Delphiによるファイルのコピー
初歩的な質問で恐縮です。 「Delphi6」というツールを友人にすすめられ使いはじめました。 そもそもプログラムの知識などないのですが(VBAを少しやった程度です)、 いきなりは無謀でしょうか? それはともかく、目的はハードディスクにある特定のファイルをMOなどにコピーするだけです。コピーするファイルは常に同じです。イメージとしてはアイコンをクリックするだけでコピーし、コピー終了後に「コピーが終了しました」みたいなメッセージを表示するだけです。 ドライブにディスクが装着されていないなどのエラー処理も必要でしょうが、 とりあえずコピーができればOKです。 Helpをみると「CopyFile」という関数を使えばよさそうなのですが、文法がわかりません。どなたかお分かりの方お教えください(初歩的な質問でごめんなさい)。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
始めまして、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; このようになります。 頑張ってください。
その他の回答 (1)
- Double
- ベストアンサー率44% (12/27)
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言語ガイド」を参照すると理解出来ると思います。 これからもいろいろ有ると思いますが、頑張ってくださいね!(^^)
お礼
ご回答ありがとうございます。 Delphiの基礎的なことも理解せず、いきなり目的だけ質問してすみません。 全体を学習しながら試させていただきます。ありがとうございました。
補足
早速の回答ありがとうございます。 上記を試してみたのですが、以下のエラーが出で動作しません。 function ExecFileCopy(FromF, ToF : String) : Booleanの部分で・・・ 「文が必要な場所に`FUNCTION'があります」 if ExecFileCopy('C:\TEST.DAT', 'D:\TEST.DAT')の部分で・・・ 「宣言が必要な場所に'IF'があります」 と出ます。入力ミスかと思い何度も見直したのですが、結果は同じでした。 お時間ありましたらお教えいただけますか?