From fce1ea9409404cb9de0e384702ba35b49528baeb Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Wed, 23 Jul 2014 21:09:47 +0000 Subject: [PATCH] fpspreadsheet: In fpolebasic manually delete an existing file before writing; this seems to fix a crash with Linux. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3367 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../fpspreadsheet/examples/excel8demo/excel8write.lpi | 9 +++++++++ components/fpspreadsheet/fpolebasic.pas | 7 ++++++- components/fpspreadsheet/fpspreadsheet.pas | 6 +++--- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/components/fpspreadsheet/examples/excel8demo/excel8write.lpi b/components/fpspreadsheet/examples/excel8demo/excel8write.lpi index 733107628..cbe3f4022 100644 --- a/components/fpspreadsheet/examples/excel8demo/excel8write.lpi +++ b/components/fpspreadsheet/examples/excel8demo/excel8write.lpi @@ -44,6 +44,9 @@ + + + @@ -71,6 +74,9 @@ + + + @@ -115,5 +121,8 @@ + + + diff --git a/components/fpspreadsheet/fpolebasic.pas b/components/fpspreadsheet/fpolebasic.pas index 1996e9d2d..051fffe54 100644 --- a/components/fpspreadsheet/fpolebasic.pas +++ b/components/fpspreadsheet/fpolebasic.pas @@ -57,7 +57,12 @@ var tmpStream: TStream; // workaround to a compiler bug, see bug 22370 begin VLAbsolutePath:='/'+AStreamName; //Virtual layer always use absolute paths. - if not AOverwriteExisting and FileExists(AFileName) then begin + if FileExists(AFileName) then begin + if AOverwriteExisting then + DeleteFile(AFileName) + // In Ubuntu is seems that fmCreate does not erase an existing file. + // Therefore we delete it manually. + else Raise EStreamError.Createfmt('File "%s" already exists.',[AFileName]); end; RealFile:=TFileStream.Create(AFileName,fmCreate); diff --git a/components/fpspreadsheet/fpspreadsheet.pas b/components/fpspreadsheet/fpspreadsheet.pas index e0fdca383..c6a4cf151 100755 --- a/components/fpspreadsheet/fpspreadsheet.pas +++ b/components/fpspreadsheet/fpspreadsheet.pas @@ -14,6 +14,9 @@ unit fpspreadsheet; interface uses + {$IFDEF UNIX} + clocale, + {$ENDIF} Classes, SysUtils, fpimage, AVL_Tree, avglvltree, lconvencoding; type @@ -1094,9 +1097,6 @@ procedure InitCell(var ACell: TCell); implementation uses - {$IFDEF UNIX} - clocale, - {$ENDIF} Math, StrUtils, TypInfo, fpsStreams, fpsUtils, fpsNumFormatParser, fpsFunc; { Translatable strings }