procedure TForm1.Button1Click(Sender: TObject);
var
F : TextFile;
begin
AssignFile(F, 'D:\AAA.txt');
Rewrite(F);
CloseFile(F);
FileSetAttr('D:\AAA.txt', faHidden);
end;
F : TextFile;←この部分の質問なのですが。
かりにファイルがwmv.avi.doc.exe.dll
だったりする場合どういう表記になるのでしょうか?
F : File;
とかじゃダメなの?
F : File;
にしたら実行できなかったりとかします。
ただしいWin32ではありませんとかなります。
コードの書き方が悪いからだと思うよ。
どんなコード書いたのかな?
普通に指定したEXEファイルを下記のコードで隠しファイルにしてるだけなんですが。
procedure TForm1.Button1Click(Sender: TObject);
var
F : File;
begin
AssignFile(F, 'C:\AAA.exe');
Rewrite(F);
CloseFile(F);
FileSetAttr('C:\AAA.exe', faHidden);
end;
どうでしょうか?
OSは?
Delphiのバージョンは?
エラーは起動時に表示するのですか?
それともボタンをクリックしたときに表示するのですか?
XP ターボDelhpiです。
できれば、起動時に行いたいです。
結果のファイルが0キロバイトになってしまいます。
>結果のファイルが0キロバイトになってしまいます。
それは、プログラムでそのようになるように作っているからでは?
> FileSetAttr('C:\AAA.exe', faHidden);
これだけじゃ、マズイでしょ。
AAA.exeが隠しファイルだけじゃなくて、その他の属性も変っちゃうよ。
FileSetAttrのヘルプを良く読んでごらん。
ん〜 0キロファイルを作っている結果になっているのでしょうか?
コピーしたらいいのですか?
コードかいていただけないでしょうか?
なんで0KBになるのか知りたければヘルプでRewriteを調べれば出てます。
が、そもそもFileSetAttrするのにファイルを開く必要はありません。
その上の3行は(ファイルの中身を消して空にする以外)何の意味もなし。
>ん〜 0キロファイルを作っている結果になっているのでしょうか?
> AssignFile(F, 'C:\AAA.exe');
> Rewrite(F);
> CloseFile(F);
これは、'C:\AAA.exe'を新規作成し、(なにも書き込まず)ファイルを閉じて
いるので、0キロバイトのファイルを作成していると思うのですが、
既存のファイルの属性を変えるだけでしたら、この処理が不要だと思うのですが。
ぺんね。=まいたけ
じゃないのかな?
解決いたしました。w
ツイート | ![]() |