X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=blobdiff_plain;f=src%2Fshared%2Futils.pas;h=235dee4a95627e1a39f8335aa81ade78f6648f1f;hp=712923e93b6c2a2fa2abefe95a1b282f51429ebc;hb=03ec2f1d27fdcff9a5a8785806fcd8449f2537a9;hpb=844441154d1220d6c83f75043300c2851ec87109 diff --git a/src/shared/utils.pas b/src/shared/utils.pas index 712923e..235dee4 100644 --- a/src/shared/utils.pas +++ b/src/shared/utils.pas @@ -3,6 +3,10 @@ unit utils; interface +uses + SysUtils, Classes; + + // does filename have one of ".wad", ".pk3", ".zip" extensions? function hasWadExtension (fn: AnsiString): Boolean; @@ -29,12 +33,12 @@ function utf8to1251 (s: AnsiString): AnsiString; // nobody cares about shitdoze, so i'll use the same code path for it function findFileCI (var pathname: AnsiString; lastIsDir: Boolean=false): Boolean; +// they throws +function openDiskFileRO (pathname: AnsiString): TStream; +function createDiskFile (pathname: AnsiString): TStream; -implementation - -uses - SysUtils; +implementation function hasWadExtension (fn: AnsiString): Boolean; begin @@ -308,4 +312,23 @@ begin end; +function openDiskFileRO (pathname: AnsiString): TStream; +begin + if not findFileCI(pathname) then raise Exception.Create('can''t open file "'+pathname+'"'); + result := TFileStream.Create(pathname, fmOpenRead or {fmShareDenyWrite}fmShareDenyNone); +end; + +function createDiskFile (pathname: AnsiString): TStream; +var + path: AnsiString; +begin + path := ExtractFilePath(pathname); + if length(path) > 0 then + begin + if not findFileCI(path, true) then raise Exception.Create('can''t create file "'+pathname+'"'); + end; + result := TFileStream.Create(path+ExtractFileName(pathname), fmCreate); +end; + + end.