You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@928 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -2,16 +2,17 @@
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<PathDelim Value="\"/>
|
||||
<Version Value="7"/>
|
||||
<Version Value="6"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<LRSInOutputDirectory Value="False"/>
|
||||
<AlwaysBuild Value="False"/>
|
||||
</Flags>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<MainUnit Value="0"/>
|
||||
<IconPath Value="./"/>
|
||||
<TargetFileExt Value=".exe"/>
|
||||
<Title Value="excel5write"/>
|
||||
<UseAppBundle Value="False"/>
|
||||
<ActiveEditorIndexAtStart Value="6"/>
|
||||
</General>
|
||||
<VersionInfo>
|
||||
<ProjectVersion Value=""/>
|
||||
@ -33,253 +34,13 @@
|
||||
<PackageName Value="laz_fpspreadsheet"/>
|
||||
</Item1>
|
||||
</RequiredPackages>
|
||||
<Units Count="21">
|
||||
<Units Count="1">
|
||||
<Unit0>
|
||||
<Filename Value="excel5write.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="excel5write"/>
|
||||
<CursorPos X="61" Y="49"/>
|
||||
<TopLine Value="45"/>
|
||||
<EditorIndex Value="0"/>
|
||||
<UsageCount Value="309"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="..\fpolestorage.pas"/>
|
||||
<UnitName Value="fpolestorage"/>
|
||||
<CursorPos X="1" Y="1"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="19"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<Filename Value="..\..\..\..\..\lazarus\lcl\interfaces\win32\win32wsstdctrls.pp"/>
|
||||
<UnitName Value="Win32WSStdCtrls"/>
|
||||
<CursorPos X="35" Y="720"/>
|
||||
<TopLine Value="713"/>
|
||||
<UsageCount Value="76"/>
|
||||
</Unit2>
|
||||
<Unit3>
|
||||
<Filename Value="..\..\..\..\..\lazarus\ideintf\componenteditors.pas"/>
|
||||
<UnitName Value="ComponentEditors"/>
|
||||
<CursorPos X="40" Y="332"/>
|
||||
<TopLine Value="330"/>
|
||||
<UsageCount Value="74"/>
|
||||
</Unit3>
|
||||
<Unit4>
|
||||
<Filename Value="..\..\xlsbiff5.pas"/>
|
||||
<UnitName Value="xlsbiff5"/>
|
||||
<CursorPos X="1" Y="59"/>
|
||||
<TopLine Value="47"/>
|
||||
<EditorIndex Value="4"/>
|
||||
<UsageCount Value="140"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit4>
|
||||
<Unit5>
|
||||
<Filename Value="..\..\fpsutils.pas"/>
|
||||
<UnitName Value="fpsutils"/>
|
||||
<CursorPos X="1" Y="11"/>
|
||||
<TopLine Value="1"/>
|
||||
<EditorIndex Value="3"/>
|
||||
<UsageCount Value="140"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit5>
|
||||
<Unit6>
|
||||
<Filename Value="..\..\xlsbiff2.pas"/>
|
||||
<UnitName Value="xlsbiff2"/>
|
||||
<CursorPos X="39" Y="281"/>
|
||||
<TopLine Value="275"/>
|
||||
<UsageCount Value="139"/>
|
||||
</Unit6>
|
||||
<Unit7>
|
||||
<Filename Value="..\..\fpolestorage.pas"/>
|
||||
<UnitName Value="fpolestorage"/>
|
||||
<CursorPos X="38" Y="48"/>
|
||||
<TopLine Value="41"/>
|
||||
<UsageCount Value="139"/>
|
||||
</Unit7>
|
||||
<Unit8>
|
||||
<Filename Value="..\..\..\..\..\lazarus26\fpc\2.2.2\source\rtl\objpas\classes\classesh.inc"/>
|
||||
<CursorPos X="19" Y="562"/>
|
||||
<TopLine Value="553"/>
|
||||
<UsageCount Value="41"/>
|
||||
</Unit8>
|
||||
<Unit9>
|
||||
<Filename Value="..\..\..\..\..\lazarus26\fpc\2.2.2\source\rtl\objpas\classes\streams.inc"/>
|
||||
<CursorPos X="21" Y="158"/>
|
||||
<TopLine Value="151"/>
|
||||
<UsageCount Value="41"/>
|
||||
</Unit9>
|
||||
<Unit10>
|
||||
<Filename Value="..\..\fpspreadsheet.pas"/>
|
||||
<UnitName Value="fpspreadsheet"/>
|
||||
<CursorPos X="12" Y="205"/>
|
||||
<TopLine Value="193"/>
|
||||
<EditorIndex Value="2"/>
|
||||
<UsageCount Value="93"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit10>
|
||||
<Unit11>
|
||||
<Filename Value="..\..\..\..\..\lazarus\lcl\include\customtrayicon.inc"/>
|
||||
<CursorPos X="22" Y="203"/>
|
||||
<TopLine Value="197"/>
|
||||
<UsageCount Value="67"/>
|
||||
</Unit11>
|
||||
<Unit12>
|
||||
<Filename Value="..\..\fpsopendocument.pas"/>
|
||||
<UnitName Value="fpsopendocument"/>
|
||||
<CursorPos X="53" Y="49"/>
|
||||
<TopLine Value="44"/>
|
||||
<UsageCount Value="11"/>
|
||||
</Unit12>
|
||||
<Unit13>
|
||||
<Filename Value="..\..\xlsbiff8.pas"/>
|
||||
<UnitName Value="xlsbiff8"/>
|
||||
<CursorPos X="56" Y="53"/>
|
||||
<TopLine Value="45"/>
|
||||
<UsageCount Value="11"/>
|
||||
</Unit13>
|
||||
<Unit14>
|
||||
<Filename Value="..\..\xlscommon.pas"/>
|
||||
<UnitName Value="xlscommon"/>
|
||||
<CursorPos X="19" Y="15"/>
|
||||
<TopLine Value="1"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<UsageCount Value="10"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit14>
|
||||
<Unit15>
|
||||
<Filename Value="..\..\uvirtuallayer.pas"/>
|
||||
<UnitName Value="uvirtuallayer"/>
|
||||
<CursorPos X="1" Y="17"/>
|
||||
<TopLine Value="5"/>
|
||||
<EditorIndex Value="5"/>
|
||||
<UsageCount Value="10"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit15>
|
||||
<Unit16>
|
||||
<Filename Value="..\..\uvirtuallayer_ole.pas"/>
|
||||
<UnitName Value="uvirtuallayer_ole"/>
|
||||
<CursorPos X="37" Y="61"/>
|
||||
<TopLine Value="56"/>
|
||||
<EditorIndex Value="6"/>
|
||||
<UsageCount Value="10"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit16>
|
||||
<Unit17>
|
||||
<Filename Value="..\..\uvirtuallayer_ole_helpers.pas"/>
|
||||
<UnitName Value="uvirtuallayer_ole_helpers"/>
|
||||
<CursorPos X="94" Y="3"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit17>
|
||||
<Unit18>
|
||||
<Filename Value="..\..\uvirtuallayer_ole_types.pas"/>
|
||||
<UnitName Value="uvirtuallayer_ole_types"/>
|
||||
<CursorPos X="89" Y="6"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit18>
|
||||
<Unit19>
|
||||
<Filename Value="..\..\uvirtuallayer_stream.pas"/>
|
||||
<UnitName Value="uvirtuallayer_stream"/>
|
||||
<CursorPos X="71" Y="10"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit19>
|
||||
<Unit20>
|
||||
<Filename Value="..\..\..\..\..\lazarus\lcl\masks.pas"/>
|
||||
<UnitName Value="Masks"/>
|
||||
<CursorPos X="35" Y="9"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit20>
|
||||
</Units>
|
||||
<JumpHistory Count="21" HistoryIndex="20">
|
||||
<Position1>
|
||||
<Filename Value="..\..\fpspreadsheet.pas"/>
|
||||
<Caret Line="137" Column="40" TopLine="129"/>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="..\..\xlsbiff5.pas"/>
|
||||
<Caret Line="100" Column="17" TopLine="92"/>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="..\..\xlsbiff5.pas"/>
|
||||
<Caret Line="615" Column="34" TopLine="593"/>
|
||||
</Position3>
|
||||
<Position4>
|
||||
<Filename Value="excel5write.lpr"/>
|
||||
<Caret Line="47" Column="30" TopLine="33"/>
|
||||
</Position4>
|
||||
<Position5>
|
||||
<Filename Value="excel5write.lpr"/>
|
||||
<Caret Line="53" Column="21" TopLine="40"/>
|
||||
</Position5>
|
||||
<Position6>
|
||||
<Filename Value="excel5write.lpr"/>
|
||||
<Caret Line="54" Column="27" TopLine="40"/>
|
||||
</Position6>
|
||||
<Position7>
|
||||
<Filename Value="excel5write.lpr"/>
|
||||
<Caret Line="52" Column="38" TopLine="43"/>
|
||||
</Position7>
|
||||
<Position8>
|
||||
<Filename Value="excel5write.lpr"/>
|
||||
<Caret Line="56" Column="25" TopLine="37"/>
|
||||
</Position8>
|
||||
<Position9>
|
||||
<Filename Value="..\..\xlsbiff5.pas"/>
|
||||
<Caret Line="101" Column="27" TopLine="89"/>
|
||||
</Position9>
|
||||
<Position10>
|
||||
<Filename Value="..\..\xlsbiff5.pas"/>
|
||||
<Caret Line="263" Column="5" TopLine="256"/>
|
||||
</Position10>
|
||||
<Position11>
|
||||
<Filename Value="..\..\xlsbiff5.pas"/>
|
||||
<Caret Line="101" Column="48" TopLine="90"/>
|
||||
</Position11>
|
||||
<Position12>
|
||||
<Filename Value="..\..\xlsbiff5.pas"/>
|
||||
<Caret Line="250" Column="3" TopLine="238"/>
|
||||
</Position12>
|
||||
<Position13>
|
||||
<Filename Value="..\..\xlsbiff5.pas"/>
|
||||
<Caret Line="245" Column="28" TopLine="234"/>
|
||||
</Position13>
|
||||
<Position14>
|
||||
<Filename Value="..\..\xlsbiff5.pas"/>
|
||||
<Caret Line="268" Column="40" TopLine="248"/>
|
||||
</Position14>
|
||||
<Position15>
|
||||
<Filename Value="..\..\xlsbiff5.pas"/>
|
||||
<Caret Line="101" Column="54" TopLine="90"/>
|
||||
</Position15>
|
||||
<Position16>
|
||||
<Filename Value="..\..\uvirtuallayer.pas"/>
|
||||
<Caret Line="1" Column="1" TopLine="1"/>
|
||||
</Position16>
|
||||
<Position17>
|
||||
<Filename Value="..\..\uvirtuallayer.pas"/>
|
||||
<Caret Line="962" Column="3" TopLine="960"/>
|
||||
</Position17>
|
||||
<Position18>
|
||||
<Filename Value="..\..\uvirtuallayer.pas"/>
|
||||
<Caret Line="567" Column="1" TopLine="563"/>
|
||||
</Position18>
|
||||
<Position19>
|
||||
<Filename Value="..\..\uvirtuallayer_ole.pas"/>
|
||||
<Caret Line="70" Column="3" TopLine="61"/>
|
||||
</Position19>
|
||||
<Position20>
|
||||
<Filename Value="..\..\uvirtuallayer_ole.pas"/>
|
||||
<Caret Line="69" Column="5" TopLine="58"/>
|
||||
</Position20>
|
||||
<Position21>
|
||||
<Filename Value="..\..\uvirtuallayer_ole.pas"/>
|
||||
<Caret Line="68" Column="5" TopLine="56"/>
|
||||
</Position21>
|
||||
</JumpHistory>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="8"/>
|
||||
|
@ -24,7 +24,7 @@ begin
|
||||
|
||||
// Create the spreadsheet
|
||||
MyWorkbook := TsWorkbook.Create;
|
||||
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
|
||||
MyWorksheet := MyWorkbook.AddWorksheet('Meu Relatório');
|
||||
|
||||
// Write some cells
|
||||
MyWorksheet.WriteNumber(0, 0, 1.0);// A1
|
||||
|
@ -5,108 +5,108 @@ unit uvirtuallayer;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils,strutils,
|
||||
Classes, SysUtils, strutils,
|
||||
{$ifdef FPSUSELCL}
|
||||
Graphics,
|
||||
{$endif}
|
||||
uvirtuallayer_types,uvirtuallayer_stream;
|
||||
uvirtuallayer_types, uvirtuallayer_stream;
|
||||
|
||||
type
|
||||
|
||||
{ TVirtualLayer }
|
||||
{ TVirtualLayer }
|
||||
|
||||
TVirtualLayer=class(TObject)
|
||||
private
|
||||
FMountPoints: array of TVirtualMountPoint;
|
||||
m_Critical: TRTLCriticalSection;
|
||||
FFreeLayerStreamOnFree: Boolean;
|
||||
function GetIsWritableMedia: Boolean;
|
||||
function GetMountPath: UTF8String;
|
||||
function GetRootLayer: TVirtualLayer;
|
||||
procedure SetParentLayer(const AValue: TVirtualLayer);
|
||||
function PathMountedInCurrentLayer(const APath: UTF8String): TVirtualLayer;
|
||||
function BuildPathFromIndex(const ASplittedPath: TStringList; const Index: integer): UTF8String;
|
||||
function FindMounted(const APath: UTF8String; out ARemainPath: UTF8String): TVirtualLayer; overload;
|
||||
function FindMounted(const APath: UTF8String): TVirtualLayer; overload;
|
||||
function PreviousPath(const APath: UTF8String): UTF8String;
|
||||
function StripMountPoints(const APath: UTF8String): UTF8String;
|
||||
protected
|
||||
FParentLayer: TVirtualLayer;
|
||||
FVirtualLayerStream: TStream;
|
||||
FMountedInPath: UTF8String;
|
||||
|
||||
procedure SplitPath(const APath: UTF8String;const ASplittedPath: TStringList);
|
||||
function FileToVirtualLayer(const ATargetFileName: UTF8String;out TargetVL: TVirtualLayer): Boolean;
|
||||
function AcrossLayersCopy(const ASourceFileName,ATargetFileName: UTF8String): Boolean;
|
||||
function AcrossLayersMove(const ASourceFileName,ATargetFileName: UTF8String): Boolean;
|
||||
function NormalizePath(const APath: UTF8String): UTF8String;
|
||||
function RemoveRootPathDelimiter(const APath: UTF8String): UTF8String;
|
||||
function Initialize(): boolean; virtual;
|
||||
TVirtualLayer=class(TObject)
|
||||
private
|
||||
FMountPoints: array of TVirtualMountPoint;
|
||||
m_Critical: TRTLCriticalSection;
|
||||
FFreeLayerStreamOnFree: Boolean;
|
||||
function GetIsWritableMedia: Boolean;
|
||||
function GetMountPath: UTF8String;
|
||||
function GetRootLayer: TVirtualLayer;
|
||||
procedure SetParentLayer(const AValue: TVirtualLayer);
|
||||
function PathMountedInCurrentLayer(const APath: UTF8String): TVirtualLayer;
|
||||
function BuildPathFromIndex(const ASplittedPath: TStringList; const Index: integer): UTF8String;
|
||||
function FindMounted(const APath: UTF8String; out ARemainPath: UTF8String): TVirtualLayer; overload;
|
||||
function FindMounted(const APath: UTF8String): TVirtualLayer; overload;
|
||||
function PreviousPath(const APath: UTF8String): UTF8String;
|
||||
function StripMountPoints(const APath: UTF8String): UTF8String;
|
||||
protected
|
||||
FParentLayer: TVirtualLayer;
|
||||
FVirtualLayerStream: TStream;
|
||||
FMountedInPath: UTF8String;
|
||||
|
||||
//Functions to be implemented in specializations
|
||||
function intfOpenFile(const AFileName: UTF8String; const AMode: cardinal): TvlHandle; virtual; abstract;
|
||||
function intfCloseFile(const Handle: TvlHandle): Boolean; virtual; abstract;
|
||||
function intfFindList(const APath: UTF8String; const AMask: UTF8String): TVirtualLayer_FolderList; virtual; abstract;
|
||||
function intfSeek(const AHandle: TvlHandle; const APosition: int64; const Origin: word): int64; virtual; abstract;
|
||||
function intfRead(const Handle: TvlHandle; const Buffer: PBYTE; const Size: int64): int64; virtual; abstract;
|
||||
function intfWrite(const Handle: TvlHandle; const Buffer: PBYTE; const Size: int64): int64; virtual; abstract;
|
||||
function intfGetFileSize(const AHandle: TvlHandle): int64; virtual; abstract;
|
||||
function intfSetFileSize(const AHandle: TvlHandle; const ANewFileSize: int64): Boolean; virtual; abstract;
|
||||
function intfDeleteFile(const AFileName: UTF8String): boolean; virtual; abstract;
|
||||
function intfGetFreeSpace(const APath: UTF8String): int64; virtual; abstract;
|
||||
function intfIsWritableMedia(): Boolean; virtual; abstract;
|
||||
function intfMakeFolder(const AFolder: UTF8String): Boolean; virtual; abstract;
|
||||
function intfRemoveFolder(const AFolder: UTF8String): Boolean; virtual; abstract;
|
||||
function intfCopy(const ASourceFileName,ATargetFileName: UTF8String): Boolean; virtual;
|
||||
function intfMove(const ASourceFileName,ATargetFileName: UTF8String): Boolean; virtual;
|
||||
procedure SplitPath(const APath: UTF8String;const ASplittedPath: TStringList);
|
||||
function FileToVirtualLayer(const ATargetFileName: UTF8String;out TargetVL: TVirtualLayer): Boolean;
|
||||
function AcrossLayersCopy(const ASourceFileName,ATargetFileName: UTF8String): Boolean;
|
||||
function AcrossLayersMove(const ASourceFileName,ATargetFileName: UTF8String): Boolean;
|
||||
function NormalizePath(const APath: UTF8String): UTF8String;
|
||||
function RemoveRootPathDelimiter(const APath: UTF8String): UTF8String;
|
||||
function Initialize(): boolean; virtual;
|
||||
|
||||
{$ifdef FPSUSELCL}
|
||||
function IntfGetIcon(const APath: UTF8String): TIcon; virtual;
|
||||
{$endif}
|
||||
//Functions to be implemented in specializations
|
||||
function intfOpenFile(const AFileName: UTF8String; const AMode: cardinal): TvlHandle; virtual; abstract;
|
||||
function intfCloseFile(const Handle: TvlHandle): Boolean; virtual; abstract;
|
||||
function intfFindList(const APath: UTF8String; const AMask: UTF8String): TVirtualLayer_FolderList; virtual; abstract;
|
||||
function intfSeek(const AHandle: TvlHandle; const APosition: int64; const Origin: word): int64; virtual; abstract;
|
||||
function intfRead(const Handle: TvlHandle; const Buffer: PBYTE; const Size: int64): int64; virtual; abstract;
|
||||
function intfWrite(const Handle: TvlHandle; const Buffer: PBYTE; const Size: int64): int64; virtual; abstract;
|
||||
function intfGetFileSize(const AHandle: TvlHandle): int64; virtual; abstract;
|
||||
function intfSetFileSize(const AHandle: TvlHandle; const ANewFileSize: int64): Boolean; virtual; abstract;
|
||||
function intfDeleteFile(const AFileName: UTF8String): boolean; virtual; abstract;
|
||||
function intfGetFreeSpace(const APath: UTF8String): int64; virtual; abstract;
|
||||
function intfIsWritableMedia(): Boolean; virtual; abstract;
|
||||
function intfMakeFolder(const AFolder: UTF8String): Boolean; virtual; abstract;
|
||||
function intfRemoveFolder(const AFolder: UTF8String): Boolean; virtual; abstract;
|
||||
function intfCopy(const ASourceFileName,ATargetFileName: UTF8String): Boolean; virtual;
|
||||
function intfMove(const ASourceFileName,ATargetFileName: UTF8String): Boolean; virtual;
|
||||
|
||||
procedure Lock(); virtual;
|
||||
procedure Unlock(); virtual;
|
||||
public
|
||||
{$ifdef FPSUSELCL}
|
||||
function IntfGetIcon(const APath: UTF8String): TIcon; virtual;
|
||||
{$endif}
|
||||
|
||||
function MakeFolder(const AFolder: UTF8String): Boolean;
|
||||
function RemoveFolder(const AFolder: UTF8String): Boolean;
|
||||
function DeleteFile(const AFileName: UTF8String): Boolean;
|
||||
function Read(const Handle: TvlHandle; const Buffer: PBYTE; const Size: int64): int64;
|
||||
function Write(const Handle: TvlHandle; const Buffer: PBYTE; const Size: int64): int64;
|
||||
function FindList(const APath: UTF8String; const AMask: UTF8String): TVirtualLayer_FolderList;
|
||||
function OpenFile(const FileName: UTF8String; const Mode: cardinal): TvlHandle;
|
||||
function CloseFile(const Handle: TvlHandle): Boolean;
|
||||
function GetFileSize(const AHandle: TvlHandle): int64;
|
||||
function SetFileSize(const AHandle: TvlHandle; const ANewSize: int64): Boolean;
|
||||
function Seek(const AHandle: TvlHandle; const APosition: int64; const Origin: Word): int64;
|
||||
function FileExists(const AFileName: UTF8String): Boolean; virtual;
|
||||
function MoveFile(const ASourceFileName,ATargetFileName: UTF8String): Boolean; virtual;
|
||||
function CopyFile(const ASourceFileName,ATargetFileName: UTF8String): Boolean; virtual;
|
||||
function GetFreeSpace(const APath: UTF8String): int64;
|
||||
function FindFirst(const APath: String;const Attr: LongInt;out Rlst: sysutils.TSearchRec): LongInt;
|
||||
function FindNext(var Rlst: sysutils.TSearchRec): LongInt;
|
||||
procedure FindClose(Rlst: sysutils.TSearchRec);
|
||||
procedure Lock(); virtual;
|
||||
procedure Unlock(); virtual;
|
||||
public
|
||||
|
||||
procedure SplitFileNamePath(const AFullPath: UTF8String; out APath: UTF8String; out AFileName: UTF8String);
|
||||
function PathToVirtualLayer(const APath: UTF8String): TVirtualLayer;
|
||||
function CreateStream(const AFileName: UTF8String; const AMode: Cardinal): TVirtualLayer_Stream;
|
||||
function Mount(const AMountPath: UTF8String; const AVirtualLayer: TVirtualLayer): Boolean;
|
||||
function UnMount(const AMountPath: UTF8String; const FreeAssociatedVirtualLayer: Boolean=true): Boolean;
|
||||
function MakeFolder(const AFolder: UTF8String): Boolean;
|
||||
function RemoveFolder(const AFolder: UTF8String): Boolean;
|
||||
function DeleteFile(const AFileName: UTF8String): Boolean;
|
||||
function Read(const Handle: TvlHandle; const Buffer: PBYTE; const Size: int64): int64;
|
||||
function Write(const Handle: TvlHandle; const Buffer: PBYTE; const Size: int64): int64;
|
||||
function FindList(const APath: UTF8String; const AMask: UTF8String): TVirtualLayer_FolderList;
|
||||
function OpenFile(const FileName: UTF8String; const Mode: cardinal): TvlHandle;
|
||||
function CloseFile(const Handle: TvlHandle): Boolean;
|
||||
function GetFileSize(const AHandle: TvlHandle): int64;
|
||||
function SetFileSize(const AHandle: TvlHandle; const ANewSize: int64): Boolean;
|
||||
function Seek(const AHandle: TvlHandle; const APosition: int64; const Origin: Word): int64;
|
||||
function FileExists(const AFileName: UTF8String): Boolean; virtual;
|
||||
function MoveFile(const ASourceFileName,ATargetFileName: UTF8String): Boolean; virtual;
|
||||
function CopyFile(const ASourceFileName,ATargetFileName: UTF8String): Boolean; virtual;
|
||||
function GetFreeSpace(const APath: UTF8String): int64;
|
||||
function FindFirst(const APath: String;const Attr: LongInt;out Rlst: sysutils.TSearchRec): LongInt;
|
||||
function FindNext(var Rlst: sysutils.TSearchRec): LongInt;
|
||||
procedure FindClose(Rlst: sysutils.TSearchRec);
|
||||
|
||||
property FreeLayerStreamOnFree: Boolean read FFreeLayerStreamOnFree write FFreeLayerStreamOnFree;
|
||||
property IsWritableMedia: Boolean read GetIsWritableMedia;
|
||||
property MountPath: UTF8String read GetMountPath;
|
||||
property RootLayer: TVirtualLayer read GetRootLayer;
|
||||
property ParentLayer: TVirtualLayer read FParentLayer write SetParentLayer;
|
||||
procedure SplitFileNamePath(const AFullPath: UTF8String; out APath: UTF8String; out AFileName: UTF8String);
|
||||
function PathToVirtualLayer(const APath: UTF8String): TVirtualLayer;
|
||||
function CreateStream(const AFileName: UTF8String; const AMode: Cardinal): TVirtualLayer_Stream;
|
||||
function Mount(const AMountPath: UTF8String; const AVirtualLayer: TVirtualLayer): Boolean;
|
||||
function UnMount(const AMountPath: UTF8String; const FreeAssociatedVirtualLayer: Boolean=true): Boolean;
|
||||
|
||||
{$ifdef FPSUSELCL}
|
||||
function GetIcon(const APath: UTF8String): TIcon;
|
||||
{$endif}
|
||||
property FreeLayerStreamOnFree: Boolean read FFreeLayerStreamOnFree write FFreeLayerStreamOnFree;
|
||||
property IsWritableMedia: Boolean read GetIsWritableMedia;
|
||||
property MountPath: UTF8String read GetMountPath;
|
||||
property RootLayer: TVirtualLayer read GetRootLayer;
|
||||
property ParentLayer: TVirtualLayer read FParentLayer write SetParentLayer;
|
||||
|
||||
Constructor Create(const AVirtualLayerStream: TStream);
|
||||
procedure PrepareDestroy(); virtual;
|
||||
Destructor Destroy(); override;
|
||||
end;
|
||||
{$ifdef FPSUSELCL}
|
||||
function GetIcon(const APath: UTF8String): TIcon;
|
||||
{$endif}
|
||||
|
||||
Constructor Create(const AVirtualLayerStream: TStream);
|
||||
procedure PrepareDestroy(); virtual;
|
||||
Destructor Destroy(); override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
|
@ -67,57 +67,54 @@ uses
|
||||
{.$ifdef FPSUSELCL}
|
||||
Masks,
|
||||
{.$endif}
|
||||
uvirtuallayer_types
|
||||
,uvirtuallayer
|
||||
,uvirtuallayer_ole_helpers
|
||||
,uvirtuallayer_ole_types
|
||||
;
|
||||
uvirtuallayer_types, uvirtuallayer,
|
||||
uvirtuallayer_ole_helpers, uvirtuallayer_ole_types;
|
||||
|
||||
type
|
||||
|
||||
{ TVirtualLayer_wincompound }
|
||||
{ TVirtualLayer_wincompound }
|
||||
|
||||
TVirtualLayer_OLE=class(TVirtualLayer)
|
||||
private
|
||||
procedure UseParameter(const Parameter);
|
||||
procedure SwapEndian_Record(var D: TWCBFStructuredStorageHeader);
|
||||
procedure SwapEndian_Record(var D: TWCBFStructuredStorageDirectoryEntry);
|
||||
Procedure NotImplemented();
|
||||
function ReadData(const Index: integer; const Buffer: PBYTE; const Size: int64): int64;
|
||||
function GetStorageFirstSID(const APath: UTF8String): SID;
|
||||
function GetStreamSID(const APath: UTF8String): SID;
|
||||
function FindFreeOpenFile(): integer;
|
||||
procedure DeleteSIDData(const ASID: SID);
|
||||
function CreateNewSID(const AType: etagSTGTY): SID;
|
||||
procedure InsertInDirectoryTree(const ASID,AMasterSID: SID);
|
||||
OpenedStreams: array of TWCBFOpenStream;
|
||||
FFATIndirect: TFATIndirect;
|
||||
protected
|
||||
function intfGetFreeSpace(const APath: UTF8String): int64; override;
|
||||
function intfIsWritableMedia(): Boolean; override;
|
||||
function intfFindList(const APath: UTF8String; const AMask: UTF8String): TVirtualLayer_FolderList; override;
|
||||
TVirtualLayer_OLE=class(TVirtualLayer)
|
||||
private
|
||||
procedure UseParameter(const Parameter);
|
||||
procedure SwapEndian_Record(var D: TWCBFStructuredStorageHeader);
|
||||
procedure SwapEndian_Record(var D: TWCBFStructuredStorageDirectoryEntry);
|
||||
Procedure NotImplemented();
|
||||
function ReadData(const Index: integer; const Buffer: PBYTE; const Size: int64): int64;
|
||||
function GetStorageFirstSID(const APath: UTF8String): SID;
|
||||
function GetStreamSID(const APath: UTF8String): SID;
|
||||
function FindFreeOpenFile(): integer;
|
||||
procedure DeleteSIDData(const ASID: SID);
|
||||
function CreateNewSID(const AType: etagSTGTY): SID;
|
||||
procedure InsertInDirectoryTree(const ASID,AMasterSID: SID);
|
||||
OpenedStreams: array of TWCBFOpenStream;
|
||||
FFATIndirect: TFATIndirect;
|
||||
protected
|
||||
function intfGetFreeSpace(const APath: UTF8String): int64; override;
|
||||
function intfIsWritableMedia(): Boolean; override;
|
||||
function intfFindList(const APath: UTF8String; const AMask: UTF8String): TVirtualLayer_FolderList; override;
|
||||
|
||||
function intfOpenFile(const AFileName: UTF8String; const AMode: cardinal): TvlHandle; override;
|
||||
function intfCloseFile(const Handle: TvlHandle): Boolean; override;
|
||||
function intfRead(const Handle: TvlHandle; const Buffer: PBYTE; const Size: int64): int64; override;
|
||||
function intfSeek(const AHandle: TvlHandle; const APosition: int64; const Origin: word): int64; override;
|
||||
function intfGetFileSize(const AHandle: TvlHandle): int64; override;
|
||||
//Not implemented....
|
||||
function intfWrite(const Handle: TvlHandle; const Buffer: PBYTE; const Size: int64): int64; override;
|
||||
function intfSetFileSize(const AHandle: TvlHandle; const ANewFileSize: int64): Boolean; override;
|
||||
function intfDeleteFile(const AFileName: UTF8String): boolean; override;
|
||||
function intfMakeFolder(const AFolder: UTF8String): Boolean; override;
|
||||
function intfRemoveFolder(const AFolder: UTF8String): Boolean; override;
|
||||
//..Not implemented
|
||||
function intfOpenFile(const AFileName: UTF8String; const AMode: cardinal): TvlHandle; override;
|
||||
function intfCloseFile(const Handle: TvlHandle): Boolean; override;
|
||||
function intfRead(const Handle: TvlHandle; const Buffer: PBYTE; const Size: int64): int64; override;
|
||||
function intfSeek(const AHandle: TvlHandle; const APosition: int64; const Origin: word): int64; override;
|
||||
function intfGetFileSize(const AHandle: TvlHandle): int64; override;
|
||||
//Not implemented....
|
||||
function intfWrite(const Handle: TvlHandle; const Buffer: PBYTE; const Size: int64): int64; override;
|
||||
function intfSetFileSize(const AHandle: TvlHandle; const ANewFileSize: int64): Boolean; override;
|
||||
function intfDeleteFile(const AFileName: UTF8String): boolean; override;
|
||||
function intfMakeFolder(const AFolder: UTF8String): Boolean; override;
|
||||
function intfRemoveFolder(const AFolder: UTF8String): Boolean; override;
|
||||
//..Not implemented
|
||||
|
||||
FDirectory: array of TWCBFStructuredStorageDirectoryEntry;
|
||||
FDirectory: array of TWCBFStructuredStorageDirectoryEntry;
|
||||
|
||||
procedure AfterConstruction; override;
|
||||
public
|
||||
procedure Format();
|
||||
function Initialize():boolean; override;
|
||||
destructor Destroy(); override;
|
||||
end;
|
||||
procedure AfterConstruction; override;
|
||||
public
|
||||
procedure Format();
|
||||
function Initialize():boolean; override;
|
||||
destructor Destroy(); override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
|
@ -127,7 +127,7 @@ implementation
|
||||
const
|
||||
{ Excel record IDs }
|
||||
INT_EXCEL_ID_BOF = $0809;
|
||||
INT_EXCEL_ID_BOUNDSHEET = $0085;
|
||||
INT_EXCEL_ID_BOUNDSHEET = $0085; // Refered as SHEET in the OpenOffice docs
|
||||
INT_EXCEL_ID_EOF = $000A;
|
||||
INT_EXCEL_ID_DIMENSIONS = $0200;
|
||||
INT_EXCEL_ID_FONT = $0031;
|
||||
@ -455,8 +455,10 @@ end;
|
||||
function TsSpreadBIFF5Writer.WriteBoundsheet(AStream: TStream; ASheetName: string): Int64;
|
||||
var
|
||||
Len: Byte;
|
||||
LatinSheetName: string;
|
||||
begin
|
||||
Len := Length(ASheetName);
|
||||
LatinSheetName := UTF8ToAnsi(ASheetName); // Should actually be UTF-8 to Latin 1 ISO
|
||||
Len := Length(LatinSheetName);
|
||||
|
||||
{ BIFF Record header }
|
||||
AStream.WriteWord(WordToLE(INT_EXCEL_ID_BOUNDSHEET));
|
||||
@ -475,7 +477,7 @@ begin
|
||||
|
||||
{ Sheet name: Byte string, 8-bit length }
|
||||
AStream.WriteByte(Len);
|
||||
AStream.WriteBuffer(ASheetName[1], Len);
|
||||
AStream.WriteBuffer(LatinSheetName[1], Len);
|
||||
end;
|
||||
|
||||
{*******************************************************************
|
||||
|
Reference in New Issue
Block a user