- Код: Выделить всё
function FileOpen( const FileName: Mode: Integer):THandle;
- Код: Выделить всё
Errors
On Error, -1 is returned.
- Код: Выделить всё
type THandle = System.THandle;
- Код: Выделить всё
type THandle = LongInt;
Демка 3.pp :
- Код: Выделить всё
USES
SYSUTILS;
VAR
Q2,W2,E2,R2: LONGINT;
BEGIN
//Q2:=SysUtils.FileOpen('2.pp',FMOPENREAD); //ошибка
WRITELN(SysUtils.FileOpen('2.pp',FMOPENREAD));
W2:=SysUtils.FileOpen('3.pp',FMOPENREAD);
WRITELN(Q2,' ',W2);
FILECLOSE(Q2);
FILECLOSE(W2);
END.
Файла 2.pp в каталоге нет, 3.pp - есть. Сборочный скрипт:
- Код: Выделить всё
rm 3.exe
wine cmd.exe /c "C:\FPC\2.6.0\bin\i386-win32\fpc.exe 3.pp -FuC:\FPC\2.6.0\units\i386-win32\* -CR -O3 -Mfpc -Twin32"
read -p "Нажмите Enter для продолжения..."
Собирираем, запускаем:
- Код: Выделить всё
wine 3.exe
ERROR: ld.so: object '/usr/lib64/freetype-infinality/libfreetype.so.6' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/usr/lib64/freetype-infinality/libfreetype.so.6' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/usr/lib64/cairo-freeworld/libcairo.so.2' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/usr/lib64/freetype-infinality/libfreetype.so.6' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/usr/lib64/freetype-infinality/libfreetype.so.6' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/usr/lib64/cairo-freeworld/libcairo.so.2' from LD_PRELOAD cannot be preloaded: ignored.
fixme:service:scmdatabase_autostart_services Auto-start service L"SecDrv" failed to start: 2
4294967295
0 56
Результатом попытки открытия несуществующего файла должно было быть число -1 а пулучилось 4294967295 - не longint a longword. Лучше бы там INT64 использовался, тогда бы код ошибки всегда был одним числом -1 а так когда-нибудь число открытых файлов достигнет 4294967295 и будет невозможно отличить открытый файл от закрытого
