You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 regels
2.1 KiB

  1. unit uvfsUtils;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils,
  6. uutlSerialization;
  7. type
  8. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  9. TvfsFileWriter = class(TInterfacedObject, IutlFileWriter)
  10. public
  11. procedure SaveStream(const aFilename: String; const aStream: TStream);
  12. end;
  13. TvfsFileReader = class(TInterfacedObject, IutlFileReader)
  14. public
  15. function LoadStream(const aFilename: String; const aStream: TStream): Boolean;
  16. end;
  17. implementation
  18. uses
  19. uvfsManager;
  20. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  21. //TvfsFileReader////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  22. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  23. function TvfsFileReader.LoadStream(const aFilename: String; const aStream: TStream): Boolean;
  24. var
  25. s: IStreamHandle;
  26. begin
  27. result := vfsManager.ReadFile(aFilename, s);
  28. if result then
  29. aStream.CopyFrom(s, s.GetStream.Size - s.GetStream.Position);
  30. end;
  31. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  32. //TvfsFileWriter////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  33. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  34. procedure TvfsFileWriter.SaveStream(const aFilename: String; const aStream: TStream);
  35. var
  36. s: IStreamHandle;
  37. begin
  38. if not vfsManager.WriteFile(aFilename, true, s) then
  39. raise EvfsError.Create('unable to create file: ' + aFilename);
  40. s.GetStream.CopyFrom(aStream, aStream.Size - aStream.Position);
  41. end;
  42. end.