diff options
Diffstat (limited to 'delphi/Awkward/utils/io.pas')
-rw-r--r-- | delphi/Awkward/utils/io.pas | 249 |
1 files changed, 0 insertions, 249 deletions
diff --git a/delphi/Awkward/utils/io.pas b/delphi/Awkward/utils/io.pas deleted file mode 100644 index aedbfeb..0000000 --- a/delphi/Awkward/utils/io.pas +++ /dev/null @@ -1,249 +0,0 @@ -unit IO;
-
-interface
-uses windows;
-
-function Reset (fname:PWideChar):THANDLE; overload;
-function Reset (fname:PAnsiChar):THANDLE; overload;
-function ReWrite(fname:PWideChar):THANDLE; overload;
-function ReWrite(fname:PAnsiChar):THANDLE; overload;
-function Append (fname:PWideChar):THANDLE; overload;
-function Append (fname:PAnsiChar):THANDLE; overload;
-
-function GetFSize(name:PWideChar):dword; overload;
-function GetFSize(name:PAnsiChar):dword; overload;
-function FileExists(fname:PAnsiChar):Boolean; overload;
-function FileExists(fname:PWideChar):Boolean; overload;
-
-function Skip(f:THANDLE;count:integer):integer;
-function Seek(f:THANDLE;pos:integer):integer;
-function FilePos(f:THANDLE):dword;
-function FileSize(f:THANDLE):dword;
-function Eof(f:THANDLE):boolean;
-
-function BlockRead (f:THANDLE;var buf;size:integer):dword;
-function BlockWrite(f:THANDLE;var buf;size:integer):dword;
-
-function ForceDirectories(path:PAnsiChar):boolean; overload;
-function ForceDirectories(path:PWideChar):boolean; overload;
-function DirectoryExists(Directory:PAnsiChar):Boolean; overload;
-function DirectoryExists(Directory:PWideChar):Boolean; overload;
-
-implementation
-
-function Reset(fname:PWideChar):THANDLE;
-begin
- result:=CreateFileW(fname,GENERIC_READ,FILE_SHARE_READ+FILE_SHARE_WRITE,nil,OPEN_EXISTING,0,0);
-end;
-
-function Reset(fname:PAnsiChar):THANDLE;
-begin
- result:=CreateFileA(fname,GENERIC_READ,FILE_SHARE_READ+FILE_SHARE_WRITE,nil,OPEN_EXISTING,0,0);
-end;
-
-function Append(fname:PWideChar):THANDLE;
-begin
- result:=CreateFileW(fname,GENERIC_WRITE,FILE_SHARE_READ,nil,OPEN_ALWAYS,0,0);
- SetFilePointer(result,0,nil,FILE_END);
-end;
-
-function Append(fname:PAnsiChar):THANDLE;
-begin
- result:=CreateFileA(fname,GENERIC_WRITE,FILE_SHARE_READ,nil,OPEN_ALWAYS,0,0);
- SetFilePointer(result,0,nil,FILE_END);
-end;
-
-function ReWrite(fname:PWideChar):THANDLE; overload;
-begin
- result:=CreateFileW(fname,GENERIC_WRITE,FILE_SHARE_READ,nil,CREATE_ALWAYS,0,0);
-end;
-
-function ReWrite(fname:PAnsiChar):THANDLE; overload;
-begin
- result:=CreateFileA(fname,GENERIC_WRITE,FILE_SHARE_READ,nil,CREATE_ALWAYS,0,0);
-end;
-
-function Skip(f:THANDLE;count:integer):integer;
-begin
- result:=SetFilePointer(f,count,nil,FILE_CURRENT);
-end;
-
-function Eof(f:THANDLE):boolean;
-begin
- result:=FilePos(f)>=FileSize(f);
-end;
-
-function Seek(f:THANDLE;pos:integer):integer;
-begin
- result:=SetFilePointer(f,pos,nil,FILE_BEGIN);
-end;
-
-function FilePos(f:THANDLE):dword;
-begin
- result:=SetFilePointer(f,0,nil,FILE_CURRENT);
-end;
-
-function FileSize(f:THANDLE):dword;
-begin
- result:=GetFileSize(f,nil);
-end;
-
-function BlockRead(f:THANDLE;var buf;size:integer):dword;
-begin
- ReadFile(f,buf,size,result,nil);
-end;
-
-function BlockWrite(f:THANDLE;var buf;size:integer):dword;
-begin
- WriteFile(f,buf,size,result,nil);
-end;
-
-function GetFSize(name:PWideChar):dword;
-var
- lRec:WIN32_FIND_DATAW;
- h:THANDLE;
-begin
- h:=FindFirstFileW(name,lRec);
- if h=THANDLE(INVALID_HANDLE_VALUE) then
- result:=0
- else
- begin
- result:=lRec.nFileSizeLow;
- FindClose(h);
- end;
-end;
-
-function GetFSize(name:PAnsiChar):dword;
-var
- lRec:WIN32_FIND_DATAA;
- h:THANDLE;
-begin
- h:=FindFirstFileA(name,lRec);
- if h=THANDLE(INVALID_HANDLE_VALUE) then
- result:=0
- else
- begin
- result:=lRec.nFileSizeLow;
- FindClose(h);
- end;
-end;
-
-function ForceDirectories(path:PAnsiChar):boolean;
-var
- p,pc:PAnsiChar;
- i:cardinal;
- c:AnsiChar;
-begin
- result:=true;
- if DirectoryExists(path) then exit;
- if (path<>nil) and (path^<>#0) then
- begin
- i:=lstrlena(path)+1;
- GetMem(pc,i);
- move(path^,pc^,i);
- p:=pc;
- if (p^ in ['A'..'Z','a'..'z']) and (p[1]=':') then inc(p,2);
- if p^ in ['/','\'] then inc(p);
- c:=#0;
- while p^<>#0 do
- begin
- c:=' ';
- if (p^ in ['/','\']) and (p[1]<>#0) then
- begin
- c:=p^;
- p^:=#0;
- if not CreateDirectoryA(pc,nil) then
- begin
- if GetLastError<>ERROR_ALREADY_EXISTS then
- begin
- result:=false;
- FreeMem(pc);
- exit;
- end;
- end;
- p^:=c;
- end;
- inc(p);
- end;
- if (c<>#0) and (c=' ') then
- if not CreateDirectoryA(pc,nil) then
- result:=false;
- FreeMem(pc);
- end;
-end;
-
-function ForceDirectories(path:PWideChar):boolean;
-var
- p,pc:PWideChar;
- i:cardinal;
- c:WideChar;
-begin
- result:=true;
- if DirectoryExists(path) then exit;
- if (path<>nil) and (path^<>#0) then
- begin
- i:=(lstrlenw(path)+1)*SizeOf(WideChar);
- GetMem(pc,i);
- move(path^,pc^,i);
- p:=pc;
- if (((p^>='A') and (p^<='Z')) or ((p^>='a') and (p^<='z'))) and (p[1]=':') then inc(p,2);
- if (p^='/') or (p^='\') then inc(p);
- c:=#0;
- while p^<>#0 do
- begin
- c:=' ';
- if ((p^='/') or (p^='\')) and (p[1]<>#0) then
- begin
- c:=p^;
- p^:=#0;
- if not CreateDirectoryW(pc,nil) then
- if GetLastError<>ERROR_ALREADY_EXISTS then
- begin
- result:=false;
- FreeMem(pc);
- exit;
- end;
- p^:=c;
- end;
- inc(p);
- end;
- if (c<>#0) and (c=' ') then
- if not CreateDirectoryW(pc,nil) then
- result:=false;
- FreeMem(pc);
- end;
-end;
-
-function DirectoryExists(Directory:PAnsiChar):Boolean;
-var
- Code: Integer;
-begin
- Code := GetFileAttributesA(Directory);
- Result := (Code<>-1) and ((Code and FILE_ATTRIBUTE_DIRECTORY)<>0);
-end;
-
-function DirectoryExists(Directory:PWideChar):Boolean;
-var
- Code: Integer;
-begin
- Code := GetFileAttributesW(Directory);
- Result := (Code<>-1) and ((Code and FILE_ATTRIBUTE_DIRECTORY)<>0);
-end;
-
-function FileExists(fname:PAnsiChar):Boolean;
-var
- Code: Integer;
-begin
- Code := GetFileAttributesA(fname);
- Result := (Code<>-1) and ((Code and FILE_ATTRIBUTE_DIRECTORY)=0);
-end;
-
-function FileExists(fname:PWideChar):Boolean;
-var
- Code: Integer;
-begin
- Code := GetFileAttributesW(fname);
- Result := (Code<>-1) and ((Code and FILE_ATTRIBUTE_DIRECTORY)=0);
-end;
-
-end.
|