• ベストアンサー

delphiで、末尾のフォルダ名だけを、取得したい。

delphi6で、アドレスの末尾だけを取得したいのですが、デフォルトで関数はないのでしょうか? c:test\test1\test\koko\main.exe の”koko”を知りたいのです。 ProcessPathや、ドライブを調べる関数はあるのですが。。。 独自で作られた関数は、見かけました。 http://code.nanigac.com/source/view/314 フルアドレスをパス区切り文字で、頭から切っていき、最後にのこす、再帰って感じですねー。 やっぱり、デフォルトで関数はないのでしょうか? もっと、簡単というか、他の方法は?

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

  • ベストアンサー
回答No.1

ExtractFileName と ExtractFileDir 関数の組合せで出来ると思います。

noname#49406
質問者

お礼

できました。 ありがとうございます

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • システムの特殊なフォルダのパス名の取得を取得しようとしています。

    システムの特殊なフォルダのパス名の取得を取得しようとしています。 VC++2008 Express EditionでSHGetSpecialFolderPathをつかって パスを取ってみようとネット上の例だから拝借して 下記のようなソースを書いてみたのですが、 出てくる結果が、どの場所のパスをとっても「C」しか出てこないのです。 これってなにが原因なのでしょうか? どなたかお教え願えないでしょうか? [ソース] #include<stdio.h> #include<shlobj.h> int main(){ TCHAR buf[_MAX_PATH]; SHGetSpecialFolderPath(NULL, buf, CSIDL_DESKTOPDIRECTORY, FALSE); printf("デスクトップのパスは %s です\n",buf); return 0x00; }

  • フルパス名の取り出し

    いつもお世話になっています。 VS2005でWindowsアプリケーション作成を行っています。 今回、フルパス名を仮に  szPath = "c:\Test\Debug\test.exe" とした場合、最後の"test.exe"を取り出すためには、  _splitpath(szPath, drive, dir, name, ext);  _makepath(path, drive, dir, NULL, NULL); としますが、"Debug\test.exe"を取りたい場合も、 上記の関数を使ってできるのでしょうか? ご教授お願いいたします。

  • プロジェクト名を知りたい

    今現在実行しているEXEのプロジェクト名を取得する方法はあるのでしょうか?(プロパティーを開いてみるのではなく、コードで)サンプルソースも頂けるとうれしいです。

  • ポインタの引数を持った関数の呼び出し方

    ポインタの引数を持った関数の呼び出し方がわからず困っています。 呼び出したい関数は下記 enum{ TEST_TOP_MENU=0, TEST_MAIN1_MENU, TEST_MAIN2_MENU, TEST_MAIN3_MENU, TEST_AREA_TOP_MENU, }; void test_menu_mode(LCD_VIEW_MODE *view) { int ret_menu; switch(view->sub){ case TEST_MAIN1_MENU: ret_menu = test_main1_menu(); break; case TEST_MAIN2_MENU: ret_menu = test_main2_menu(); break; case TEST_AREA_TOP_MENU: ret_menu = test_area_top_menu(); break; } } この関数を呼び出すために main(){ //中略 LCD_VIEW_MODE test; test->sub = TEST_MAIN1_MENU; test_menu_mode(test); //中略 } このようにtest_menu_mode関数を呼び出すとエラーが出てコンパイルできないのですが、どこが問題なのでしょうか?

  • 複数のアドレスを関数から取得したいのですが

    関数から複数のアドレスを取得したいのですが方法がわかりません。 間違いではありますがイメージとしてはこういうことが行いたいのですが。 void main(){   int *test1,*test2;   Test(test1,test2); } void Test(int *in_test1, int *in_test2){   int data1,data2;   data1 = 1;   data2 = 2;   in_test1 = &in_test1;   in_test2 = &in_test2; } 結果的にmain関数のtest1とtest2にTest関数のdata1とdata2のアドレスが入るようにしたいのです。 ご教授願います。

  • 【c++】文字列の操作

    お世話になります。 テキストの操作について質問があります。 getline関数を使用してテキストの1行分を読み込み その文字列をstrtok関数を使用し区切り文字ごとに配列に入れたいと考えています。 ですがgetlineはstd::string型の変数が必要でstrtok関数はchar型しか受け付けないため 関数同士で型が合わず困っています。 何とか型を合わせる方法は無いでしょうか。 以下にソースコードを記載しますのでご指導お願いします。 int main(){ using namespace std; string strText; char chArray[100]; ifstream fs("test.txt"); //パスで指定されたファイルから1行分の文字列を取得する while( getline(fs , strText , '\n') ){ //区切りごと配列に入れたい chArray = strtok(strText , ","); } }

  • Windows漢字フォルダ名の扱い(その2)

    先回に引き続きお伺いします。 ■フォルダツリー体系が次のようになっているとき、 D:\TEMP ├─フォルダ名の末尾に機能 │ test1.txt ├─フォルダ名の末尾に表 │ test2.txt ├─途中に機能がある │ test3.txt └─途中に表がある test4.txt ■次のスクリプトを処理させるのですが、 #!perl use strict; &subdir($ARGV[0]); sub subdir { my($dir) = $_[0]; opendir(DIR,"$dir") || die "'$dir' $! stopped"; foreach(sort readdir(DIR)){ next if(/^\.+/); # '.' '..' はパス if(-f "$dir\\$_"){ print "'$dir\\$_'\tはファイルです\n"; }elsif(-d "$dir\\$_"){ print "'$dir\\$_'\tはフォルダです\n"; &subdir("$dir\\$_"); }else{ print "'$dir\\$_'\tは何ですか?\n";#出て欲しくない } } closedir(DIR); } ■結果は、次のようになります。 (※フォルダ名の末尾に特殊な漢字コードがある所が判定できない) C:\>test.pl d:\temp 'd:\temp\フォルダ名の末尾に機能' は何ですか? 'd:\temp\フォルダ名の末尾に表' は何ですか? 'd:\temp\途中に機能がある' はフォルダです 'd:\temp\途中に機能がある\test3.txt' はファイルです 'd:\temp\途中に表がある' はフォルダです 'd:\temp\途中に表がある\test4.txt' はファイルです 先回、色々と教わったこと use encoding "Shift_JIS"; や 局所的に $dir を decodeさせるなどしても上手く行きません。良い方法があれば教えてください。

    • ベストアンサー
    • Perl
  • (Delphi) 例外の再生成について

    例外の再生成のことで質問があります。 Delphi の Ini ファイルを操作するクラス TCustomIniFile には、 ReadDate や ReadFloat といったメソッドがありますが、 このメソッドのソースコードを拝見すると、例外処理を行っている部分で EConvertError 例外以外の時は else 節の raise で同じ例外を再生成しているのですが、 この else 節は無くても同じ気がするのですが、どうしてわざわざ else 節で キャッチした例外を再生成しているのでしょうか? EConvertError 例外以外は例外処理しなければそのままメソッド呼び出し元に伝わりますが、 あえて raise で再生成していることに何か意図はあるのでしょうか? 以下は ReadFloat メソッドのソースコードです。 1 と 2 の部分がなくても結果は同じではないのでしょうか? function TCustomIniFile.ReadFloat(const Section, Name: string; Default: Double): Double; var  FloatStr: string; begin  FloatStr := ReadString(Section, Name, '');  Result := Default;  if FloatStr <> '' then  try   Result := StrToFloat(FloatStr);  except   on EConvertError do    // Ignore EConvertError exceptions   else ←―――――――――――――― 1    raise; ←―――――――――――――― 2  end; end;

  • 別のフォルダにコピー

    Visual Basic Express 2012 テキストボックスにファイルをD&Dして、絶対パスを取得して 名前を変更してコピーしています。 D:\test\aaa.txt → D:\test\aaa_abc.txt "cmd /c copy " & filen1 & ".txt " & filen1 & "_abc.txt" filen1は拡張子なしの絶対パスになっています。 末尾に文字を追加してコピーしているのですが、パスの途中に 文字を追加したいです。 D:\test\aaa.txt → D:\test\old\aaa_abc.txt 上記のように別のフォルダにコピーするにはどうしたら良いでしょうか?

  • エクセルのフルパスをvbaで取得

    当方エクセル2003で、 エクセルのフルパスは C:\Program Files\Microsoft Office\OFFICE11\ EXCEL.EXE です。 それをVBAで取得するにはどうすればいいですか? Sub サンプル() Debug.Print 'オフィスがインストールされているフォルダのパスの取得 End Sub のようにして、 C:\Program Files\Microsoft Office\OFFICE11\ EXCEL.EXE を返したいです。 VBAコードをご教示ください。