Wieso hattest du im ersten Post nicht alle nötigen Variablen initialisiert?
Wenn dir dann jemand um die Ohren wirft, dass es falsch ist, dann hat er bestimmt Recht.
Und ich möchte fast wetten, dass der Compiler das dir auch versucht hatte zu sagen, also warum höst du nicht auf ihn?
Das Result ist bereits THandle.
lhFoundFile := FindFirstFileEx(PChar(ParentFolder + Mask), FindExInfoBasic, @lfdStruct, FindExSearchNameMatch, nil, 0);
_FINDEX_SEARCH_OPS ist nicht unbedingt nötig, zumindestens nicht, wenn es nicht mit {$ScopedEnums ON} deklariert wurde.
Man mischt NIEMALS statische und compilerabhängige Deklarationen.
ParentFolder und Mask sind bestimmt String. (kein AnsiString oder WideString/UnicodeString)
FindFirstFileEx ist ebenso dynnamisch, gegenüber FindFirstFileExA und FindFirstFileExW.
PWideChar ist fest, ebenso wie PAnsiChar, aber gegenüber dem dynamischen PChar.
Rate mal, warum 2009 so viel Knallte, als Delphi plötzlich von
ANSI zu
Unicode wechselte.
String -> PChar -> TWin32FindData -> FindFirstFileEx
AnsiString -> PAnsiChar -> TWin32FindDataA -> FindFirstFileExA
WideString oder UnicodeString -> PWideChar -> TWin32FindDataW -> FindFirstFileExW