OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • 暇なときにでも
  • 質問No.167381
  • 閲覧数1848
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 77% (114/147)

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

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

  • 回答No.1
レベル8

ベストアンサー率 44% (12/27)

始めまして、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

お礼率 77% (114/147)

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

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

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

と出ます。入力ミスかと思い何度も見直したのですが、結果は同じでした。
お時間ありましたらお教えいただけますか?
投稿日時 - 2001-11-13 11:30:40
お礼コメント
aikun

お礼率 77% (114/147)

ご回答ありがとうございます。
Delphiの基礎的なことも理解せず、いきなり目的だけ質問してすみません。
全体を学習しながら試させていただきます。ありがとうございました。
投稿日時 - 2001-11-13 13:46:25
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル8

ベストアンサー率 44% (12/27)

Doubleです。 すみません、一部文法ミスしていましたね・・・(^^; 誤)if ExecFileCopy('C:\TEST.DAT', 'D:\TEST.DAT') 正)if ExecFileCopy('C:\TEST.DAT', 'D:\TEST.DAT') then です。 あと、「文が必要な場所に`FUNC ...続きを読む
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のテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ