カレントディレクトリについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ひよこ

カレントディレクトリについて

#1

投稿記事 by ひよこ » 15年前

私は今、簡単な音楽プレイヤーを作っているのですが、
カレントディレクトリがコマンドラインをチェックすると変わってしまうのですが、
これを解決しようとSetCurrentDirectoryを使ったら0が帰ってきて失敗しているのですが、
どこが悪いと思われますか?

//file :ファイル名 curent:ファイルパスを返すポインタ
void Set_curent(TCHAR *file,TCHAR **curent){
int i=0;
while(file!='\0'){
if(file=='.'){//拡張子だったら文字の終わりにして終了
file='\0';
break;
}
i++;
}
*curent=new TCHAR [i+1];

_tcscpy(*curent,file);
}

int argc;

LPTSTR *argv;

//コマンドラインを手に入れる
argv = CommandLineToArgvW(GetCommandLine(), &argc);

//コマンドライン引数をチェック
Check_Comand(argc,argv);

TCHAR *curent;

Set_curent(argv[0],&curent);

//メモリ解放
LocalFree(argv);

//カレントディレクトリを実行ファイルのところと同じところにする。
if(SetCurrentDirectory(curent)==0)
Error_MB(NULL,"error");

//実行ファイルのパスを表示
MessageBox(NULL,curent,curent,MB_OK);

TCHAR buf[MAX_PATH];

//カレントディレクトリが設定されたかチェック
if(GetCurrentDirectory(MAX_PATH, buf)==0)
;//まだ、失敗した時の処理を書いてません

//カレントディレクトリの表示ここがコマンドラインの場所になってしまいます。
MessageBox(NULL,buf,buf,MB_OK);

toyo

Re:カレントディレクトリについて

#2

投稿記事 by toyo » 15年前

curent(正確にはcurrentです)にはディレクトリじゃなくて拡張子を除いたファイル名まで入ってるんですよね
SetCurrentDirectoryにファイル名を指定したらエラーになると思いますよ

ひよこ

Re:カレントディレクトリについて

#3

投稿記事 by ひよこ » 15年前

あ、本当ですね。ファイル名まで入ってました。
ファイル名が入らないようにしたらできました。
toyoさん、ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る