diff --git a/components/fpspreadsheet/examples/excel5demo/excel5write.lpi b/components/fpspreadsheet/examples/excel5demo/excel5write.lpi index b264bb5f2..6fb8ca6eb 100644 --- a/components/fpspreadsheet/examples/excel5demo/excel5write.lpi +++ b/components/fpspreadsheet/examples/excel5demo/excel5write.lpi @@ -2,16 +2,17 @@ - + - + + + <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"/> diff --git a/components/fpspreadsheet/examples/excel5demo/excel5write.lpr b/components/fpspreadsheet/examples/excel5demo/excel5write.lpr index 501423d4d..a4a48a969 100644 --- a/components/fpspreadsheet/examples/excel5demo/excel5write.lpr +++ b/components/fpspreadsheet/examples/excel5demo/excel5write.lpr @@ -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 diff --git a/components/fpspreadsheet/uvirtuallayer.pas b/components/fpspreadsheet/uvirtuallayer.pas index f97d76768..2ae312dae 100644 --- a/components/fpspreadsheet/uvirtuallayer.pas +++ b/components/fpspreadsheet/uvirtuallayer.pas @@ -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 diff --git a/components/fpspreadsheet/uvirtuallayer_ole.pas b/components/fpspreadsheet/uvirtuallayer_ole.pas index aadc3bb78..98140e722 100644 --- a/components/fpspreadsheet/uvirtuallayer_ole.pas +++ b/components/fpspreadsheet/uvirtuallayer_ole.pas @@ -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 diff --git a/components/fpspreadsheet/xlsbiff5.pas b/components/fpspreadsheet/xlsbiff5.pas index 0903d7094..e3d6bc7a0 100755 --- a/components/fpspreadsheet/xlsbiff5.pas +++ b/components/fpspreadsheet/xlsbiff5.pas @@ -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; {*******************************************************************