mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-15 10:40:13 +02:00
* uses DosCalls replaced with direct declarations
This commit is contained in:
parent
708a10065a
commit
b94242ee20
@ -23,7 +23,7 @@ interface
|
||||
{$H+}
|
||||
|
||||
uses
|
||||
doscalls,dos;
|
||||
Dos;
|
||||
|
||||
{ Include platform independent interface part }
|
||||
{$i sysutilh.inc}
|
||||
@ -36,12 +36,183 @@ implementation
|
||||
|
||||
|
||||
{****************************************************************************
|
||||
File Functions
|
||||
System (imported) calls
|
||||
****************************************************************************}
|
||||
|
||||
(* "uses DosCalls" could not be used here due to type *)
|
||||
(* conflicts, so needed parts had to be redefined here). *)
|
||||
|
||||
type
|
||||
TFileStatus = object
|
||||
end;
|
||||
PFileStatus = ^TFileStatus;
|
||||
|
||||
TFileStatus0 = object (TFileStatus)
|
||||
DateCreation, {Date of file creation.}
|
||||
TimeCreation, {Time of file creation.}
|
||||
DateLastAccess, {Date of last access to file.}
|
||||
TimeLastAccess, {Time of last access to file.}
|
||||
DateLastWrite, {Date of last modification of file.}
|
||||
TimeLastWrite: word; {Time of last modification of file.}
|
||||
FileSize, {Size of file.}
|
||||
FileAlloc: longint; {Amount of space the file really
|
||||
occupies on disk.}
|
||||
end;
|
||||
PFileStatus0 = ^TFileStatus0;
|
||||
|
||||
TFileStatus3 = object (TFileStatus)
|
||||
NextEntryOffset: longint; {Offset of next entry}
|
||||
DateCreation, {Date of file creation.}
|
||||
TimeCreation, {Time of file creation.}
|
||||
DateLastAccess, {Date of last access to file.}
|
||||
TimeLastAccess, {Time of last access to file.}
|
||||
DateLastWrite, {Date of last modification of file.}
|
||||
TimeLastWrite: word; {Time of last modification of file.}
|
||||
FileSize, {Size of file.}
|
||||
FileAlloc: longint; {Amount of space the file really
|
||||
occupies on disk.}
|
||||
AttrFile: longint; {Attributes of file.}
|
||||
end;
|
||||
PFileStatus3 = ^TFileStatus3;
|
||||
|
||||
TFileFindBuf3 = object (TFileStatus3)
|
||||
Name: ShortString; {Also possible to use as ASCIIZ.
|
||||
The byte following the last string
|
||||
character is always zero.}
|
||||
end;
|
||||
PFileFindBuf3 = ^TFileFindBuf3;
|
||||
|
||||
TFSInfo = record
|
||||
case word of
|
||||
1:
|
||||
(File_Sys_ID,
|
||||
Sectors_Per_Cluster,
|
||||
Total_Clusters,
|
||||
Free_Clusters: longint;
|
||||
Bytes_Per_Sector: word);
|
||||
2: {For date/time description,
|
||||
see file searching realted
|
||||
routines.}
|
||||
(Label_Date, {Date when volume label was created.}
|
||||
Label_Time: word; {Time when volume label was created.}
|
||||
VolumeLabel: ShortString); {Volume label. Can also be used
|
||||
as ASCIIZ, because the byte
|
||||
following the last character of
|
||||
the string is always zero.}
|
||||
end;
|
||||
PFSInfo = ^TFSInfo;
|
||||
|
||||
TCountryCode=record
|
||||
Country, {Country to query info about (0=current).}
|
||||
CodePage: longint; {Code page to query info about (0=current).}
|
||||
end;
|
||||
PCountryCode=^TCountryCode;
|
||||
|
||||
TTimeFmt = (Clock12, Clock24);
|
||||
|
||||
TCountryInfo=record
|
||||
Country, CodePage: longint; {Country and codepage requested.}
|
||||
case byte of
|
||||
0:
|
||||
(DateFormat: longint; {1=ddmmyy 2=yymmdd 3=mmddyy}
|
||||
CurrencyUnit: array [0..4] of char;
|
||||
ThousandSeparator: char; {Thousands separator.}
|
||||
Zero1: byte; {Always zero.}
|
||||
DecimalSeparator: char; {Decimals separator,}
|
||||
Zero2: byte;
|
||||
DateSeparator: char; {Date separator.}
|
||||
Zero3: byte;
|
||||
TimeSeparator: char; {Time separator.}
|
||||
Zero4: byte;
|
||||
CurrencyFormat, {Bit field:
|
||||
Bit 0: 0=indicator before value
|
||||
1=indicator after value
|
||||
Bit 1: 1=insert space after
|
||||
indicator.
|
||||
Bit 2: 1=Ignore bit 0&1, replace
|
||||
decimal separator with
|
||||
indicator.}
|
||||
DecimalPlace: byte; {Number of decimal places used in
|
||||
currency indication.}
|
||||
TimeFormat: TTimeFmt; {12/24 hour.}
|
||||
Reserve1: array [0..1] of word;
|
||||
DataSeparator: char; {Data list separator}
|
||||
Zero5: byte;
|
||||
Reserve2: array [0..4] of word);
|
||||
1:
|
||||
(fsDateFmt: longint; {1=ddmmyy 2=yymmdd 3=mmddyy}
|
||||
szCurrency: array [0..4] of char;
|
||||
{null terminated currency symbol}
|
||||
szThousandsSeparator: array [0..1] of char;
|
||||
{Thousands separator + #0}
|
||||
szDecimal: array [0..1] of char;
|
||||
{Decimals separator + #0}
|
||||
szDateSeparator: array [0..1] of char;
|
||||
{Date separator + #0}
|
||||
szTimeSeparator: array [0..1] of char;
|
||||
{Time separator + #0}
|
||||
fsCurrencyFmt, {Bit field:
|
||||
Bit 0: 0=indicator before value
|
||||
1=indicator after value
|
||||
Bit 1: 1=insert space after
|
||||
indicator.
|
||||
Bit 2: 1=Ignore bit 0&1, replace
|
||||
decimal separator with
|
||||
indicator}
|
||||
cDecimalPlace: byte; {Number of decimal places used in
|
||||
currency indication}
|
||||
fsTimeFmt: byte; {0=12,1=24 hours}
|
||||
abReserved1: array [0..1] of word;
|
||||
szDataSeparator: array [0..1] of char;
|
||||
{Data list separator + #0}
|
||||
abReserved2: array [0..4] of word);
|
||||
end;
|
||||
PCountryInfo=^TCountryInfo;
|
||||
|
||||
const
|
||||
ilStandard = 1;
|
||||
ilQueryEAsize = 2;
|
||||
ilQueryEAs = 3;
|
||||
ilQueryFullName = 5;
|
||||
|
||||
{This is the correct way to call external assembler procedures.}
|
||||
procedure syscall;external name '___SYSCALL';
|
||||
|
||||
function DosSetFileInfo (Handle, InfoLevel: longint; AFileStatus: PFileStatus;
|
||||
FileStatusLen: longint): longint; cdecl; external 'DOSCALLS' index 218;
|
||||
|
||||
function DosQueryFSInfo (DiskNum, InfoLevel: longint; var Buffer: TFSInfo;
|
||||
BufLen: longint): longint; cdecl; external 'DOSCALLS' index 278;
|
||||
|
||||
function DosQueryFileInfo (Handle, InfoLevel: longint;
|
||||
AFileStatus: PFileStatus; FileStatusLen: longint): longint; cdecl;
|
||||
external 'DOSCALLS' index 279;
|
||||
|
||||
function DosScanEnv (Name: PChar; var Value: PChar): longint; cdecl;
|
||||
external 'DOSCALLS' index 227;
|
||||
|
||||
function DosFindFirst (FileMask: PChar; var Handle: longint; Attrib: longint;
|
||||
AFileStatus: PFileStatus; FileStatusLen: longint;
|
||||
var Count: longint; InfoLevel: longint): longint; cdecl;
|
||||
external 'DOSCALLS' index 264;
|
||||
function DosFindNext (Handle: longint; AFileStatus: PFileStatus;
|
||||
FileStatusLen: longint; var Count: longint): longint; cdecl;
|
||||
external 'DOSCALLS' index 265;
|
||||
|
||||
function DosFindClose (Handle: longint): longint; cdecl;
|
||||
external 'DOSCALLS' index 263;
|
||||
|
||||
function DosQueryCtryInfo (Size: longint; var Country: TCountryCode;
|
||||
var Res: TCountryInfo; var ActualSize: longint): longint; cdecl;
|
||||
external 'NLS' index 5;
|
||||
|
||||
function DosMapCase (Size: longint; var Country: TCountryCode;
|
||||
AString: PChar): longint; cdecl; external 'NLS' index 7;
|
||||
|
||||
|
||||
{****************************************************************************
|
||||
File Functions
|
||||
****************************************************************************}
|
||||
|
||||
const
|
||||
ofRead = $0000; {Open for reading}
|
||||
@ -245,7 +416,7 @@ begin
|
||||
New (FStat);
|
||||
Rslt.FindHandle := $FFFFFFFF;
|
||||
Count := 1;
|
||||
Err := DosFindFirst (Path, Rslt.FindHandle, Attr, FStat,
|
||||
Err := DosFindFirst (PChar (Path), Rslt.FindHandle, Attr, FStat,
|
||||
SizeOf (FStat^), Count, ilStandard);
|
||||
if (Err = 0) and (Count = 0) then Err := 18;
|
||||
FindFirst := -Err;
|
||||
@ -779,7 +950,10 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.13 2001-10-25 21:23:49 peter
|
||||
Revision 1.14 2001-12-16 19:08:20 hajny
|
||||
* uses DosCalls replaced with direct declarations
|
||||
|
||||
Revision 1.13 2001/10/25 21:23:49 peter
|
||||
* added 64bit fileseek
|
||||
|
||||
Revision 1.12 2001/06/03 15:18:01 peter
|
||||
|
Loading…
Reference in New Issue
Block a user