プロが教えるわが家の防犯対策術!

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

A 回答 (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;

このようになります。

頑張ってください。

この回答への補足

早速の回答ありがとうございます。
上記を試してみたのですが、以下のエラーが出で動作しません。

function ExecFileCopy(FromF, ToF : String) : Booleanの部分で・・・
「文が必要な場所に`FUNCTION'があります」

if ExecFileCopy('C:\TEST.DAT', 'D:\TEST.DAT')の部分で・・・
「宣言が必要な場所に'IF'があります」

と出ます。入力ミスかと思い何度も見直したのですが、結果は同じでした。
お時間ありましたらお教えいただけますか?

補足日時:2001/11/13 11:30
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/11/13 13:46

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言語ガイド」を参照すると理解出来ると思います。
これからもいろいろ有ると思いますが、頑張ってくださいね!(^^)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!