[Lazarus] GetAllFilesMask / AllFilesMask
Sven Barth
pascaldragon at googlemail.com
Wed May 1 15:17:25 CEST 2013
On 01.05.2013 14:45, Bart wrote:
> On 5/1/13, Jürgen Hestermann <juergen.hestermann at gmx.de> wrote:
>
>
>> But wasn't the original problem that AllFilesMask was wrong on Windows?
>
> No.
> Supplying either '*.*' or '*' to FindFirst() function on Windows will
> correctly list all files.
And I've now checked why this is the case:
If you look at the implementation of FindFirstFileExW (which is in the
end called by all other FindFirstFile* functions) in ReactOS (
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/file/find.c?revision=58833&view=markup
) you'll see at line 822 the following code:
=== code begin ===
/* Change pattern: "*.*" --> "*" */
if (FilePattern.Length == 6 &&
RtlCompareMemory(FilePattern.Buffer, L"*.*", 6) == 6)
{
FilePattern.Length = 2;
}
=== code end ===
So this means it does not matter whether you pass '*.*' or '*' to
FindFirstFile*, because the Win32 subsystem will adjust the mask anyway
(FPC's FindFirst internally uses FindFirstFileA on Windows).
Regards,
Sven
More information about the Lazarus
mailing list