AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX] ファイル操作関連(3) 2014/06/28
 
前回の続きです。
ファイル操作関連のルーチンは、System、System.SysUtils 以外にも、System.IOUtils 内にまとめられているようです。このユニットの中では、TPath、TDirectory、TFile という型があり、それぞれに各種メソッドがあります。System内、System.SysUtils内のものと重複するものもありますが、便利そうなものもあるようです。
果たして、Delphi、FireMonkey がどれを推奨しているものか?というのはよく分かりません。でもまぁ、便利に使えそうなものは、どんどん使えばいいんじゃないかと思われますが…。
 
それではまず、System.IOUtils 内の TPath から見ていきます。
 
ChangeExtension指定されたパスで示されるファイルまたはディレクトリの拡張子を変更します。
Combine2 つのパス文字列を結合します。
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 のルートとして使用されます。
Path2Path1 に連結されるパス
 
メモ: 指定されたパスに無効な文字が含まれていた場合、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 を返します。

このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Path確認の対象となるパス
 
メモ: 指定されたパスに無効な文字が含まれていた場合、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'));
は、以下を生成します。
MyApp
MyApp.exe
結果文字列は、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 のルートとして現在の作業ディレクトリを使用します。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
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 を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Path確認の対象となるパス
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 を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Path確認の対象となるパス
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 を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
AChar確認の対象となる文字
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 を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
AChar確認の対象となる文字
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
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.