ユニークな名前でフォルダを作成するには

解決


のり  2003-12-12 20:57:06  No: 6131

質問ないようが、わかりにくかったらすいません
今回、お願いしたいのは、指定した場所に新規フォルダを作成し、
そのフォルダ名をユニークな名前でつけ、その名前をString型で
保持したいのですが、うまくできないので、どなたか教えてくださいお願いします。


Mr.XRAY  URL  2003-12-12 21:30:43  No: 6132

ユニークな名前がどういう基準のなかはわかりませんが,

ForceDirectories 関数ではダメでしょうか.


にしの  2003-12-12 22:01:56  No: 6133

GetTempFileNameというAPIで取得できます。


のり  2003-12-12 22:04:21  No: 6134

早い回答ありがとうございます!!

調べてみます!!


のり  2003-12-12 22:19:04  No: 6135

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;


通りすがり  2003-12-12 23:09:20  No: 6136

とりあえず、D:\Temp1とでもしておけば作成できたかどうかを確認できます。
//
同じ症状になりました。
たまたまなのかわかりませんが、
D:\TempフォルダがM$のなにかのアップデートをした時に
隠しフォルダとして作成されていたようです。
エクスプローラのフォルダオプションですべてファイル・フォルダを表示するように
してみてください。


のり  2003-12-12 23:27:13  No: 6137

エクスプローラーのフォルダオプションで

  すべてファイル・フォルダを表示するようにはなっているんですが、
フォルダが作成されていません^^;


通りすがり  2003-12-12 23:33:33  No: 6138

"Temp"以外のフォルダ名でも作成されないんでしょうか?
だとすると、なんでしょうかね〜(??


通りすがり  2003-12-12 23:40:41  No: 6139

Dir := 'D:\Temp';
  if DirectoryExists(Dir) then
    ShowMessage(Dir+' は存在します')
  else
    ShowMessage(Dir+' は存在しません');
を追加して、存在するかどうかを確認してみてはいかがでしょう?


のり  2003-12-12 23:45:25  No: 6140

追加して調べてみましたが

    新規フォルダは存在しませんて出ます;;


のり  2003-12-12 23:48:54  No: 6141

作成できました!!

> Dir := 'D:\Temp\新規フォルダ';
>  try
>    if ForceDirectories(Dir) then
>    begin
>      ShowMessage(Dir + ' was created');
>    end
>  Except
>    ShowMessage('エラーが発生しました。プログラムを終了します。');
>    Exit;
>  end;

元あるディレクトリを造り続けていたようです^^;
すいませんでした。

後は、GetTempFileNameでユニークな名前を作れるようにしないとです^^;
調べてみます!!


通りすがり  2003-12-12 23:55:29  No: 6142

とにかく、よかったっすネ(^^;


のり  2003-12-13 00:03:25  No: 6143

ユニークな名前で作成できました!!

  通りすがりさん、にしのさん、ありがとうございました!!!


のり  2003-12-13 00:06:26  No: 6144

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;

というような、プログラムになりました!!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加