Sign in Join
Wiki copytemporary

fileutil/fr: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11L'unité Lazarus **fileutil** contient des fonctions et des procédures pour maintenir la compatibilité avec l'unité FileUtil de Delphi. Les routines de fichier qui traitent spécialement les noms de fichiers UTF8 sont dans l'unité [[LazFileUtils/fr|LazFileUtils]].
22
33**Attention** : de nombreuses fonctions de cette unité sont marquées comme **deprecated**. Avec la version 1.8 de Lazarus, elles sont même inaccessibles par défaut. Il est par conséquent nécessaire d'utiliser soit l'unité **UTF8** soit l'unité **LazFileUtils** pour la plupart de ces fonctions.
44
55Les seuls constantes, types, classes et routines encore utilisables sont :
66
7-` // constantes`\
8-`const`\
9-` UTF8FileHeader = #$ef#$bb#$bf;`\
10-` FilenamesCaseSensitive = {$IFDEF CaseInsensitiveFilenames}false{$ELSE}true{$ENDIF};`\
11-` FilenamesLiteral = {$IFDEF NotLiteralFilenames}false{$ELSE}true{$ENDIF};`
7+``` pascal
8+ // constantes
9+const
10+ UTF8FileHeader = #$ef#$bb#$bf;
11+ FilenamesCaseSensitive = {$IFDEF CaseInsensitiveFilenames}false{$ELSE}true{$ENDIF};
12+ FilenamesLiteral = {$IFDEF NotLiteralFilenames}false{$ELSE}true{$ENDIF};
13+```
1214
13-` // opérations sur les répertoires et les fichiers`\
14-` function ComparePhysicalFilenames(const Filename1, Filename2: string): integer;`\
15-` function CompareFilenames(Filename1: PChar; Len1: integer; Filename2: PChar; Len2: integer; ResolveLinks: boolean): integer; overload;`\
16-` function ExtractShortPathNameUTF8(Const FileName : String) : String;`\
17-` function DeleteDirectory(const DirectoryName: string; OnlyChildren: boolean): boolean;`\
18-` function ProgramDirectory: string;`\
19-` function ExpandUNCFileNameUTF8(const FileName: string): string;`\
20-` function FileSize(const Filename: string): int64; overload; inline;`\
21-` function ExtractFileNameWithoutExt(const AFilename: string): string;`\
22-` function FilenameIsPascalUnit(const Filename: string): boolean;`\
23-` function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string;`\
24-` function CreateAbsolutePath(const Filename, BaseDirectory: string): string;`\
25-` function FileIsInPath(const Filename, Path: string): boolean;`\
26-` function FileIsInDirectory(const Filename, Directory: string): boolean;`\
27-` function GetAllFilesMask: string; inline;`\
28-` function GetExeExt: string; inline;`\
29-` function ReadFileToString(const Filename: string): string;`
15+``` pascal
16+ // opérations sur les répertoires et les fichiers
17+ function ComparePhysicalFilenames(const Filename1, Filename2: string): integer;
18+ function CompareFilenames(Filename1: PChar; Len1: integer; Filename2: PChar; Len2: integer; ResolveLinks: boolean): integer; overload;
19+ function ExtractShortPathNameUTF8(Const FileName : String) : String;
20+ function DeleteDirectory(const DirectoryName: string; OnlyChildren: boolean): boolean;
21+ function ProgramDirectory: string;
22+ function ExpandUNCFileNameUTF8(const FileName: string): string;
23+ function FileSize(const Filename: string): int64; overload; inline;
24+ function ExtractFileNameWithoutExt(const AFilename: string): string;
25+ function FilenameIsPascalUnit(const Filename: string): boolean;
26+ function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string;
27+ function CreateAbsolutePath(const Filename, BaseDirectory: string): string;
28+ function FileIsInPath(const Filename, Path: string): boolean;
29+ function FileIsInDirectory(const Filename, Directory: string): boolean;
30+ function GetAllFilesMask: string; inline;
31+ function GetExeExt: string; inline;
32+ function ReadFileToString(const Filename: string): string;
33+```
3034
31-` // recherche de fichiers`\
32-` type`\
33-`  TSearchFileInPathFlag = (`\
34-`   sffDontSearchInBasePath, // do not search in BasePath, search only in SearchPath.`\
35-`   sffSearchLoUpCase`\
36-`   );`\
37-` TSearchFileInPathFlags = set of TSearchFileInPathFlag;`\
38-` function SearchFileInPath(const Filename, BasePath, SearchPath, Delimiter: string; Flags: TSearchFileInPathFlags): string; overload;`\
39-` function SearchAllFilesInPath(const Filename, BasePath, SearchPath,Delimiter: string; Flags: TSearchFileInPathFlags): TStrings;`\
40-` function FindDiskFilename(const Filename: string): string;`\
41-` function FindDiskFileCaseInsensitive(const Filename: string): string;`\
42-` function FindDefaultExecutablePath(const Executable: string; const BaseDir: string = ''): string;`
35+``` pascal
36+ // recherche de fichiers
37+ type
38+ TSearchFileInPathFlag = (
39+ sffDontSearchInBasePath, // do not search in BasePath, search only in SearchPath.
40+ sffSearchLoUpCase
41+ );
42+ TSearchFileInPathFlags = set of TSearchFileInPathFlag;
43+ function SearchFileInPath(const Filename, BasePath, SearchPath, Delimiter: string; Flags: TSearchFileInPathFlags): string; overload;
44+ function SearchAllFilesInPath(const Filename, BasePath, SearchPath,Delimiter: string; Flags: TSearchFileInPathFlags): TStrings;
45+ function FindDiskFilename(const Filename: string): string;
46+ function FindDiskFileCaseInsensitive(const Filename: string): string;
47+ function FindDefaultExecutablePath(const Executable: string; const BaseDir: string = ''): string;
48+```
4349
44-` type`\
45-` { TFileIterator }`\
46-` TFileIterator = class`\
47-` private`\
48-`   FPath: String;`\
49-`   FLevel: Integer;`\
50-`   FFileInfo: TSearchRec;`\
51-`   FSearching: Boolean;`\
52-`   function GetFileName: String;`\
53-` public`\
54-`   procedure Stop;`\
55-`   function IsDirectory: Boolean;`\
56-` public`\
57-`   property FileName: String read GetFileName;`\
58-`   property FileInfo: TSearchRec read FFileInfo;`\
59-`   property Level: Integer read FLevel;`\
60-`   property Path: String read FPath;`\
61-`   property Searching: Boolean read FSearching;`\
62-` end;`
50+``` pascal
51+ type
52+ { TFileIterator }
53+ TFileIterator = class
54+ private
55+ FPath: String;
56+ FLevel: Integer;
57+ FFileInfo: TSearchRec;
58+ FSearching: Boolean;
59+ function GetFileName: String;
60+ public
61+ procedure Stop;
62+ function IsDirectory: Boolean;
63+ public
64+ property FileName: String read GetFileName;
65+ property FileInfo: TSearchRec read FFileInfo;
66+ property Level: Integer read FLevel;
67+ property Path: String read FPath;
68+ property Searching: Boolean read FSearching;
69+ end;
70+```
6371
64-` TFileFoundEvent = procedure (FileIterator: TFileIterator) of object;`\
65-` TDirectoryFoundEvent = procedure (FileIterator: TFileIterator) of object;`\
66-` TDirectoryEnterEvent = procedure (FileIterator: TFileIterator) of object;`
72+``` pascal
73+ TFileFoundEvent = procedure (FileIterator: TFileIterator) of object;
74+ TDirectoryFoundEvent = procedure (FileIterator: TFileIterator) of object;
75+ TDirectoryEnterEvent = procedure (FileIterator: TFileIterator) of object;
76+```
6777
68-` { TFileSearcher }`\
69-` TFileSearcher = class(TFileIterator)`\
70-` private`\
71-`   FMaskSeparator: char;`\
72-`   FFollowSymLink: Boolean;`\
73-`   FOnFileFound: TFileFoundEvent;`\
74-`   FOnDirectoryFound: TDirectoryFoundEvent;`\
75-`   FOnDirectoryEnter: TDirectoryEnterEvent;`\
76-`   FFileAttribute: Word;`\
77-`   FDirectoryAttribute: Word;`\
78-`   procedure RaiseSearchingError;`\
79-` protected`\
80-`   procedure DoDirectoryEnter; virtual;`\
81-`   procedure DoDirectoryFound; virtual;`\
82-`   procedure DoFileFound; virtual;`\
83-` public`\
84-`   constructor Create;`\
85-`   procedure Search(ASearchPath: String; ASearchMask: String = '';`\
86-`     ASearchSubDirs: Boolean = True; CaseSensitive: Boolean = False);`\
87-` public`\
88-`   property MaskSeparator: char read FMaskSeparator write FMaskSeparator;`\
89-`   property FollowSymLink: Boolean read FFollowSymLink write FFollowSymLink;`\
90-`   property FileAttribute: Word read FFileAttribute write FFileAttribute default faAnyfile;`\
91-`   property DirectoryAttribute: Word read FDirectoryAttribute write FDirectoryAttribute default faDirectory;`\
92-`   property OnDirectoryFound: TDirectoryFoundEvent read FOnDirectoryFound write FOnDirectoryFound;`\
93-`   property OnFileFound: TFileFoundEvent read FOnFileFound write FOnFileFound;`\
94-`   property OnDirectoryEnter: TDirectoryEnterEvent read FOnDirectoryEnter write FOnDirectoryEnter;`\
95-` end;`
78+``` pascal
79+ { TFileSearcher }
80+ TFileSearcher = class(TFileIterator)
81+ private
82+ FMaskSeparator: char;
83+ FFollowSymLink: Boolean;
84+ FOnFileFound: TFileFoundEvent;
85+ FOnDirectoryFound: TDirectoryFoundEvent;
86+ FOnDirectoryEnter: TDirectoryEnterEvent;
87+ FFileAttribute: Word;
88+ FDirectoryAttribute: Word;
89+ procedure RaiseSearchingError;
90+ protected
91+ procedure DoDirectoryEnter; virtual;
92+ procedure DoDirectoryFound; virtual;
93+ procedure DoFileFound; virtual;
94+ public
95+ constructor Create;
96+ procedure Search(ASearchPath: String; ASearchMask: String = '';
97+ ASearchSubDirs: Boolean = True; CaseSensitive: Boolean = False);
98+ public
99+ property MaskSeparator: char read FMaskSeparator write FMaskSeparator;
100+ property FollowSymLink: Boolean read FFollowSymLink write FFollowSymLink;
101+ property FileAttribute: Word read FFileAttribute write FFileAttribute default faAnyfile;
102+ property DirectoryAttribute: Word read FDirectoryAttribute write FDirectoryAttribute default faDirectory;
103+ property OnDirectoryFound: TDirectoryFoundEvent read FOnDirectoryFound write FOnDirectoryFound;
104+ property OnFileFound: TFileFoundEvent read FOnFileFound write FOnFileFound;
105+ property OnDirectoryEnter: TDirectoryEnterEvent read FOnDirectoryEnter write FOnDirectoryEnter;
106+ end;
107+```
96108
97-` { TListFileSearcher }`\
98-` TListFileSearcher = class(TFileSearcher)`\
99-` private`\
100-`   FList: TStrings;`\
101-` protected`\
102-`   procedure DoFileFound; override;`\
103-` public`\
104-`   constructor Create(AList: TStrings);`\
105-` end;`
109+``` pascal
110+ { TListFileSearcher }
111+ TListFileSearcher = class(TFileSearcher)
112+ private
113+ FList: TStrings;
114+ protected
115+ procedure DoFileFound; override;
116+ public
117+ constructor Create(AList: TStrings);
118+ end;
119+```
106120
107-` { TListDirectoriesSearcher }`\
108-` TListDirectoriesSearcher = class(TFileSearcher)`\
109-` private`\
110-`   FDirectoriesList :TStrings;`\
111-` protected`\
112-`   procedure DoDirectoryFound; override;`\
113-` public`\
114-`   constructor Create(AList: TStrings);`\
115-` end;`
121+``` pascal
122+ { TListDirectoriesSearcher }
123+ TListDirectoriesSearcher = class(TFileSearcher)
124+ private
125+ FDirectoriesList :TStrings;
126+ protected
127+ procedure DoDirectoryFound; override;
128+ public
129+ constructor Create(AList: TStrings);
130+ end;
131+```
116132
117-` function FindAllFiles(const SearchPath: String; SearchMask: String = ''; SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory): TStringList; overload;`\
118-` procedure FindAllFiles(AList: TStrings; const SearchPath: String; SearchMask: String = ''; SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory); overload;`\
119-` function FindAllDirectories(const SearchPath: string; SearchSubDirs: Boolean = True): TStringList; overload;`\
120-` procedure FindAllDirectories(AList: TStrings; const SearchPath: String; SearchSubDirs: Boolean = true); overload;`
133+``` pascal
134+ function FindAllFiles(const SearchPath: String; SearchMask: String = ''; SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory): TStringList; overload;
135+ procedure FindAllFiles(AList: TStrings; const SearchPath: String; SearchMask: String = ''; SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory); overload;
136+ function FindAllDirectories(const SearchPath: string; SearchSubDirs: Boolean = True): TStringList; overload;
137+ procedure FindAllDirectories(AList: TStrings; const SearchPath: String; SearchSubDirs: Boolean = true); overload;
138+```
121139
122-` // drapeaux pour les copies`\
123-`type`\
124-` TCopyFileFlag = (`\
125-`   cffOverwriteFile,`\
126-`   cffCreateDestDirectory,`\
127-`   cffPreserveTime`\
128-`   );`\
129-` TCopyFileFlags = set of TCopyFileFlag;`
140+``` pascal
141+ // drapeaux pour les copies
142+type
143+ TCopyFileFlag = (
144+ cffOverwriteFile,
145+ cffCreateDestDirectory,
146+ cffPreserveTime
147+ );
148+ TCopyFileFlags = set of TCopyFileFlag;
149+```
130150
131-` // copies`\
132-` function CopyFile(const SrcFilename, DestFilename: string; Flags: TCopyFileFlags=[cffOverwriteFile]; ExceptionOnError: Boolean=False): boolean;`\
133-` function CopyFile(const SrcFilename, DestFilename: string; PreserveTime: boolean; ExceptionOnError: Boolean=False): boolean;`\
134-` function CopyDirTree(const SourceDir, TargetDir: string; Flags: TCopyFileFlags=[]): Boolean;`
151+``` pascal
152+ // copies
153+ function CopyFile(const SrcFilename, DestFilename: string; Flags: TCopyFileFlags=[cffOverwriteFile]; ExceptionOnError: Boolean=False): boolean;
154+ function CopyFile(const SrcFilename, DestFilename: string; PreserveTime: boolean; ExceptionOnError: Boolean=False): boolean;
155+ function CopyDirTree(const SourceDir, TargetDir: string; Flags: TCopyFileFlags=[]): Boolean;
156+```
135157
136-` // noms de fichiers`\
137-` const`\
138-`  PascalFileExt: array[1..3] of string = ('.pas','.pp','.p');`\
139-`  PascalSourceExt: array[1..6] of string = ('.pas','.pp','.p','.lpr','.dpr','.dpk');`\
140-`  AllDirectoryEntriesMask = '*';`
158+``` pascal
159+ // noms de fichiers
160+ const
161+ PascalFileExt: array[1..3] of string = ('.pas','.pp','.p');
162+ PascalSourceExt: array[1..6] of string = ('.pas','.pp','.p','.lpr','.dpr','.dpk');
163+ AllDirectoryEntriesMask = '*';
164+```
141165
142166Ce qui suit ne s'applique que pour les versions antérieures à la version 1.8. La version 1.6.4 mentionne déjà bon nombre de ces fonctions comme **deprecated**.
143167
144-`  // file attributes and states`\
145-`function CompareFilenames(const Filename1, Filename2: string): integer; inline;`\
146-`function CompareFilenamesIgnoreCase(const Filename1, Filename2: string): integer; inline;`\
147-`function CompareFilenames(const Filename1, Filename2: string; ResolveLinks: boolean): integer;`\
148-`function CompareFilenames(Filename1: PChar; Len1: integer; Filename2: PChar; Len2: integer; ResolveLinks: boolean): integer;`\
149-`function FilenameIsAbsolute(const TheFilename: string):boolean; inline;`\
150-`function FilenameIsWinAbsolute(const TheFilename: string):boolean; inline;`\
151-`function FilenameIsUnixAbsolute(const TheFilename: string):boolean; inline;`\
152-`procedure CheckIfFileIsExecutable(const AFilename: string); inline;`\
153-`procedure CheckIfFileIsSymlink(const AFilename: string); inline;`\
154-`function FileIsReadable(const AFilename: string): boolean; inline;`\
155-`function FileIsWritable(const AFilename: string): boolean; inline;`\
156-`function FileIsText(const AFilename: string): boolean; inline;`\
157-`function FileIsText(const AFilename: string; out FileReadable: boolean): boolean; inline;`\
158-`function FileIsExecutable(const AFilename: string): boolean; inline;`\
159-`function FileIsSymlink(const AFilename: string): boolean; inline;`\
160-`function FileIsHardLink(const AFilename: string): boolean; inline;`\
161-`function FileSize(const Filename: string): int64; overload; inline;`\
162-`function GetFileDescription(const AFilename: string): string; inline;`\
163-`function ReadAllLinks(const Filename: string; ExceptionOnError: boolean): string; // if a link is broken returns ''`\
164-`function TryReadAllLinks(const Filename: string): string; // if a link is broken returns Filename `\
168+``` pascal
169+ // file attributes and states
170+function CompareFilenames(const Filename1, Filename2: string): integer; inline;
171+function CompareFilenamesIgnoreCase(const Filename1, Filename2: string): integer; inline;
172+function CompareFilenames(const Filename1, Filename2: string; ResolveLinks: boolean): integer;
173+function CompareFilenames(Filename1: PChar; Len1: integer; Filename2: PChar; Len2: integer; ResolveLinks: boolean): integer;
174+function FilenameIsAbsolute(const TheFilename: string):boolean; inline;
175+function FilenameIsWinAbsolute(const TheFilename: string):boolean; inline;
176+function FilenameIsUnixAbsolute(const TheFilename: string):boolean; inline;
177+procedure CheckIfFileIsExecutable(const AFilename: string); inline;
178+procedure CheckIfFileIsSymlink(const AFilename: string); inline;
179+function FileIsReadable(const AFilename: string): boolean; inline;
180+function FileIsWritable(const AFilename: string): boolean; inline;
181+function FileIsText(const AFilename: string): boolean; inline;
182+function FileIsText(const AFilename: string; out FileReadable: boolean): boolean; inline;
183+function FileIsExecutable(const AFilename: string): boolean; inline;
184+function FileIsSymlink(const AFilename: string): boolean; inline;
185+function FileIsHardLink(const AFilename: string): boolean; inline;
186+function FileSize(const Filename: string): int64; overload; inline;
187+function GetFileDescription(const AFilename: string): string; inline;
188+function ReadAllLinks(const Filename: string; ExceptionOnError: boolean): string; // if a link is broken returns ''
189+function TryReadAllLinks(const Filename: string): string; // if a link is broken returns Filename
165190
166-`  // directories`\
167-`function DirPathExists(const FileName: String): Boolean; inline;`\
168-`function ForceDirectory(DirectoryName: string): boolean; inline;`\
169-`function DeleteDirectory(const DirectoryName: string; OnlyChildren: boolean): boolean;`\
170-`function ProgramDirectory: string;`\
171-`function DirectoryIsWritable(const DirectoryName: string): boolean; inline;`\
191+ // directories
192+function DirPathExists(const FileName: String): Boolean; inline;
193+function ForceDirectory(DirectoryName: string): boolean; inline;
194+function DeleteDirectory(const DirectoryName: string; OnlyChildren: boolean): boolean;
195+function ProgramDirectory: string;
196+function DirectoryIsWritable(const DirectoryName: string): boolean; inline;
172197
173-`  // filename parts`\
174-`function ExtractFileNameOnly(const AFilename: string): string; inline;`\
175-`function ExtractFileNameWithoutExt(const AFilename: string): string;`\
176-`function CompareFileExt(const Filename, Ext: string; CaseSensitive: boolean): integer; overload; inline;`\
177-`function CompareFileExt(const Filename, Ext: string): integer; overload; inline;`\
178-`function FilenameIsPascalUnit(const Filename: string): boolean;`\
179-`function AppendPathDelim(const Path: string): string; inline;`\
180-`function ChompPathDelim(const Path: string): string; inline;`\
181-`function TrimFilename(const AFilename: string): string; inline;`\
182-`function CleanAndExpandFilename(const Filename: string): string; inline;`\
183-`function CleanAndExpandDirectory(const Filename: string): string; inline;`\
184-`function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string;`\
185-`function CreateRelativePath(const Filename, BaseDirectory: string; UsePointDirectory: boolean = false;  AlwaysRequireSharedBaseFolder: Boolean = True): string; inline;`\
186-`function CreateAbsolutePath(const Filename, BaseDirectory: string): string;`\
187-`function FileIsInPath(const Filename, Path: string): boolean;`\
188-`function FileIsInDirectory(const Filename, Directory: string): boolean; `\
198+ // filename parts
199+function ExtractFileNameOnly(const AFilename: string): string; inline;
200+function ExtractFileNameWithoutExt(const AFilename: string): string;
201+function CompareFileExt(const Filename, Ext: string; CaseSensitive: boolean): integer; overload; inline;
202+function CompareFileExt(const Filename, Ext: string): integer; overload; inline;
203+function FilenameIsPascalUnit(const Filename: string): boolean;
204+function AppendPathDelim(const Path: string): string; inline;
205+function ChompPathDelim(const Path: string): string; inline;
206+function TrimFilename(const AFilename: string): string; inline;
207+function CleanAndExpandFilename(const Filename: string): string; inline;
208+function CleanAndExpandDirectory(const Filename: string): string; inline;
209+function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string;
210+function CreateRelativePath(const Filename, BaseDirectory: string; UsePointDirectory: boolean = false; AlwaysRequireSharedBaseFolder: Boolean = True): string; inline;
211+function CreateAbsolutePath(const Filename, BaseDirectory: string): string;
212+function FileIsInPath(const Filename, Path: string): boolean;
213+function FileIsInDirectory(const Filename, Directory: string): boolean;
189214
190-`// file search`\
191-`type`\
192-`  TSearchFileInPathFlag = (`\
193-`    sffDontSearchInBasePath,`\
194-`    sffSearchLoUpCase`\
195-`    );`\
196-`  TSearchFileInPathFlags = set of TSearchFileInPathFlag;`\
197-`const`\
198-`  AllDirectoryEntriesMask = '*';`\
199-`  `\
200-`function GetAllFilesMask: string; inline;`\
201-`function GetExeExt: string; inline;`\
202-`function SearchFileInPath(const Filename, BasePath, SearchPath, Delimiter: string; Flags: TSearchFileInPathFlags): string;`\
203-`function SearchAllFilesInPath(const Filename, BasePath, SearchPath, Delimiter: string; Flags: TSearchFileInPathFlags): TStrings;`\
204-`function FindDiskFilename(const Filename: string): string;`\
205-`function FindDiskFileCaseInsensitive(const Filename: string): string;`\
206-`function FindDefaultExecutablePath(const Executable: string; const BaseDir: string = ''): string;`\
215+// file search
216+type
217+ TSearchFileInPathFlag = (
218+ sffDontSearchInBasePath,
219+ sffSearchLoUpCase
220+ );
221+ TSearchFileInPathFlags = set of TSearchFileInPathFlag;
222+const
223+ AllDirectoryEntriesMask = '*';
224+
225+function GetAllFilesMask: string; inline;
226+function GetExeExt: string; inline;
227+function SearchFileInPath(const Filename, BasePath, SearchPath, Delimiter: string; Flags: TSearchFileInPathFlags): string;
228+function SearchAllFilesInPath(const Filename, BasePath, SearchPath, Delimiter: string; Flags: TSearchFileInPathFlags): TStrings;
229+function FindDiskFilename(const Filename: string): string;
230+function FindDiskFileCaseInsensitive(const Filename: string): string;
231+function FindDefaultExecutablePath(const Executable: string; const BaseDir: string = ''): string;
207232
208-`type`\
209-` TFileIterator = class`\
210-` private`\
211-`   FPath: String;`\
212-`   FLevel: Integer;`\
213-`   FFileInfo: TSearchRec;`\
214-`   FSearching: Boolean;`\
215-`   function GetFileName: String;`\
216-` public`\
217-`   procedure Stop;`\
218-`   function IsDirectory: Boolean;`\
219-` public`\
220-`   property FileName: String read GetFileName;`\
221-`   property FileInfo: TSearchRec read FFileInfo;`\
222-`   property Level: Integer read FLevel;`\
223-`   property Path: String read FPath;`\
224-`   property Searching: Boolean read FSearching;`\
225-` end;`\
233+type
234+ TFileIterator = class
235+ private
236+ FPath: String;
237+ FLevel: Integer;
238+ FFileInfo: TSearchRec;
239+ FSearching: Boolean;
240+ function GetFileName: String;
241+ public
242+ procedure Stop;
243+ function IsDirectory: Boolean;
244+ public
245+ property FileName: String read GetFileName;
246+ property FileInfo: TSearchRec read FFileInfo;
247+ property Level: Integer read FLevel;
248+ property Path: String read FPath;
249+ property Searching: Boolean read FSearching;
250+ end;
226251
227-` TFileFoundEvent = procedure (FileIterator: TFileIterator) of object;`\
228-` TDirectoryFoundEvent = procedure (FileIterator: TFileIterator) of object;`\
229-` TDirectoryEnterEvent = procedure (FileIterator: TFileIterator) of object;`\
252+ TFileFoundEvent = procedure (FileIterator: TFileIterator) of object;
253+ TDirectoryFoundEvent = procedure (FileIterator: TFileIterator) of object;
254+ TDirectoryEnterEvent = procedure (FileIterator: TFileIterator) of object;
230255
231-` TFileSearcher = class(TFileIterator)`\
232-` private`\
233-`   FMaskSeparator: char;`\
234-`   FFollowSymLink: Boolean;`\
235-`   FOnFileFound: TFileFoundEvent;`\
236-`   FOnDirectoryFound: TDirectoryFoundEvent;`\
237-`   FOnDirectoryEnter: TDirectoryEnterEvent;`\
238-`   FFileAttribute: Word;`\
239-`   FDirectoryAttribute: Word;`\
240-`   procedure RaiseSearchingError;`\
241-` protected`\
242-`   procedure DoDirectoryEnter; virtual;`\
243-`   procedure DoDirectoryFound; virtual;`\
244-`   procedure DoFileFound; virtual;`\
245-` public`\
246-`   constructor Create;`\
247-`   procedure Search(const ASearchPath: String; ASearchMask: String = '';`\
248-`     ASearchSubDirs: Boolean = True; CaseSensitive: Boolean = False);`\
249-` public`\
250-`   property MaskSeparator: char read FMaskSeparator write FMaskSeparator;`\
251-`   property FollowSymLink: Boolean read FFollowSymLink write FFollowSymLink;`\
252-`   property FileAttribute: Word read FFileAttribute write FFileAttribute default faAnyfile;`\
253-`   property DirectoryAttribute: Word read FDirectoryAttribute write FDirectoryAttribute default faDirectory;`\
254-`   property OnDirectoryFound: TDirectoryFoundEvent read FOnDirectoryFound write FOnDirectoryFound;`\
255-`   property OnFileFound: TFileFoundEvent read FOnFileFound write FOnFileFound;`\
256-`   property OnDirectoryEnter: TDirectoryEnterEvent read FOnDirectoryEnter write FOnDirectoryEnter;`\
257-` end;`\
256+ TFileSearcher = class(TFileIterator)
257+ private
258+ FMaskSeparator: char;
259+ FFollowSymLink: Boolean;
260+ FOnFileFound: TFileFoundEvent;
261+ FOnDirectoryFound: TDirectoryFoundEvent;
262+ FOnDirectoryEnter: TDirectoryEnterEvent;
263+ FFileAttribute: Word;
264+ FDirectoryAttribute: Word;
265+ procedure RaiseSearchingError;
266+ protected
267+ procedure DoDirectoryEnter; virtual;
268+ procedure DoDirectoryFound; virtual;
269+ procedure DoFileFound; virtual;
270+ public
271+ constructor Create;
272+ procedure Search(const ASearchPath: String; ASearchMask: String = '';
273+ ASearchSubDirs: Boolean = True; CaseSensitive: Boolean = False);
274+ public
275+ property MaskSeparator: char read FMaskSeparator write FMaskSeparator;
276+ property FollowSymLink: Boolean read FFollowSymLink write FFollowSymLink;
277+ property FileAttribute: Word read FFileAttribute write FFileAttribute default faAnyfile;
278+ property DirectoryAttribute: Word read FDirectoryAttribute write FDirectoryAttribute default faDirectory;
279+ property OnDirectoryFound: TDirectoryFoundEvent read FOnDirectoryFound write FOnDirectoryFound;
280+ property OnFileFound: TFileFoundEvent read FOnFileFound write FOnFileFound;
281+ property OnDirectoryEnter: TDirectoryEnterEvent read FOnDirectoryEnter write FOnDirectoryEnter;
282+ end;
258283
259-`function `[[FindAllFiles/fr|FindAllFiles]]`( const SearchPath: String; SearchMask: String = ''; SearchSubDirs: Boolean = True): TStringList;`\
260-`function FindAllDirectories(const SearchPath: string;  SearchSubDirs: Boolean = True): TStringList;`\
284+function FindAllFiles( const SearchPath: String; SearchMask: String = ''; SearchSubDirs: Boolean = True): TStringList;
285+function FindAllDirectories(const SearchPath: string; SearchSubDirs: Boolean = True): TStringList;
261286
262-` // Copy a file or a whole directory tree`\
263-`function `[[CopyFile/fr|CopyFile]]`(const SrcFilename, DestFilename: string; Flags: TCopyFileFlags=[cffOverwriteFile]): boolean;`\
264-`function `[[CopyFile/fr|CopyFile]]`(const SrcFilename, DestFilename: string; PreserveTime: boolean): boolean;`\
265-`function CopyDirTree(const SourceDir, TargetDir: string; Flags: TCopyFileFlags=[]): Boolean; `\
287+ // Copy a file or a whole directory tree
288+function CopyFile(const SrcFilename, DestFilename: string; Flags: TCopyFileFlags=[cffOverwriteFile]): boolean;
289+function CopyFile(const SrcFilename, DestFilename: string; PreserveTime: boolean): boolean;
290+function CopyDirTree(const SourceDir, TargetDir: string; Flags: TCopyFileFlags=[]): Boolean;
266291
267-`  // file actions`\
268-`function ReadFileToString(const Filename: string): string;`\
269-`function GetTempFilename(const Directory, Prefix: string): string; inline; `\
292+ // file actions
293+function ReadFileToString(const Filename: string): string;
294+function GetTempFilename(const Directory, Prefix: string): string; inline;
270295
271-`  // basic functions similar to the RTL but working with UTF-8 instead of the system encoding`\
272-`  // AnsiToUTF8 and UTF8ToAnsi need a widestring manager under Linux, BSD, MacOSX  `\
273-`  // but normally these OS use UTF-8 as system encoding so the widestringmanager is not needed.`\
274-`function NeedRTLAnsi: boolean; inline;// true if system encoding is not UTF-8`\
275-`procedure SetNeedRTLAnsi(NewValue: boolean); inline;`\
276-`function UTF8ToSys(const s: string): string; inline;// as UTF8ToAnsi but more independent of widestringmanager`\
277-`function SysToUTF8(const s: string): string; inline;// as AnsiToUTF8 but more independent of widestringmanager`\
278-`function ConsoleToUTF8(const s: string): string; inline;// converts OEM encoded string to UTF8 (used with some Windows specific  functions )`\
279-`function UTF8ToConsole(const s: string): string; inline;// converts UTF8 string to console encoding (used by Write, WriteLn)`\
296+ // basic functions similar to the RTL but working with UTF-8 instead of the system encoding
297+ // AnsiToUTF8 and UTF8ToAnsi need a widestring manager under Linux, BSD, MacOSX
298+ // but normally these OS use UTF-8 as system encoding so the widestringmanager is not needed.
299+function NeedRTLAnsi: boolean; inline;// true if system encoding is not UTF-8
300+procedure SetNeedRTLAnsi(NewValue: boolean); inline;
301+function UTF8ToSys(const s: string): string; inline;// as UTF8ToAnsi but more independent of widestringmanager
302+function SysToUTF8(const s: string): string; inline;// as AnsiToUTF8 but more independent of widestringmanager
303+function ConsoleToUTF8(const s: string): string; inline;// converts OEM encoded string to UTF8 (used with some Windows specific functions )
304+function UTF8ToConsole(const s: string): string; inline;// converts UTF8 string to console encoding (used by Write, WriteLn)
280305
281-`  // file operations`\
282-`function FileExistsUTF8(const Filename: string): boolean; inline;`\
283-`function FileAgeUTF8(const FileName: string): Longint; inline;`\
284-`function DirectoryExistsUTF8(const Directory: string): Boolean; inline;`\
285-`function ExpandFileNameUTF8(const FileName: string): string; inline;`\
286-`function ExpandUNCFileNameUTF8(const FileName: string): string;`\
287-`function ExtractShortPathNameUTF8(Const FileName : String) : String;`\
288-`function FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec): Longint; inline;`\
289-`function FindNextUTF8(var Rslt: TSearchRec): Longint; inline;`\
290-`procedure FindCloseUTF8(var F: TSearchrec); inline;`\
291-`function FileSetDateUTF8(const FileName: String; Age: Longint): Longint; inline;`\
292-`function FileGetAttrUTF8(const FileName: String): Longint; inline;`\
293-`function FileSetAttrUTF8(const Filename: String; Attr: longint): Longint; inline;`\
294-`function DeleteFileUTF8(const FileName: String): Boolean; inline;`\
295-`function RenameFileUTF8(const OldName, NewName: String): Boolean; inline;`\
296-`function FileSearchUTF8(const Name, DirList : String; ImplicitCurrentDir : Boolean = True): String; inline;`\
297-`function FileIsReadOnlyUTF8(const FileName: String): Boolean; inline;`\
298-`function GetCurrentDirUTF8: String; inline;`\
299-`function SetCurrentDirUTF8(const NewDir: String): Boolean; inline;`\
300-`function CreateDirUTF8(const NewDir: String): Boolean; inline;`\
301-`function RemoveDirUTF8(const Dir: String): Boolean; inline;`\
302-`function ForceDirectoriesUTF8(const Dir: string): Boolean; inline;`\
303-`function FileOpenUTF8(Const FileName : string; Mode : Integer) : THandle; inline;`\
304-`function FileCreateUTF8(Const FileName : string) : THandle; overload; inline;`\
305-`function FileCreateUTF8(Const FileName : string; Rights: Cardinal) : THandle; overload; inline;  `\
306+ // file operations
307+function FileExistsUTF8(const Filename: string): boolean; inline;
308+function FileAgeUTF8(const FileName: string): Longint; inline;
309+function DirectoryExistsUTF8(const Directory: string): Boolean; inline;
310+function ExpandFileNameUTF8(const FileName: string): string; inline;
311+function ExpandUNCFileNameUTF8(const FileName: string): string;
312+function ExtractShortPathNameUTF8(Const FileName : String) : String;
313+function FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec): Longint; inline;
314+function FindNextUTF8(var Rslt: TSearchRec): Longint; inline;
315+procedure FindCloseUTF8(var F: TSearchrec); inline;
316+function FileSetDateUTF8(const FileName: String; Age: Longint): Longint; inline;
317+function FileGetAttrUTF8(const FileName: String): Longint; inline;
318+function FileSetAttrUTF8(const Filename: String; Attr: longint): Longint; inline;
319+function DeleteFileUTF8(const FileName: String): Boolean; inline;
320+function RenameFileUTF8(const OldName, NewName: String): Boolean; inline;
321+function FileSearchUTF8(const Name, DirList : String; ImplicitCurrentDir : Boolean = True): String; inline;
322+function FileIsReadOnlyUTF8(const FileName: String): Boolean; inline;
323+function GetCurrentDirUTF8: String; inline;
324+function SetCurrentDirUTF8(const NewDir: String): Boolean; inline;
325+function CreateDirUTF8(const NewDir: String): Boolean; inline;
326+function RemoveDirUTF8(const Dir: String): Boolean; inline;
327+function ForceDirectoriesUTF8(const Dir: string): Boolean; inline;
328+function FileOpenUTF8(Const FileName : string; Mode : Integer) : THandle; inline;
329+function FileCreateUTF8(Const FileName : string) : THandle; overload; inline;
330+function FileCreateUTF8(Const FileName : string; Rights: Cardinal) : THandle; overload; inline;
306331
307-`  // environment`\
308-`function ParamStrUTF8(Param: Integer): string; inline;`\
309-`function GetEnvironmentStringUTF8(Index: Integer): string; inline;`\
310-`function GetEnvironmentVariableUTF8(const EnvVar: string): String; inline;`\
311-`function GetAppConfigDirUTF8(Global: Boolean; Create: boolean = false): string; inline;`\
312-`function GetAppConfigFileUTF8(Global: Boolean; SubDir: boolean = false; CreateDir: boolean = false): string; inline;  `\
332+ // environment
333+function ParamStrUTF8(Param: Integer): string; inline;
334+function GetEnvironmentStringUTF8(Index: Integer): string; inline;
335+function GetEnvironmentVariableUTF8(const EnvVar: string): String; inline;
336+function GetAppConfigDirUTF8(Global: Boolean; Create: boolean = false): string; inline;
337+function GetAppConfigFileUTF8(Global: Boolean; SubDir: boolean = false; CreateDir: boolean = false): string; inline;
313338
314-`  // other`\
315-`function SysErrorMessageUTF8(ErrorCode: Integer): String; inline;`
339+ // other
340+function SysErrorMessageUTF8(ErrorCode: Integer): String; inline;
341+```
316342
317343---
318344*From the Free Pascal wiki, page "fileutil/fr", as it stood on 2017-12-07 after a change by Gillou58, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history