zum Vergleichen kann man auch mal die CompilerMagic ausnutzen und eventuell könnte man auch gleich noch mit prüfen, ob es auch wirklich 'ne Datei ist
Delphi-Quellcode:
function FileExistsCaseSensitive(const Filename: TFileName): Boolean;
var SR: TSearchRec;
begin
Result := FindFirst(Filename, faAnyFile, SR) = 0;
if Result then FindClose(SR);
Result := Result and (SR.Attr and faDirectory = 0) and (SR.Name = Filename);
end;
Delphi-Quellcode:
function FileExistsCaseSensitive(const Filename: TFileName): Boolean;
var SR: TSearchRec;
begin
Result := FindFirst(Filename, faAnyFile and not faDirectory, SR) = 0;
if Result then FindClose(SR);
Result := Result and (SR.Name = Filename);
end;
[edit]
und noch was Windowstypisches ... was passiert, wenn man als FileName den kurzen 8.3-Namen angibt?
Delphi-Quellcode:
function FileExistsCaseSensitive(const Filename: TFileName): Boolean;
var SR: TSearchRec;
begin
Result := FindFirst(Filename, faAnyFile, SR) = 0;
if Result then FindClose(SR);
Result := Result and (SR.Attr and faDirectory = 0) and ((SR.Name = Filename)
or AnsiSameText(SR.FindData.cAlternateFileName, Filename));
end;