[fpc-pascal]SysUtils.FileExists bug under Go32v2

Iván Montes senbei at terra.es
Thu Feb 13 03:46:30 CET 2003


Hi,

I think I've found a bug on the FileExists function (sysutils) under Go32v2,
when I want to check if a directory exists.

FileExists( 'c:\winnt' ) will return False when compiled for Go32 but true
for Win32.
I guess that the Win32 version is doing rigth, since a directory is part of
the file system.

I've checked a recent CVS copy of the sources and I found this

[go32v2/sysutls.pp]

Function FileExists (Const FileName : String) : Boolean;
var Handle: longint;
begin
  //!!   This can be done quicker, need to find out how
  Result := (OpenFile(FileName, Handle, ofRead, faOpen) = 0);
  if Handle <> 0 then
    FileClose(Handle);
end;

this could be changed for example to:

Function FileExists (Const filename :String) :Boolean;
begin
   //FileGetAttrib will return -1 if the file was not found
   //but I don't know if it will return -1 if the file exists but it's open
by another program
   result := boolean( FileGetAttr( filename ) XOR -1 );
end;

hope this helps,
Ivan





More information about the fpc-pascal mailing list