Files
kam-mobile/code/resource/KaMResourceInput.pas
T

45 lines
1.2 KiB
ObjectPascal
Raw Normal View History

2026-09-15 10:16:31 +05:00
unit KaMResourceInput;
interface
uses
Classes;
function KaMResourceExists(const aReference: string): Boolean;
function KaMOpenResourceStream(const aReference: string): TStream;
implementation
uses
CastleUriUtils, CastleDownload;
function ResourceProtocol(const aReference: string): string;
begin
if aReference = '' then
raise EDownloadError.Create('KaMResourceInput: empty resource reference');
Result := UriProtocol(aReference);
if (Result <> '') and (Result <> 'file') and (Result <> 'castle-data') then
raise EDownloadError.Create('KaMResourceInput: unsupported resource protocol: ' + Result);
end;
function KaMResourceExists(const aReference: string): Boolean;
begin
ResourceProtocol(aReference);
case UriExists(aReference) of
ueFile: Result := True;
ueNotExists, ueDirectory: Result := False;
ueUnknown:
raise EDownloadError.Create('KaMResourceInput: resource existence is unknown: ' + aReference);
end;
end;
function KaMOpenResourceStream(const aReference: string): TStream;
begin
if ResourceProtocol(aReference) = '' then
Result := TFileStream.Create(aReference, fmOpenRead)
else
Result := Download(aReference, [soForceMemoryStream]);
end;
end.