|
DelphiXE3 [FMX] ファイル操作関連(3) 2014/06/28 |
前回の続きです。
ファイル操作関連のルーチンは、System、System.SysUtils 以外にも、System.IOUtils 内にまとめられているようです。このユニットの中では、TPath、TDirectory、TFile という型があり、それぞれに各種メソッドがあります。System内、System.SysUtils内のものと重複するものもありますが、便利そうなものもあるようです。
果たして、Delphi、FireMonkey がどれを推奨しているものか?というのはよく分かりません。でもまぁ、便利に使えそうなものは、どんどん使えばいいんじゃないかと思われますが…。
それではまず、System.IOUtils 内の TPath から見ていきます。
ChangeExtension | 指定されたパスで示されるファイルまたはディレクトリの拡張子を変更します。 |
Combine | 2 つのパス文字列を結合します。 |
DriveExists | 指定されたパスで使用されているドライブ文字が実際に存在するかどうかを確かめます。 |
GetAttributes | ファイルまたはディレクトリ属性を返します。 |
GetDirectoryName | ファイル名のドライブ部分とディレクトリ部分を抽出します。 |
GetExtendedPrefix | 指定されたパスの拡張プレフィックス タイプを返します。 |
GetExtension | ファイル名の拡張子部分を抽出します。 |
GetFileName | ファイル名の名前部分と拡張子部分を抽出します。 |
GetFileNameWithoutExtension | ファイル名の名前部分を、拡張子の部分なしで、抽出します。 |
GetFullPath | 指定されたパスの絶対パスを返します。 |
GetGUIDFileName | 一意なファイル名として使用できる新しい GUID を生成します。 |
GetHomePath | ユーザーのホーム パスを返します。 |
GetInvalidFileNameChars |
|
GetInvalidPathChars |
|
GetPathRoot |
|
GetRandomFileName | ランダムなファイル名を新たに生成します。 |
GetTempFileName | 一意な一時ファイルを生成します。 |
GetTempPath | システムの一時ディレクトリへのパスを返します。 |
HasExtension | 指定されたファイル名に拡張子部分があるかどうかを確かめます。 |
HasValidFileNameChars | 指定されたファイル名が使用可能な文字だけで構成されているかどうかを確かめます。 |
HasValidPathChars | 指定されたパス文字列が使用可能な文字だけで構成されているかどうかを確かめます。 |
IsDriveRooted | 指定されたパスがドライブ文字で始まる絶対パスかどうかを確かめます。 |
IsExtendedPrefixed | 指定されたパスに拡張プレフィックスが含まれているかどうかを確かめます。 |
IsPathRooted | 指定されたパスが相対パスか絶対パスかを確かめます。 |
IsRelativePath |
|
IsUNCPath | 指定されたパスが UNC(Universal Naming Convention:汎用命名規則)形式かどうかを確かめます。 |
IsUNCRooted | 指定されたパスが UNC(Universal Naming Convention:汎用命名規則)ルート形式かどうかを確かめます。 |
IsValidFileNameChar | 指定された文字がファイル名で使用可能かどうかを確かめます。 |
IsValidPathChar | 指定された文字がパス文字列で使用可能かどうかを確かめます。 |
MatchesPattern |
|
SetAttributes | ファイルまたはディレクトリ属性を設定します。 |
以下、ヘルプより。
ChangeExtension |
class function ChangeExtension(
const Path, Extension: string): string; static; |
指定されたパスで示されるファイルまたはディレクトリの拡張子を変更します。
ChangeExtension は、指定されたファイル名またはディレクトリ名を Path パラメータとして受け取り、その拡張子を、Extension パラメータで渡された拡張子に変更します。指定された新しい拡張子には、先頭のピリオドを含めてもかまいません。ChangeExtension は、実際のファイルの名前を変更するわけではなく、新しいファイル名文字列を作成するだけです。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前 | 意味 |
Path | 拡張子の変更対象となるファイル パスまたはディレクトリ パス |
Extension | 指定されたパスに適用される新しい拡張子 |
メモ: 指定されたパスまたは拡張子に無効な文字が含まれていた場合、ChangeExtension は例外を発生させます。 |
uses節に「System.IOUtils」を追加し(以下同様です)、
s := ParamStr(0);
Memo1.Lines.Add(s);
s := TPath.ChangeExtension(ParamStr(0),'.dat');
Memo1.Lines.Add(s); |
のようにすると、メモ内容は、
(Windows7の場合)
C:\AFsoft\DelphiXE3\test\438\Win32\Release\p438.exe
C:\AFsoft\DelphiXE3\test\438\Win32\Release\p438.dat |
(MacOSXの場合)
/Users/user/Applications/Embarcadero/RADPAServer/10.0/scratch-dir/AFsoft-test/p438.app/Contents/MacOS/p438
/Users/user/Applications/Embarcadero/RADPAServer/10.0/scratch-dir/AFsoft-test/p438.app/Contents/MacOS/p438.dat |
のようになります。
「s := TPath.ChangeExtension(ParamStr(0),'dat');」のように「.」を抜いても同様に動作するようです。 |
Combine
|
class function Combine(
const Path1, Path2: string): string; inline; static; |
2 つのパス文字列を結合します。
Combine を呼び出すと、2 つの異なるパスを結合して新しいパスを取得できます。第2パスが絶対パスであれば、Combine はそれをそのまま返し、そうでない場合、Combine は第 1 パスに第 2 パスを連結して返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前 | 意味 |
Path1 | 第1パス。Path1 は Path2 のルートとして使用されます。 |
Path2 | Path1 に連結されるパス |
メモ: 指定されたパスに無効な文字が含まれていた場合、Combine は例外を発生させます。 |
s := ParamStr(0);
Memo1.Lines.Add(s);
s := ExtractFilePath(ParamStr(0));
t := TPath.Combine(s,'ABCDE');
Memo1.Lines.Add(t); |
のようにすると、メモ内容は、
(Windows7の場合)
C:\AFsoft\DelphiXE3\test\438\Win32\Release\p438.exe
C:\AFsoft\DelphiXE3\test\438\Win32\Release\ABCDE |
(MacOSXの場合)
/Users/user/Applications/Embarcadero/RADPAServer/10.0/scratch-dir/AFsoft-test/p438.app/Contents/MacOS/p438
/Users/user/Applications/Embarcadero/RADPAServer/10.0/scratch-dir/AFsoft-test/p438.app/Contents/MacOS/ABCDE |
のようになります。 |
DriveExists
|
class function DriveExists(
const Path: string): Boolean; static; |
指定されたパスで使用されているドライブ文字が実際に存在するかどうかを確かめます。
DriveExists を呼び出すと、パスのドライブ文字が有効な Windows ドライブの識別子かどうかを確認できます。パスのルートが有効なドライブを識別するドライブ文字である場合、DriveExists は True を返し、そうでない場合は False を返します。
このメソッドに必要なパラメータの一覧を以下の表に示します。
メモ: 指定されたパスに無効な文字が含まれていた場合、DriveExists は例外を発生させます。 |
s := 'C:\ABCDE\あいうえお\p438.exe';
f := TPath.DriveExists(s);
Memo1.Lines.Add(BoolToStr(f));
s := '\\MYPC\ABCDE\あいうえお\p438.exe';
f := TPath.DriveExists(s);
Memo1.Lines.Add(BoolToStr(f));
s := 'P:\ABCDE\あいうえお\p438.exe';
f := TPath.DriveExists(s);
Memo1.Lines.Add(BoolToStr(f)); |
のようにすると、メモ内容は、
(Windows7の場合)
-1
0
0 |
(MacOSXの場合)
0
0
0 |
のようになります。 |
GetAttributes
|
class function GetAttributes(const Path: string;
FollowLink: Boolean = True): TFileAttributes;
inline; static; |
ファイルまたはディレクトリ属性を返します。
指定のファイルまたはディレクトリの属性を取得するには、GetAttributes を呼び出します。 GetAttributes の戻り値は TFileAttribute 値の集合であり、集合内のそれぞれの値が 1 つのファイル属性を表します。
このメソッドに必要なパラメータの一覧を以下の表に示します:
名前 | 意味 |
Path | 属性を取得するファイルまたはディレクトリのパス。 |
FollowLink | シンボリック リンクが使用されているかどうかを示します。 |
メモ: ファイルまたはディレクトリにアクセスできない場合やパスが無効な場合には、GetAttributes は例外を発生させます。
メモ:Path パラメータが シンボリック リンク であり、FollowLink パラメータが True に設定されている場合、このメソッドは対象ファイル(またはディレクトリ)に対して実行されます。 最初の条件が True だが FollowLink パラメータが False に設定されている場合、メソッドはシンボリック リンクに対して実行されます。 リンクが壊れている場合、メソッドは常に False を返します。 |
type TFileAttributes = set of TFileAttribute;
TFileAttribute = (faReadOnly, faHidden, faSystem, faDirectory, faArchive, faDevice, faNormal, faTemporary, faSparseFile, faReparsePoint, faCompressed, faOffline, faNotContentIndexed, faEncrypted, faSymLink) platform;
faReadOnly
読み取り専用ファイルまたは読み取り専用ディレクトリであることを示します。
faHidden
隠しファイルまたは隠しディレクトリであることを示します。
faSystem
システム ファイルまたはシステム ディレクトリであることを示します。
faDirectory
ディレクトリであることを示します。
faArchive
Windows アーカイブ ファイルであることを示します。
faDevice
Windows デバイス ファイルであることを示します。
faNormal
通常のファイルであることを示します。
faTemporary
一時ファイルまたは一時ディレクトリであることを示します。
faSparseFile
スパース ファイルであることを示します。スパース ファイルとは、ほとんどゼロで埋められた大きいファイルのことです。
faReparsePoint
再解析ポイントであることを示します。再解析ポイントとは、実際のファイルまたはディレクトリにリンクしているユーザー定義データ ブロックのことです。
faCompressed
圧縮ファイルまたは圧縮ディレクトリであることを示します。
faOffline
内容が使用不能なオフライン ファイルであることを示します。
faNotContentIndexed
インデックス付け操作を省略されたファイルであることを示します。
faEncrypted
暗号化されたファイルまたはディレクトリであることを示します。
faSymLink
シンボリック リンクであることを示します。 |
ボタン、開く画面を配置し、
var
s : string ;
a : TFileAttributes ;
begin
if OpenDialog1.Execute then begin
s := OpenDialog1.FileName;
Memo1.Lines.Clear;
a := TPath.GetAttributes(s);
if (System.IOUtils.TFileAttribute.faReadOnly in a) then
Memo1.Lines.Add('読み取り専用ファイル');
if (System.IOUtils.TFileAttribute.faHidden in a) then
Memo1.Lines.Add('隠しファイル');
if (System.IOUtils.TFileAttribute.faArchive in a) then
Memo1.Lines.Add('Windows アーカイブ ファイル');
if (System.IOUtils.TFileAttribute.faNormal in a) then
Memo1.Lines.Add('通常のファイル');
end; |
等のようにすると、指定したファイルのファイル属性がメモに表示されます。が、これは Windowsのみ実行可能で、MacOSX の場合には、コンパイル時にエラーが発生します。 |
GetDirectoryName
|
class function GetDirectoryName(
FileName: string): string; static; |
ファイル名のドライブ部分とディレクトリ部分を抽出します。
GetDirectoryName は、指定されたファイル名のドライブ部分とディレクトリ部分を抽出します。FileName にドライブ部分もディレクトリ部分も含まれていない場合は、空の文字列が結果として得られます。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前 | 意味 |
FileName | ドライブとディレクトリの抽出元となるファイル名 |
メモ: 指定されたファイル名に無効な文字が含まれていた場合、GetDirectoryName は例外を発生させます。
例(Delphi):
WriteLn(TPath.GetDirectoryName('D:\Projects\HelloWorld.exe'));
メモ: このコードからは "D:\Projects" が出力されます。最後の区切り文字はパス名に含まれません。 |
s := ParamStr(0);
Memo1.Lines.Add(s);
t := TPath.GetDirectoryName(s);
Memo1.Lines.Add(t); |
のようにすると、メモ内容は、
(Windows7の場合)
C:\AFsoft\DelphiXE3\test\438\Win32\Release\p438.exe
C:\AFsoft\DelphiXE3\test\438\Win32\Release |
(MacOSXの場合)
/Users/user/Applications/Embarcadero/RADPAServer/10.0/scratch-dir/AFsoft-test/p438.app/Contents/MacOS/p438
/Users/user/Applications/Embarcadero/RADPAServer/10.0/scratch-dir/AFsoft-test/p438.app/Contents/MacOS |
のようになります。 |
GetExtendedPrefix
|
class function GetExtendedPrefix(
const Path: string): TPathPrefixType; static; |
指定されたパスの拡張プレフィックス タイプを返します。
GetExtendedPrefix を呼び出すと、指定されたパスの拡張プレフィックス タイプを指定する TPathPrefixType を取得できます。先頭に \\?\ または \\?\UNC\ が付くパスは Windows 固有のもので、非常に長くてもよく、255 文字(MAX_PATH)には制限されません。255 文字より長いパスを扱うのは、今日よくあることです。それらの先頭に \\?\ を付ければ、問題は解決します。 |
TPathPrefixType = (pptNoPrefix, pptExtended, pptExtendedUNC);
pptNoPrefix
パスには拡張プレフィックスが付いていません。
pptExtended
パスには拡張プレフィックス(\\?\)が付いています。
pptExtendedUNC
パスには拡張 UNC プレフィックス(\\?\UNC\)が付いています。 |
s := 'C:\ABCDE\あいうえお\p438.exe';
pr:= TPath.GetExtendedPrefix(s);
if (pr = TPathPrefixType.pptNoPrefix) then
Memo1.Lines.Add('拡張プレフィックスが付いていません。');
if (pr = TPathPrefixType.pptExtended) then
Memo1.Lines.Add('拡張プレフィックスが付いています。');
s := '\\?\ABCDE\あいうえお\p438.exe';
pr:= TPath.GetExtendedPrefix(s);
if (pr = TPathPrefixType.pptNoPrefix) then
Memo1.Lines.Add('拡張プレフィックスが付いていません。');
if (pr = TPathPrefixType.pptExtended) then
Memo1.Lines.Add('拡張プレフィックスが付いています。'); |
のようにすると、メモ内容は、
(Windows7の場合)
拡張プレフィックスが付いていません。
拡張プレフィックスが付いています。 |
(MacOSXの場合)
拡張プレフィックスが付いていません。
拡張プレフィックスが付いていません。 |
のようになります。MacOSXの場合は認識出来ないようですね。 |
GetExtension
|
class function GetExtension(
const FileName: string): string; static; |
ファイル名の拡張子部分を抽出します。
GetExtension は、指定されたファイル名の拡張子部分を抽出します。FileName に拡張子が含まれていない場合は、空の文字列が結果として得られます。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前 | 意味 |
FileName | 拡張子の抽出元となるファイル名 |
メモ: 指定されたファイル名に無効な文字が含まれていた場合、GetExtension は例外を発生させます。 |
s := ParamStr(0);
t := TPath.GetExtension(s);
Memo1.Lines.Add('ファイル名【'+s+'】');
Memo1.Lines.Add('拡張子 【'+t+'】');
s := 'abcde.fghij.lmnop';
t := TPath.GetExtension(s);
Memo1.Lines.Add('ファイル名【'+s+'】');
Memo1.Lines.Add('拡張子 【'+t+'】'); |
のようにすると、メモ内容は、
(Windows7の場合)
ファイル名【C:\AFsoft\DelphiXE3\test\438\Win32\Release\p438.exe】
拡張子 【.exe】
ファイル名【abcde.fghij.lmnop】
拡張子 【.lmnop】 |
(MacOSXの場合)
ファイル名【/Users/user/Applications/Embarcadero/RADPAServer/10.0/scratch-dir/AFsoft-test/p438.app/Contents/MacOS/p438】
拡張子 【】
ファイル名【abcde.fghij.lmnop】
拡張子 【.lmnop】 |
のようになります。 |
GetFileName
|
class function GetFileName(
const FileName: string): string; inline; static; |
ファイル名の名前部分と拡張子部分を抽出します。
GetFileName は、指定されたファイル名の名前部分と拡張子部分を抽出します。結果として得られる文字列は、FileName のうち、パス情報と名前(拡張子を含む)を区切るコロンまたはバックスラッシュの直後の文字から最後の文字までです。FileName にドライブ部分とディレクトリ部分が含まれていない場合、結果として得られる文字列は FileName と同じです。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前 | 意味 |
FileName | 名前と拡張子の抽出元となるファイル名 |
メモ: 指定されたファイル名に無効な文字が含まれていた場合、GetFileName は例外を発生させます。 |
s := ParamStr(0);
t := TPath.GetFileName(s);
Memo1.Lines.Add('【'+s+'】');
Memo1.Lines.Add('【'+t+'】'); |
のようにすると、メモ内容は、
(Windows7の場合)
【C:\AFsoft\DelphiXE3\test\438\Win32\Release\p438.exe】
【p438.exe】 |
(MacOSXの場合)
【/Users/user/Applications/Embarcadero/RADPAServer/10.0/scratch-dir/AFsoft-test/p438.app/Contents/MacOS/p438】
【p438】 |
のようになります。 |
GetFileName
WithoutExtension
|
class function GetFileNameWithoutExtension(
const FileName: string): string; static; |
ファイル名の名前部分を、拡張子の部分なしで、抽出します。
GetFileNameWithoutExtension は、指定されたファイル名の名前部分を、拡張子部分を除いて抽出します。結果返される文字列は、FileName の左部分の文字群から構成され、パス情報を名前と区切る、コロン(:)またはバックスラッシュ(\)の後から最初の文字が始まり、拡張子の一部であるピリオドの前までとなります。ドット(.)または拡張子自身は含まれません。ピリオドが複数ある場合、GetFileNameWithoutExtension は、拡張子の一部と考えられる、最後のピリオドの前までとなります。
たとえば、
Writeln(TPath.GetFileNameWithoutExtension('D:\Testing\MyApp.exe'));
Writeln(TPath.GetFileNameWithoutExtension('D:\Testing\MyApp.exe.config')); |
は、以下を生成します。
結果文字列は、FileName にドライブ、ディレクトリ、拡張子部分が含まれていない場合には、FileName と同一になります。このメソッドに必要なパラメータの一覧を以下の表に示します:
名前 | 意味 |
FileName | 名前が抽出されるファイル名。 |
メモ: GetFileNameWithoutExtension は、指定されたファイル名に不正な文字が入っている場合には、例外を発生させます。 |
s := ParamStr(0);
t := TPath.GetFileNameWithoutExtension(s);
Memo1.Lines.Add('【'+s+'】');
Memo1.Lines.Add('【'+t+'】'); |
のようにすると、メモ内容は、
(Windows7の場合)
【C:\AFsoft\DelphiXE3\test\438\Win32\Release\p438.exe】
【p438】 |
(MacOSXの場合)
【/Users/user/Applications/Embarcadero/RADPAServer/10.0/scratch-dir/AFsoft-test/p438.app/Contents/MacOS/p438】
【p438】 |
のようになります。 |
GetFullPath
|
class function GetFullPath(
const Path: string): string; static; |
指定されたパスの絶対パスを返します。
GetFullPath は、指定された相対パスの完全(絶対)パスを返します。指定されたパスが絶対パスの場合、GetFullPath は単にそのパスを返し、そうでない場合、GetFullPath は、指定された Path のルートとして現在の作業ディレクトリを使用します。このメソッドに必要なパラメータの一覧を以下の表に示します。
メモ: 指定されたパスに無効な文字が含まれていた場合、GetFullPath は例外を発生させます。 |
s := 'ABCDE';
t := TPath.GetFullPath(s);
Memo1.Lines.Add('【'+t+'】');
s := 'C:\ABCDE';
t := TPath.GetFullPath(s);
Memo1.Lines.Add('【'+t+'】');
s := '/Users/User/ABCDE';
t := TPath.GetFullPath(s);
Memo1.Lines.Add('【'+t+'】'); |
のようにすると、メモ内容は、
(Windows7の場合)
【C:\AFsoft\DelphiXE3\test\438\Win32\Release\ABCDE】
【C:\ABCDE】
【C:\Users\User\ABCDE】 |
(MacOSXの場合)
【/Users/user/Applications/Embarcadero/RADPAServer/10.0/scratch-dir/AFsoft-test/p438.app/Contents/MacOS/ABCDE】
【/Users/user/Applications/Embarcadero/RADPAServer/10.0/scratch-dir/AFsoft-test/p438.app/Contents/MacOS/C:\ABCDE】
【/Users/user/ABCDE】 |
のようになります(※「\」は半角のバックスラッシュ)。MacOSXでは、Windowsでの「:」「\」を正常に扱えていない様子なのでプログラミングの際には注意する。 |
GetGUIDFileName
|
class function GetGUIDFileName(
const UseSeparator: Boolean = False)
: string; static; |
一意なファイル名として使用できる新しい GUID を生成します。
GetGUIDFileName を呼び出すと、ファイルやディレクトリの一意な名前に適した新しい GUID を生成できます。GetGUIDFileName はファイル名を生成するだけで、実際のファイルは作成しません。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前 | 意味 |
UseSeparator | 生成される名前に GUID の区切り文字(マイナス記号)がそのまま含まれるかどうかを示します。 |
|
s := TPath.GetGUIDFileName(False);
t := TPath.GetGUIDFileName(True);
Memo1.Lines.Add('【'+s+'】');
Memo1.Lines.Add('【'+t+'】'); |
のようにすると、メモ内容は、
(Windows7の場合)
【ECC413FF679248C4A35672A1F612396F】
【9FE85A1D-A63F-4B89-A42D-FA64774545B3】 |
(MacOSXの場合)
【6C52BE6C33FDF311B9240023121DBD8C】
【8E53BE6C-33FD-F311-C924-0023121DAD8C】 |
のようになります。文字内容は実行時によってころころ変化します。 |
GetHomePath
| class function GetHomePath: string; static; |
ユーザーのホーム パスを返します。
GetHomePath を呼び出すと、現在のユーザーのホーム パスを取得することができます。結果は、"X:\Documents and Settings\<ユーザー名>\Application Data" を指します(Windows プラットフォームの場合)。
メモ: GetHomePath は、ユーザー毎の設定を保存するために使用する必要があります。例:
TFile.WriteAllText(TPath.GetHomePath() + TPath.DirectorySeparatorChar + 'sample.txt', 'This is my sample text.'); |
|
s := TPath.GetHomePath;
Memo1.Lines.Add('【'+s+'】'); |
のようにすると、メモ内容は、
(Windows7の場合)
【C:\Users\User\AppData\Roaming】 |
(MacOSXの場合)
【/Users/user】 |
のようになります。 |
GetInvalidFileNameChars
|
class function GetInvalidFileNameChars
: TCharArray; inline; static; |
(※記載無し) |
名前から想像するに、ファイル名に使えない文字(コード)を取得する、という感じの意味合いだと思われます。
ca := TPath.GetInvalidFileNameChars;
s := '';
for i:= 0 to Length(ca)-1 do
s := s + IntToStr(Ord(ca[i])) + ' ' ;
Memo1.Lines.Add('【'+s+'】'); |
のようにすると、メモ内容は、
(Windows7の場合)
【0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 34 42 47 58 60 62 63 92 124 】 |
(MacOSXの場合)
【0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 47 126 】 |
のようになります。 |
GetInvalidPathChars
|
class function GetInvalidPathChars
: TCharArray; inline; static; |
(※記載無し) |
名前から想像するに、パス名に使えない文字(コード)を取得する、という感じの意味合いだと思われます。
ca := TPath.GetInvalidPathChars;
s := '';
for i:= 0 to Length(ca)-1 do
s := s + IntToStr(Ord(ca[i])) + ' ' ;
Memo1.Lines.Add('【'+s+'】'); |
のようにすると、メモ内容は、
(Windows7の場合)
【0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 34 60 62 124 】 |
(MacOSXの場合)
【0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 】 |
のようになります。 |
GetPathRoot
|
class function GetPathRoot(
const Path: string): string; static; |
(※記載無し) |
s := ParamStr(0);
t := TPath.GetPathRoot(s);
Memo1.Lines.Add('【'+s+'】');
Memo1.Lines.Add('【'+t+'】'); |
のようにすると、メモ内容は、
(Windows7の場合)
【C:\AFsoft\DelphiXE3\test\438\Win32\Release\p438.exe】
【C:\】 |
(MacOSXの場合)
【/Users/user/Applications/Embarcadero/RADPAServer/10.0/scratch-dir/AFsoft-test/p438.app/Contents/MacOS/p438】
【/】 |
のようになります。 |
GetRandomFileName
|
class function GetRandomFileName
: string; static; |
ランダムなファイル名を新たに生成します。
GetRandomFileName を呼び出すと、ランダムなファイル名を新たに生成できます。GetRandomFileName で生成されたファイル名は、一意である保証はありません。一意なファイルが必要な場合は、代わりに GetGUIDFileName メソッドを使用します。一意な名前の実際の一時ファイルを生成するには、GetTempFileName メソッドを使用します。 |
s := TPath.GetRandomFileName;
Memo1.Lines.Add('【'+s+'】'); |
のようにすると、メモ内容は、
(Windows7の場合)
【5R8Y0IHZ.2A2】 |
(MacOSXの場合)
【3D5eXb98.mzO】 |
のようになります。文字内容は実行時によってころころ変化します。 |
GetTempFileName
| class function GetTempFileName: string; static; |
一意な一時ファイルを生成します。
GetTempFileName を呼び出すと、一意な名前の新しい一時ファイルを生成できます。GetTempFileName は、サイズがゼロのファイルを一時的な場所に実際に作成し、その名前を返します。このファイルをもう使用しなくなったら、呼び出し側がそれを削除する必要があります。
メモ: ユーザーがシステムの一時ディレクトリにアクセスできない場合、GetTempFileName は例外を発生させます。 |
s := TPath.GetTempFileName ;
Memo1.Lines.Add('【'+s+'】'); |
のようにすると、メモ内容は、
(Windows7の場合)
【C:\Users\AFsoft\AppData\Local\Temp\tmp9156.tmp】 |
(MacOSXの場合)
【/var/tmp/tmp.0.Vr00ku】 |
のようになり、Windows7では、実際にそのファイルが作成されています。(0KB) 作成したファイルは自動的に削除されたりはしませんので、自分で、ファイルを消すプログラムを入れる必要があります。MacOSXの場合は、ファイルが作成された様子は確認出来ませんでした。 |
GetTempPath
| class function GetTempPath: string; static; |
システムの一時ディレクトリへのパスを返します。
GetTempPath を呼び出すと、システムの一時ディレクトリへのパスを取得できます。GetTempPath で返されるパスは、システムで一元管理される場所に一時ファイルを格納するのに使用することができます。 |
s := TPath.GetTempPath ;
Memo1.Lines.Add('【'+s+'】'); |
のようにすると、メモ内容は、
(Windows7の場合)
【C:\Users\AFsoft\AppData\Local\Temp\】 |
(MacOSXの場合)
【/var/folders/tf/tfzDVRPTHFuoG1cd3WJY+U+++TI/-Tmp-/】 |
のようになります。 |
HasExtension
|
class function HasExtension(const Path: string)
: Boolean; static; |
指定されたファイル名に拡張子部分があるかどうかを確かめます。
HasExtension を呼び出すと、指定されたファイル名に拡張子部分があるかどうかを確かめることができます。ファイル名に拡張子が含まれている場合、HasExtension は True を返し、そうでない場合は False を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前 | 意味 |
Path | 確認の対象となるファイル名またはディレクトリ名 |
メモ: 指定されたパスに無効な文字が含まれていた場合、HasExtension は例外を発生させます。 |
s := 'abcdefg';
f := TPath.HasExtension(s);
Memo1.Lines.Add(BoolToStr(f));
s := 'abcdefg.hij';
f := TPath.HasExtension(s);
Memo1.Lines.Add(BoolToStr(f)); |
のようにすると、メモ内容は、
(Windows7の場合)
0
-1 |
(MacOSXの場合)
0
-1 |
のようになります。 |
HasValidFileNameChars
|
class function HasValidFileNameChars(
const FileName: string;
const UseWildcards: Boolean)
: Boolean; static; |
指定されたファイル名が使用可能な文字だけで構成されているかどうかを確かめます。
HasValidFileNameChars を呼び出すと、指定されたファイル名が使用可能な文字だけで構成されているかどうかを確かめることができます。文字列が使用可能な文字だけで構成されている場合、HasValidFileNameChars は True を返し、そうでない場合は False を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前 | 意味 |
Path | 確認の対象となるファイル名文字列 |
UseWildcards | マスク文字(たとえば、アスタリスクや疑問符など)を有効なファイル名文字として扱うかどうかを指定します。 |
|
s := 'abcdef.ghi';
f := TPath.HasValidFileNameChars(s,True);
Memo1.Lines.Add(BoolToStr(f));
s := 'abc' + #13 + 'def.ghi';
f := TPath.HasValidFileNameChars(s,True);
Memo1.Lines.Add(BoolToStr(f));
s := 'abc?def.ghi';
f := TPath.HasValidFileNameChars(s,True);
Memo1.Lines.Add(BoolToStr(f));
s := 'abc?def.ghi';
f := TPath.HasValidFileNameChars(s,False);
Memo1.Lines.Add(BoolToStr(f));
s := 'abc*.ghi';
f := TPath.HasValidFileNameChars(s,True);
Memo1.Lines.Add(BoolToStr(f));
s := 'abc*.ghi';
f := TPath.HasValidFileNameChars(s,False);
Memo1.Lines.Add(BoolToStr(f)); |
のようにすると、メモ内容は、
(Windows7の場合)
-1
0
-1
0
-1
0 |
(MacOSXの場合)
-1
0
-1
-1
-1
-1 |
のようになります。MacOSXの場合は、ワイルドカード指定が異なる/無い?様子ですね。 |
HasValidPathChars
|
class function HasValidPathChars(
const Path: string;
const UseWildcards: Boolean)
: Boolean; static; |
指定されたパス文字列が使用可能な文字だけで構成されているかどうかを確かめます。
HasValidPathChars を呼び出すと、指定されたパス文字列が使用可能な文字だけで構成されているかどうかを確かめることができます。文字列が使用可能な文字だけで構成されている場合、HasValidPathChars は True を返し、そうでない場合は False を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前 | 意味 |
Path | 確認の対象となるパス文字列 |
UseWildcards | マスク文字(たとえば、アスタリスクや疑問符など)を有効なファイル名文字として扱うかどうかを指定します。 |
|
s := 'abcdef.ghi';
f := TPath.HasValidPathChars(s,True);
Memo1.Lines.Add(BoolToStr(f));
s := 'abc' + #13 + 'def.ghi';
f := TPath.HasValidPathChars(s,True);
Memo1.Lines.Add(BoolToStr(f));
s := 'abc?def.ghi';
f := TPath.HasValidPathChars(s,True);
Memo1.Lines.Add(BoolToStr(f));
s := 'abc?def.ghi';
f := TPath.HasValidPathChars(s,False);
Memo1.Lines.Add(BoolToStr(f));
s := 'abc*.ghi';
f := TPath.HasValidPathChars(s,True);
Memo1.Lines.Add(BoolToStr(f));
s := 'abc*.ghi';
f := TPath.HasValidPathChars(s,False);
Memo1.Lines.Add(BoolToStr(f)); |
のようにすると、メモ内容は、
(Windows7の場合)
-1
0
-1
-1
-1
-1 |
(MacOSXの場合)
-1
0
-1
-1
-1
-1 |
のようになります。ワイルドカード指定は無関係の様子です。 |
IsDriveRooted
|
class function IsDriveRooted(const Path: string)
: Boolean; static; |
指定されたパスがドライブ文字で始まる絶対パスかどうかを確かめます。
IsDriveRooted を呼び出すと、指定されたパスがドライブ文字で始まる絶対パスかどうかを確かめることができます。ドライブをルートとするパスはドライブ文字とコロンで始まります(たとえば、"C:\folder" など)。パスのルートがドライブ文字である場合、IsDriveRooted は True を返し、そうでない場合は False を返します。 |
s := 'abcdef.ghi';
f := TPath.IsDriveRooted(s);
Memo1.Lines.Add(BoolToStr(f));
s := 'c:\XYZ\abcdef.ghi';
f := TPath.IsDriveRooted(s);
Memo1.Lines.Add(BoolToStr(f));
s := '/Users/User/abcdef.ghi';
f := TPath.IsDriveRooted(s);
Memo1.Lines.Add(BoolToStr(f)); |
のようにすると、メモ内容は、
(Windows7の場合)
0
-1
0 |
(MacOSXの場合)
0
0
0 |
のようになります。MacOSXの方は「ドライブ文字」が存在しないので、False を返す、という事ですね。 |
IsExtendedPrefixed
|
class function IsExtendedPrefixed(
const Path: string)
: Boolean; inline; static; |
指定されたパスに拡張プレフィックスが含まれているかどうかを確かめます。
IsExtendedPrefixed を呼び出すと、指定されたパスに拡張プレフィックスが含まれているかどうかを確かめることができます。
先頭に \\?\ または \\?\UNC\ が付くパスは Windows 固有のもので、非常に長くてもよく、255 文字(MAX_PATH)には制限されません。255 文字より長いパスを扱うのは、今日よくあることです。それらの先頭に \\?\ を付ければ、問題は解決します。 |
s := 'abcdef.ghi';
f := TPath.IsExtendedPrefixed(s);
Memo1.Lines.Add(BoolToStr(f));
s := '\\User\abcdef.ghi';
f := TPath.IsExtendedPrefixed(s);
Memo1.Lines.Add(BoolToStr(f));
s := '\\?\abcdef.ghi';
f := TPath.IsExtendedPrefixed(s);
Memo1.Lines.Add(BoolToStr(f)); |
のようにすると、メモ内容は、
(Windows7の場合)
0
0
-1 |
(MacOSXの場合)
0
0
0 |
のようになります。元々が「Windows固有」とありますので MacOSX ではスルーしている感じです。 |
IsPathRooted
|
class function IsPathRooted(const Path: string)
: Boolean; inline; static; |
指定されたパスが相対パスか絶対パスかを確かめます。
IsPathRooted を呼び出すと、指定されたパスが相対パスか絶対パスかを確かめることができます。絶対パスの場合、IsPathRooted は True を返し、そうでない場合は False を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
|
s := 'abcdef.ghi';
f := TPath.IsPathRooted(s);
Memo1.Lines.Add(BoolToStr(f));
s := 'c:\XYZ\abcdef.ghi';
f := TPath.IsPathRooted(s);
Memo1.Lines.Add(BoolToStr(f));
s := '/Users/user/abcdef.ghi';
f := TPath.IsPathRooted(s);
Memo1.Lines.Add(BoolToStr(f));
Memo1.Lines.Add(' '); |
のようにすると、メモ内容は、
(Windows7の場合)
0
-1
-1 |
(MacOSXの場合)
0
0
-1 |
のようになります。 |
IsRelativePath
|
class function IsRelativePath(
const Path: string): Boolean; static; |
(※記載無し) |
s := 'abcdef.ghi';
f := TPath.IsRelativePath(s);
Memo1.Lines.Add(BoolToStr(f));
s := 'c:\XYZ\abcdef.ghi';
f := TPath.IsRelativePath(s);
Memo1.Lines.Add(BoolToStr(f));
s := '/Users/user/abcdef.ghi';
f := TPath.IsRelativePath(s);
Memo1.Lines.Add(BoolToStr(f)); |
のようにすると、メモ内容は、
(Windows7の場合)
-1
0
-1 |
(MacOSXの場合)
-1
-1
0 |
のようになります。 |
IsUNCPath
|
class function IsUNCPath(const Path: string)
: Boolean; inline; static; |
指定されたパスが UNC(Universal Naming Convention:汎用命名規則)形式かどうかを確かめます。
IsUNCPath を呼び出すと、指定されたパスが UNC 形式かどうかを確かめることができます。UNC パスの場合は、先頭にバックスラッシュ文字が 2 つ付きます(たとえば、"\\computer\folder" など)。パスが UNC 形式の場合、IsUNCPath は True を返し、そうでない場合は False を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
|
s := 'abcdef.ghi';
f := TPath.IsUNCPath(s);
Memo1.Lines.Add(BoolToStr(f));
s := '\\User\abcdef.ghi';
f := TPath.IsUNCPath(s);
Memo1.Lines.Add(BoolToStr(f));
s := '\\?\abcdef.ghi';
f := TPath.IsUNCPath(s);
Memo1.Lines.Add(BoolToStr(f)); |
のようにすると、メモ内容は、
(Windows7の場合)
0
-1
0 |
(MacOSXの場合)
0
0
0 |
のようになります。 |
IsUNCRooted
|
class function IsUNCRooted(const Path: string)
: Boolean; static; |
指定されたパスが UNC(Universal Naming Convention:汎用命名規則)ルート形式かどうかを確かめます。
IsUNCRooted を呼び出すと、指定されたパスが UNC ルート形式かどうかを確かめることができます。UNC パスの場合は、先頭にバックスラッシュ文字が 2 つ付きます(たとえば、"\\computer\folder" など)。パスが UNC ルート形式の場合、IsUNCRooted は True を返し、そうでない場合は False を返します。 |
s := 'abcdef.ghi';
f := TPath.IsUNCRooted(s);
Memo1.Lines.Add(BoolToStr(f));
s := '\\User\abcdef.ghi';
f := TPath.IsUNCRooted(s);
Memo1.Lines.Add(BoolToStr(f));
s := '\\?\abcdef.ghi';
f := TPath.IsUNCRooted(s);
Memo1.Lines.Add(BoolToStr(f)); |
のようにすると、メモ内容は、
(Windows7の場合)
0
-1
0 |
(MacOSXの場合)
0
0
0 |
のようになります。 |
IsValidFileNameChar
|
class function IsValidFileNameChar(
const AChar: Char)
: Boolean; inline; static; |
指定された文字がファイル名で使用可能かどうかを確かめます。
IsValidFileNameChar を呼び出すと、指定された文字がファイル名文字列で使用可能かどうかを確かめることができます。その文字が使用可能な場合、IsValidFileNameChar は True を返し、そうでない場合は False を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
|
f := TPath.IsValidFileNameChar('A');
Memo1.Lines.Add(BoolToStr(f));
f := TPath.IsValidFileNameChar('*');
Memo1.Lines.Add(BoolToStr(f));
f := TPath.IsValidFileNameChar(#13);
Memo1.Lines.Add(BoolToStr(f)); |
のようにすると、メモ内容は、
(Windows7の場合)
-1
0
0 |
(MacOSXの場合)
-1
-1
0 |
のようになります。 |
IsValidPathChar
|
class function IsValidPathChar(
const AChar: Char): Boolean; inline; static; |
指定された文字がパス文字列で使用可能かどうかを確かめます。
IsValidPathChar を呼び出すと、指定された文字がパス文字列で使用可能かどうかを確かめることができます。その文字が使用可能な場合、IsValidPathChar は True を返し、そうでない場合は False を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
|
f := TPath .IsValidPathChar('A');
Memo1.Lines.Add(BoolToStr(f));
f := TPath .IsValidPathChar('*');
Memo1.Lines.Add(BoolToStr(f));
f := TPath .IsValidPathChar(#13);
Memo1.Lines.Add(BoolToStr(f));
Memo1.Lines.Add(' '); |
のようにすると、メモ内容は、
(Windows7の場合)
-1
-1
0 |
(MacOSXの場合)
-1
-1
0 |
のようになります。 |
MatchesPattern
|
class function MatchesPattern(
const FileName, Pattern: string;
const CaseSensitive: Boolean)
: Boolean; static; |
(※記載無し) |
s := 'abcde.txt';
f := TPath.MatchesPattern(s,'*.txt',True);
Memo1.Lines.Add(BoolToStr(f));
f := TPath.MatchesPattern(s,'abc*.txt',True);
Memo1.Lines.Add(BoolToStr(f));
f := TPath.MatchesPattern(s,'*de.[A-N]xt',True);
Memo1.Lines.Add(BoolToStr(f)); |
のようにすると、メモ内容は、
(Windows7の場合)
-1
-1
0 |
(MacOSXの場合)
-1
-1
0 |
のようになります。[A-N]を[A-Z]にすると -1 になります。”パターン”にどういう種類があるのか?についてはよく分かりません。また、引数の CaseSensitive についてもよく分かりません。 |
SetAttributes
|
class procedure SetAttributes(
const Path: string;
const Attributes: TFileAttributes);
inline; static; |
ファイルまたはディレクトリ属性を設定します。
指定のファイルまたはディレクトリに新しい属性セットを適用するには、SetAttributes を呼び出します。
このメソッドに必要なパラメータの一覧を以下の表に示します。
名前 | 意味 |
パス | 属性を取得するファイルまたはディレクトリのパス。 |
メモ: ファイルまたはディレクトリにアクセスできない場合やパスが無効な場合には、SetAttributes は例外を発生させます。 |
s := TPath.ChangeExtension(ParamStr(0),'.txt');
Memo1.Lines.SaveToFile(s);
TPath.SetAttributes(s,
[System.IOUtils.TFileAttribute.faHidden]); |
のようにすると、Windows7の場合は、プログラムと同じフォルダ内に、プログラム名が同じで拡張子「.txt」のファイルを作成し(メモ内容)、そのファイルの属性を、隠しファイルにします。
MacOSX の場合は、コンパイル時にエラーが出て、プログラムを作成する事は出来ません。 |
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Dehi入門編
>Delphi2010
>DelphiXE3
▲2014/06/24
2014/06/28
▼2014/07/04
シェアウェア
Script!World
データベース
|