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 lines
2.1 KiB

  1. unit uvfsUtils;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils;
  6. {
  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. }
  18. implementation
  19. uses
  20. uvfsManager;
  21. {
  22. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  23. //TvfsFileReader////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  24. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  25. function TvfsFileReader.LoadStream(const aFilename: String; const aStream: TStream): Boolean;
  26. var
  27. s: IStreamHandle;
  28. begin
  29. result := vfsManager.ReadFile(aFilename, s);
  30. if result then
  31. aStream.CopyFrom(s, s.GetStream.Size - s.GetStream.Position);
  32. end;
  33. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  34. //TvfsFileWriter////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  35. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  36. procedure TvfsFileWriter.SaveStream(const aFilename: String; const aStream: TStream);
  37. var
  38. s: IStreamHandle;
  39. begin
  40. if not vfsManager.WriteFile(aFilename, true, s) then
  41. raise EvfsError.Create('unable to create file: ' + aFilename);
  42. s.GetStream.CopyFrom(aStream, aStream.Size - aStream.Position);
  43. end;
  44. }
  45. end.