質問ないようが、わかりにくかったらすいません
今回、お願いしたいのは、指定した場所に新規フォルダを作成し、
そのフォルダ名をユニークな名前でつけ、その名前をString型で
保持したいのですが、うまくできないので、どなたか教えてくださいお願いします。
ユニークな名前がどういう基準のなかはわかりませんが,
ForceDirectories 関数ではダメでしょうか.
GetTempFileNameというAPIで取得できます。
早い回答ありがとうございます!!
調べてみます!!
ForceDirectories関数でプログラムを組んでみたところディレクトリがうまく作成されていません、エクスプローラーで確認しても新規フォルダが作成されていないのですが。プログラムにおかしな場所はあるでしょうか?
それともプログラムが起動されている時のみで、プログラム終了時にフォルダは削除されてしまうのでしょうか?
function TFm32SumCopy.SetUniquePlace: Boolean;
var
Dir: string;
begin
// フォルダが作成される場所
Dir := 'D:\Temp';
if ForceDirectories(Dir) then
begin
ShowMessage(Dir + ' was created');
end else begin
ShowMessage('新規フォルダを作成できませんでした。')
end;
end;
とりあえず、D:\Temp1とでもしておけば作成できたかどうかを確認できます。
//
同じ症状になりました。
たまたまなのかわかりませんが、
D:\TempフォルダがM$のなにかのアップデートをした時に
隠しフォルダとして作成されていたようです。
エクスプローラのフォルダオプションですべてファイル・フォルダを表示するように
してみてください。
エクスプローラーのフォルダオプションで
すべてファイル・フォルダを表示するようにはなっているんですが、
フォルダが作成されていません^^;
"Temp"以外のフォルダ名でも作成されないんでしょうか?
だとすると、なんでしょうかね〜(??
Dir := 'D:\Temp';
if DirectoryExists(Dir) then
ShowMessage(Dir+' は存在します')
else
ShowMessage(Dir+' は存在しません');
を追加して、存在するかどうかを確認してみてはいかがでしょう?
追加して調べてみましたが
新規フォルダは存在しませんて出ます;;
作成できました!!
> Dir := 'D:\Temp\新規フォルダ';
> try
> if ForceDirectories(Dir) then
> begin
> ShowMessage(Dir + ' was created');
> end
> Except
> ShowMessage('エラーが発生しました。プログラムを終了します。');
> Exit;
> end;
元あるディレクトリを造り続けていたようです^^;
すいませんでした。
後は、GetTempFileNameでユニークな名前を作れるようにしないとです^^;
調べてみます!!
とにかく、よかったっすネ(^^;
ユニークな名前で作成できました!!
通りすがりさん、にしのさん、ありがとうございました!!!
procedure TFm32SumCopy.SetUniquePlace;
var
Dir: string;
// フォルダが作成される場所
strTempPath : string;
strPrefix : string;
chrTempFileName : array [0..MAX_PATH] of char;
begin
Dir := 'D:\Temp\';
strTempPath := Dir; { ピリオドはカレントディレクトリ }
strPrefix := 'Sen'; { テンポラリファイルの頭につく文字 }
GetTempFileName(PChar(strTempPath),PChar(strPrefix), 0,chrTempFileName);
Dir := Dir + chrTempFileName;
try
if ForceDirectories(Dir) then
begin
ShowMessage(Dir + ' was created');
end
Except
ShowMessage('エラーが発生しました。プログラムを終了します。');
Exit;
end;
end;
というような、プログラムになりました!!
ツイート | ![]() |