fpspreadsheet: Introduce fpspreadsheet exceptions.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6043 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2017-10-26 08:11:58 +00:00
parent 7e7044bb6f
commit cc891712d0
20 changed files with 109 additions and 107 deletions

View File

@ -117,7 +117,7 @@ begin
PassLen := Length(Password);
if PassLen = 0 then
raise Exception.Create('Password length is zero');
raise EFPSpreadsheet.Create('Password length is zero');
for i:= PassLen downto 1 do
begin

View File

@ -163,7 +163,7 @@ begin
for i:=1 to n do
res := res * i;
Result := FloatResult(res);
except on E:Exception do
except on E:EFPSpreadsheet do
Result := ErrorResult(errOverflow);
end;
end else

View File

@ -135,7 +135,7 @@ begin
Style := TsHeaderFooterFont(AFont).Style;
Color := TsHeaderFooterFont(AFont).Color;
end else
raise Exception.Create('[TsHeaderFooterFont.Assign] Argument can only be a TsFont or a TsHeaderFooterFont');
raise EFPSpreadsheet.Create('[TsHeaderFooterFont.Assign] Argument can only be a TsFont or a TsHeaderFooterFont');
end;
@ -164,9 +164,9 @@ constructor TsHeaderFooterParser.Create(AText: String; AFontList: TList;
ADefaultFont: TsHeaderFooterFont);
begin
if AFontList = nil then
raise Exception.Create('[TsHeaderFooterParser.Create] FontList must not be nil.');
raise EFPSpreadsheet.Create('[TsHeaderFooterParser.Create] FontList must not be nil.');
if ADefaultFont = nil then
raise Exception.Create('[TsHeaderFooterParser.Create] DefaultFont must not be nil.');
raise EFPSpreadsheet.Create('[TsHeaderFooterParser.Create] DefaultFont must not be nil.');
Create;

View File

@ -522,7 +522,7 @@ var
begin
Clear;
if (AHTML[1] <> '<') then // just for simplification
raise Exception.Create('[THTMLAttrList.Parse] HTML tags expected.');
raise EFPSpreadsheet.Create('[THTMLAttrList.Parse] HTML tags expected.');
// Find first space
i := 1;
@ -641,9 +641,9 @@ constructor TsHTMLAnalyzer.Create(AWorkbook: TsWorkbook; AFont: TsFont;
AText: String);
begin
if AWorkbook = nil then
raise Exception.Create('[TsHTMLAnalyzer.Create] Workbook required.');
raise EFPSpreadsheet.Create('[TsHTMLAnalyzer.Create] Workbook required.');
if AFont = nil then
raise Exception.Create('[TsHTMLAnalyzer.Create] Font required.');
raise EFPSpreadsheet.Create('[TsHTMLAnalyzer.Create] Font required.');
inherited Create(AText);
FWorkbook := AWorkbook;

View File

@ -1425,7 +1425,7 @@ begin
AFormatSettings.CurrencyString);
nfShortDateTime, nfShortDate, nfLongDate, nfShortTime, nfLongTime,
nfShortTimeAM, nfLongTimeAM, nfDayMonth, nfMonthYear, nfTimeInterval:
raise Exception.Create('BuildNumberFormatString: Use BuildDateTimeFormatSstring '+
raise EFPSpreadsheet.Create('BuildNumberFormatString: Use BuildDateTimeFormatSstring '+
'to create a format string for date/time values.');
end;
end;

View File

@ -714,7 +714,7 @@ begin
'style:condition="value()&lt;0" />';
{
else
raise Exception.Create('At most 3 format sections allowed.');
raise EFPSpreadsheet.Create('At most 3 format sections allowed.');
}
end
else
@ -2069,7 +2069,7 @@ begin
else if NullDateSetting = '1904-01-01' then
FDateMode := dmODS1904
else
raise Exception.CreateFmt('Spreadsheet file corrupt: cannot handle null-date format %s', [NullDateSetting]);
raise EFPSpreadsheet.CreateFmt('Spreadsheet file corrupt: cannot handle null-date format %s', [NullDateSetting]);
end;
procedure TsSpreadOpenDocReader.ReadDocumentProtection(ANode: TDOMNode);
@ -2492,11 +2492,11 @@ begin
BodyNode := Doc.DocumentElement.FindNode('office:body');
if not Assigned(BodyNode) then
raise Exception.Create('[TsSpreadOpenDocReader.ReadFromStream] Node "office:body" not found.');
raise EFPSpreadsheet.Create('[TsSpreadOpenDocReader.ReadFromStream] Node "office:body" not found.');
SpreadSheetNode := BodyNode.FindNode('office:spreadsheet');
if not Assigned(SpreadSheetNode) then
raise Exception.Create('[TsSpreadOpenDocReader.ReadFromStream] Node "office:spreadsheet" not found.');
raise EFPSpreadsheet.Create('[TsSpreadOpenDocReader.ReadFromStream] Node "office:spreadsheet" not found.');
ReadDocumentProtection(SpreadsheetNode);
ReadDateMode(SpreadSheetNode);
@ -5316,7 +5316,7 @@ begin
stylename := 'co1';
{
if stylename = '' then
raise Exception.Create(rsColumnStyleNotFound);
raise EFPSpreadsheet.Create(rsColumnStyleNotFound);
}
// Determine value for "number-columns-repeated"
@ -7316,7 +7316,7 @@ begin
end;
end;
if styleName = '' then
raise Exception.Create(rsRowStyleNotFound);
raise EFPSpreadsheet.Create(rsRowStyleNotFound);
end;
// No empty rows allowed here for the moment!

View File

@ -287,7 +287,7 @@ var
book: TsWorkbook;
begin
if FWorksheet = nil then
raise Exception.Create('[TsPageLayout.AddHeaderImage] Worksheet is nil.');
raise EFPSpreadsheet.Create('[TsPageLayout.AddHeaderImage] Worksheet is nil.');
book := TsWorksheet(FWorksheet).Workbook;
Result := book.FindEmbeddedObj(AFilename);
if Result = -1 then
@ -315,7 +315,7 @@ var
book: TsWorkbook;
begin
if FWorksheet = nil then
raise Exception.Create('[TsPageLayout.AddHeaderImage] Worksheet is nil.');
raise EFPSpreadsheet.Create('[TsPageLayout.AddHeaderImage] Worksheet is nil.');
book := TsWorksheet(FWorksheet).Workbook;
Result := book.AddEmbeddedObj(AStream);
if Result > -1 then
@ -364,7 +364,7 @@ var
book: TsWorkbook;
begin
if FWorksheet = nil then
raise Exception.Create('[TsPageLayout.AddFooterImage] Worksheet is nil.');
raise EFPSpreadsheet.Create('[TsPageLayout.AddFooterImage] Worksheet is nil.');
book := TsWorksheet(FWorksheet).Workbook;
Result := book.FindEmbeddedObj(AFilename);
if Result = -1 then
@ -392,7 +392,7 @@ var
book: TsWorkbook;
begin
if FWorksheet = nil then
raise Exception.Create('[TsPageLayout.AddFooterImage] Worksheet is nil.');
raise EFPSpreadsheet.Create('[TsPageLayout.AddFooterImage] Worksheet is nil.');
book := TsWorksheet(FWorksheet).Workbook;
Result := book.AddEmbeddedObj(AStream);
if Result > -1 then
@ -472,7 +472,7 @@ begin
if InRange(AIndex, 0, High(FFooters)) then
Result := FFooters[AIndex]
else
raise Exception.Create('[TsPageLayout.GetFooters] Illegal index.');
raise EFPSpreadsheet.Create('[TsPageLayout.GetFooters] Illegal index.');
end;
{@@ ----------------------------------------------------------------------------
@ -525,7 +525,7 @@ begin
if InRange(AIndex, 0, High(FHeaders)) then
Result := FHeaders[AIndex]
else
raise Exception.Create('[TsPageLayout.GetHeaders] Illegal index.');
raise EFPSpreadsheet.Create('[TsPageLayout.GetHeaders] Illegal index.');
end;
{@@ ----------------------------------------------------------------------------
@ -536,7 +536,7 @@ begin
if InRange(AIndex, 0, High(FPrintRanges)) then
Result := FPrintRanges[AIndex]
else
raise Exception.Create('[TsPageLayout.GetPrintRange] Illegal index.');
raise EFPSpreadsheet.Create('[TsPageLayout.GetPrintRange] Illegal index.');
end;
{@@ ----------------------------------------------------------------------------

View File

@ -985,7 +985,7 @@ begin
then Result := readerClass.Create(AWorkbook);
if Result = nil then
raise Exception.Create(rsUnsupportedReadFormat);
raise EFPSpreadsheetReader.Create(rsUnsupportedReadFormat);
end;
{@@ ----------------------------------------------------------------------------
@ -1015,7 +1015,7 @@ begin
Result := writerClass.Create(AWorkbook);
if Result = nil then
raise Exception.Create(rsUnsupportedWriteFormat);
raise EFPSpreadsheetWriter.Create(rsUnsupportedWriteFormat);
end;
{@@ ----------------------------------------------------------------------------
@ -2457,7 +2457,7 @@ begin
if ParseCellString(AddressStr, r, c) then
Result := GetCell(r, c)
else
raise Exception.CreateFmt(rsNoValidCellAddress, [AddressStr]);
raise EFPSpreadsheet.CreateFmt(rsNoValidCellAddress, [AddressStr]);
end;
{@@ ----------------------------------------------------------------------------
@ -3098,7 +3098,7 @@ begin
if calcState = [cfCalculated] then
Result := csCalculated
else
raise Exception.Create('[TsWorksheet.GetCalcState] Illegal cell flags.');
raise EFPSpreadsheet.Create('[TsWorksheet.GetCalcState] Illegal cell flags.');
end;
{@@ ----------------------------------------------------------------------------
@ -4321,7 +4321,7 @@ begin
if ParseCellRangeString(ARange, r1, c1, r2, c2) then
Sort(ASortParams, r1, c1, r2, c2)
else
raise Exception.CreateFmt(rsNoValidCellRangeAddress, [ARange]);
raise EFPSpreadsheet.CreateFmt(rsNoValidCellRangeAddress, [ARange]);
end;
{@@ ----------------------------------------------------------------------------
@ -4409,7 +4409,7 @@ procedure TsWorksheet.Sort(const ASortParams: TsSortParams;
begin
if ContainsMergedCells then
raise Exception.Create(rsCannotSortMerged);
raise EFPSpreadsheet.Create(rsCannotSortMerged);
FSortParams := ASortParams;
if ASortParams.SortByCols then
@ -4811,7 +4811,7 @@ var
nfs: String;
begin
if IsDateTimeFormat(ANumFormat) or IsCurrencyFormat(ANumFormat) then
raise Exception.Create(rsInvalidNumberFormat);
raise EFPSpreadsheet.Create(rsInvalidNumberFormat);
if ACell <> nil then begin
ACell^.ContentType := cctNumber;
@ -4880,10 +4880,10 @@ begin
try
// Format string ok?
if parser.Status <> psOK then
raise Exception.Create(rsNoValidNumberFormatString);
raise EFPSpreadsheet.Create(rsNoValidNumberFormatString);
// Make sure that we do not write a date/time value here
if parser.IsDateTimeFormat
then raise Exception.Create(rsInvalidNumberFormat);
then raise EFPSpreadsheet.Create(rsInvalidNumberFormat);
// If format string matches a built-in format use its format identifier,
// All this is considered when calling Builtin_NumFormat of the parser.
finally
@ -5292,7 +5292,7 @@ var
fmt: TsCellFormat;
begin
if not IsCurrencyFormat(ANumFormat) then
raise Exception.Create('[TsWorksheet.WriteCurrency] ANumFormat can only be nfCurrency or nfCurrencyRed');
raise EFPSpreadsheet.Create('[TsWorksheet.WriteCurrency] ANumFormat can only be nfCurrency or nfCurrencyRed');
if (ACell <> nil) then begin
ACell^.ContentType := cctNumber;
@ -5404,10 +5404,10 @@ begin
try
// Format string ok?
if parser.Status <> psOK then
raise Exception.Create(rsNoValidNumberFormatString);
raise EFPSpreadsheet.Create(rsNoValidNumberFormatString);
// Make sure that we do not use a number format for date/times values.
if not parser.IsDateTimeFormat
then raise Exception.Create(rsInvalidDateTimeFormat);
if not parser.IsDateTimeFormat then
raise EFPSpreadsheet.Create(rsInvalidDateTimeFormat);
// Avoid possible duplication of standard formats
if ANumFormat = nfCustom then
ANumFormat := parser.NumFormat;
@ -5508,7 +5508,7 @@ begin
exit;
if not ((ANumFormat in [nfGeneral, nfCustom]) or IsDateTimeFormat(ANumFormat)) then
raise Exception.Create('WriteDateTimeFormat can only be called with date/time formats.');
raise EFPSpreadsheet.Create('WriteDateTimeFormat can only be called with date/time formats.');
isTextFmt := false;
wasTextFmt := false;
@ -6023,7 +6023,7 @@ begin
if (AFontIndex < 0) or (AFontIndex >= Workbook.GetFontCount) or (AFontIndex = 4) then
// note: Font index 4 is not defined in BIFF
raise Exception.Create(rsInvalidFontIndex);
raise EFPSpreadsheet.Create(rsInvalidFontIndex);
fmt := Workbook.GetCellFormat(ACell^.FormatIndex);
Include(fmt.UsedFormattingFields, uffFont);
@ -7861,7 +7861,7 @@ begin
// Abort if virtual mode is active without an event handler
if (boVirtualMode in FOptions) and not Assigned(FOnReadCellData) then
raise Exception.Create('[TsWorkbook.PrepareBeforeReading] Event handler "OnReadCellData" required for virtual mode.');
raise EFPSpreadsheet.Create('[TsWorkbook.PrepareBeforeReading] Event handler "OnReadCellData" required for virtual mode.');
end;
{@@ ----------------------------------------------------------------------------
@ -7893,7 +7893,7 @@ begin
if Assigned(sheet.OnWriteCellData) then
virtModeOK := true;
if not virtModeOK then
raise Exception.Create('[TsWorkbook.PrepareBeforeWriting] At least one '+
raise EFPSpreadsheet.Create('[TsWorkbook.PrepareBeforeWriting] At least one '+
'sheet must have an event handler "OnWriteCellData" for virtual mode.');
end;
end;
@ -7935,7 +7935,7 @@ begin
suLines:
Result := ptsToMM(GetDefaultFont.Size * (AValue + ROW_HEIGHT_CORRECTION));
else
raise Exception.Create('Unit not supported.');
raise EFPSpreadsheet.Create('Unit not supported.');
end;
// Convert from mm
case AToUnits of
@ -7951,7 +7951,7 @@ begin
suLines:
Result := mmToPts(Result) / GetDefaultFont.Size - ROW_HEIGHT_CORRECTION;
else
raise Exception.Create('Unit not supported.');
raise EFPSpreadsheet.Create('Unit not supported.');
end;
end;
@ -8220,7 +8220,7 @@ procedure TsWorkbook.ReadFromFile(AFileName: string;
AFormat: TsSpreadsheetFormat; AParams: TsStreamParams = []);
begin
if AFormat = sfUser then
raise Exception.Create('[TsWorkbook.ReadFromFile] Don''t call this method for user-provided file formats.');
raise EFPSpreadsheetReader.Create('[TsWorkbook.ReadFromFile] Don''t call this method for user-provided file formats.');
ReadFromFile(AFilename, ord(AFormat), '', AParams);
end;
@ -8238,7 +8238,7 @@ var
ok: Boolean;
begin
if not FileExists(AFileName) then
raise Exception.CreateFmt(rsFileNotFound, [AFileName]);
raise EFPSpreadsheetReader.CreateFmt(rsFileNotFound, [AFileName]);
if AFormatID = sfIDUnknown then begin
ReadFromFile(AFileName, APassword, AParams);
@ -8285,7 +8285,7 @@ var
i: Integer;
begin
if not FileExists(AFileName) then
raise Exception.CreateFmt(rsFileNotFound, [AFileName]);
raise EFPSpreadsheetReader.CreateFmt(rsFileNotFound, [AFileName]);
ext := LowerCase(ExtractFileExt(AFileName));
@ -8310,7 +8310,7 @@ begin
// No file format found for this file --> error
if Length(fileformats) = 0 then
raise Exception.CreateFmt(rsReaderNotFound, [AFileName]);
raise EFPSpreadsheetReader.CreateFmt(rsReaderNotFound, [AFileName]);
// Here is the trial-and-error loop checking for the various formats.
success := false;
@ -8326,7 +8326,7 @@ begin
// The file could not be opened successfully --> Error.
if not success then
raise Exception.CreateFmt(rsInvalidSpreadsheetFile, [AFileName]);
raise EFPSpreadsheetReader.CreateFmt(rsInvalidSpreadsheetFile, [AFileName]);
end;
{@@ ----------------------------------------------------------------------------
@ -8350,7 +8350,7 @@ begin
end;
end;
if not success then
raise Exception.CreateFmt(rsInvalidSpreadsheetFile, [AFileName]);
raise EFPSpreadsheetReader.CreateFmt(rsInvalidSpreadsheetFile, [AFileName]);
end;
{@@ ----------------------------------------------------------------------------
@ -8364,7 +8364,7 @@ procedure TsWorkbook.ReadFromStream(AStream: TStream;
AFormat: TsSpreadsheetFormat; AParams: TsStreamParams = []);
begin
if AFormat = sfUser then
raise Exception.Create('[TsWorkbook.ReadFromFile] Don''t call this method for user-provided file formats.');
raise EFPSpreadsheetReader.Create('[TsWorkbook.ReadFromFile] Don''t call this method for user-provided file formats.');
ReadFromStream(AStream, ord(AFormat), '', AParams);
end;
@ -8421,7 +8421,7 @@ procedure TsWorkbook.WriteToFile(const AFileName: string;
AParams: TsStreamParams = []);
begin
if AFormat = sfUser then
raise Exception.Create('[TsWorkbook.WriteToFile] Don''t call this method for user-provided file formats.');
raise EFPSpreadsheetWriter.Create('[TsWorkbook.WriteToFile] Don''t call this method for user-provided file formats.');
WriteToFile(AFilename, ord(AFormat), AOverwriteExisting, AParams);
end;
@ -8483,7 +8483,7 @@ begin
if Length(fileformats) > 0 then
WriteToFile(AFileName, fileformats[0], AOverwriteExisting, AParams)
else
raise Exception.Create(Format(rsInvalidExtension, [ext]));
raise EFPSpreadsheetWriter.Create(Format(rsInvalidExtension, [ext]));
end;
{@@ ----------------------------------------------------------------------------
@ -8502,7 +8502,7 @@ procedure TsWorkbook.WriteToStream(AStream: TStream; AFormat: TsSpreadsheetForma
AParams: TsStreamParams = []);
begin
if AFormat = sfUser then
raise Exception.Create('[TsWorkbook.WriteToFile] Don''t call this method for user-provided file formats.');
raise EFPSpreadsheet.Create('[TsWorkbook.WriteToFile] Don''t call this method for user-provided file formats.');
WriteToStream(AStream, ord(AFormat), AParams);
end;
@ -8552,7 +8552,7 @@ function TsWorkbook.AddWorksheet(AName: string;
begin
// Check worksheet name
if not ValidWorksheetName(AName, ReplaceDuplicateName) then
raise Exception.CreateFmt(rsInvalidWorksheetName, [AName]);
raise EFPSpreadsheet.CreateFmt(rsInvalidWorksheetName, [AName]);
// Create worksheet...
Result := TsWorksheet.Create;
@ -8852,7 +8852,7 @@ end;
procedure TsWorkbook.SelectWorksheet(AWorksheet: TsWorksheet);
begin
if (AWorksheet <> nil) and (FWorksheets.IndexOf(AWorksheet) = -1) then
raise Exception.Create('[TsWorkbook.SelectSheet] Worksheet does not belong to the workbook');
raise EFPSpreadsheet.Create('[TsWorkbook.SelectSheet] Worksheet does not belong to the workbook');
FActiveWorksheet := AWorksheet;
if FReadWriteFlag = rwfRead then
exit;
@ -9950,7 +9950,7 @@ var
i: Integer;
begin
if APaletteCount > 64 then
raise Exception.Create('Due to Excel-compatibility, palettes cannot have more then 64 colors.');
raise EFPSpreadsheet.Create('Due to Excel-compatibility, palettes cannot have more then 64 colors.');
{$IFOPT R+}
{$DEFINE RNGCHECK}

View File

@ -127,7 +127,7 @@ var
flags: TsRelFlags;
begin
if not ParseCellString(ACellAddress, r, c, flags) then
raise Exception.CreateFmt(rsNoValidCellAddress, [ACellAddress]);
raise EFPSpreadsheet.CreateFmt(rsNoValidCellAddress, [ACellAddress]);
Result := RPNCellValue(r,c, flags, ANext);
end;
@ -167,7 +167,7 @@ var
flags: TsRelFlags;
begin
if not ParseCellString(ACellAddress, r, c, flags) then
raise Exception.CreateFmt(rsNoValidCellAddress, [ACellAddress]);
raise EFPSpreadsheet.CreateFmt(rsNoValidCellAddress, [ACellAddress]);
Result := RPNCellRef(r,c, flags, ANext);
end;
@ -209,7 +209,7 @@ var
flags: TsRelFlags;
begin
if not ParseCellRangeString(ACellRangeAddress, r1,c1, r2,c2, flags) then
raise Exception.CreateFmt(rsNoValidCellRangeAddress, [ACellRangeAddress]);
raise EFPSpreadsheet.CreateFmt(rsNoValidCellRangeAddress, [ACellRangeAddress]);
Result := RPNCellRange(r1,c1, r2,c2, flags, ANext);
end;

View File

@ -94,7 +94,7 @@ begin
crAbort : begin FStopping := true; exit(false); end;
end;
end else
raise Exception.Create('[TsSearchEngine.ExecReplace] OnConfirmReplacement handler needed.');
raise EFPSpreadsheet.Create('[TsSearchEngine.ExecReplace] OnConfirmReplacement handler needed.');
end;
if roReplaceEntireCell in FReplaceParams.Options then

View File

@ -864,6 +864,11 @@ type
TsStreamParam = (spClipboard, spWindowsClipboardHTML);
TsStreamParams = set of TsStreamParam;
{@@ Exception types for fpspreadsheet }
EFpSpreadsheet = class(Exception);
EFpSpreadsheetReader = class(EFpSpreadsheet);
EFpSpreadsheetWriter = class(EFpSpreadsheet);
const
RowHeightTypeNames: array[TsRowHeightType] of string = (
'Default', 'Custom', 'Auto');
@ -877,6 +882,7 @@ const
HEADER_FOOTER_INDEX_EVEN = 2;
HEADER_FOOTER_INDEX_ALL = 1;
implementation
constructor TsFont.Create(AFontName: String; ASize: Single; AStyle: TsFontStyles;

View File

@ -1254,7 +1254,7 @@ var
i: Integer = 0;
begin
if (AValue > MaxInt64) or (AValue < MinInt64) then
raise Exception.Create('Range error');
raise EFPSpreadsheet.Create('Range error');
if abs(AValue) < 0.5 / AMaxDenominator then
begin
@ -1752,7 +1752,7 @@ begin
val(AValue, x, res);
end;
if res <> 0 then
raise Exception.CreateFmt('No valid number or units (%s)', [AValue]);
raise EFPSpreadsheet.CreateFmt('No valid number or units (%s)', [AValue]);
if (units = 'pt') or (units = '') then
Result := x
@ -1766,7 +1766,7 @@ begin
else if units = 'px' then
Result := pxToPts(Round(x), ScreenPixelsPerInch)
else
raise Exception.Create('Unknown length units');
raise EFPSpreadsheet.Create('Unknown length units');
end;
{@@ ----------------------------------------------------------------------------

View File

@ -216,7 +216,7 @@ begin
else
begin
// Error!!!
raise Exception.Create('[TWikiTableTokenizer.TokenizeString] Wrong char!');
raise EFPSpreadsheet.Create('[TWikiTableTokenizer.TokenizeString] Wrong char!');
end;
end;

View File

@ -655,7 +655,7 @@ begin
BIFF2EOF := True;
if not BOFFound then
raise Exception.Create('BOF record not found.');
raise EFPSpreadsheet.Create('BOF record not found.');
end;
FixCols(FWorksheet);
@ -1584,7 +1584,7 @@ begin
FWorksheet := Workbook.GetWorksheetByIndex(FSheetIndex);
if FWorksheet = nil then
raise Exception.Create(rsWorksheetNotFound1);
raise EFPSpreadsheetWriter.Create(rsWorksheetNotFound1);
WriteBOF(AStream);
WriteCodePage(AStream, FCodePage);
@ -1812,9 +1812,9 @@ begin
exit;
if font.FontName = '' then
raise Exception.Create('Font name not specified.');
raise EFPSpreadsheetWriter.Create('Font name not specified.');
if font.Size <= 0.0 then
raise Exception.Create('Font size not specified.');
raise EFPSpreadsheetWriter.Create('Font size not specified.');
lFontName := font.FontName;
Len := Length(lFontName);

View File

@ -1475,7 +1475,7 @@ begin
WriteRangeFormula(memstream, rng, AIndexToRef, j);
end;
end;
else raise Exception.Create('Name not supported');
else raise EFPSpreadsheetWriter.Create('Name not supported');
end; // case
idx := FWorkbook.GetWorksheetIndex(AWorksheet);
@ -1516,7 +1516,7 @@ begin
{ Name }
if (Length(AName) = 1) and (AName[1] < #32) then
AStream.WriteByte(ord(AName[1])) else
raise Exception.Create('Name not supported.');
raise EFPSpreadsheetWriter.Create('Name not supported.');
{ Formula }
memstream.Position := 0;
@ -1584,9 +1584,9 @@ begin
exit;
if AFont.FontName = '' then
raise Exception.Create('Font name not specified.');
raise EFPSpreadsheetWriter.Create('Font name not specified.');
if AFont.Size <= 0.0 then
raise Exception.Create('Font size not specified.');
raise EFPSpreadsheetWriter.Create('Font size not specified.');
Len := Length(AFont.FontName);
@ -1750,7 +1750,7 @@ begin
// Bad formatted UTF8String (maybe ANSI?)
if Length(AValue) <> 0 then begin
//It was an ANSI string written as UTF8 quite sure, so raise exception.
Raise Exception.CreateFmt(rsUTF8TextExpectedButANSIFoundInCell, [
raise EFPSpreadsheetWriter.CreateFmt(rsUTF8TextExpectedButANSIFoundInCell, [
GetCellString(ARow, ACol)
]);
end;
@ -1934,7 +1934,8 @@ var
lsDashDotDot : Result := lsDotted;
lsMediumDashDotDot : Result := lsDashed;
lsSlantDashDot : Result := lsDashed;
else raise Exception.Create('[TsSpreadBIFF5Writer.WriteXF] Linestyle not supported.');
else
raise EFPSpreadsheet.Create('[TsSpreadBIFF5Writer.WriteXF] Linestyle not supported.');
end;
end;

View File

@ -648,7 +648,7 @@ begin
recType := WordLEToN(AStream.ReadWord);
recSize := WordLEToN(AStream.ReadWord);
if recType <> INT_EXCEL_ID_CONTINUE then begin
raise Exception.Create('[TsSpreadBIFF8Reader.ReadWideString] Expected CONTINUE record not found.');
raise EFPSpreadsheetReader.Create('[TsSpreadBIFF8Reader.ReadWideString] Expected CONTINUE record not found.');
end else begin
PendingRecordSize := RecordSize;
DecomprStrValue := copy(DecomprStrValue,1,i) + ReadUnformattedWideString(AStream, ALength-i);
@ -699,7 +699,7 @@ begin
recType := WordLEToN(AStream.ReadWord);
recSize := WordLEToN(AStream.ReadWord);
if recType <> INT_EXCEL_ID_CONTINUE then
raise Exception.Create('[TsSpreadBIFF8Reader.ReadWideString] CONTINUE record expected, but not found.');
raise EFPSpreadsheetReader.Create('[TsSpreadBIFF8Reader.ReadWideString] CONTINUE record expected, but not found.');
PendingRecordSize := recSize;
Result := Result + ReadWideString(AStream, ALength - Length(Result), rtf_dummy);
end else begin
@ -723,7 +723,7 @@ begin
recType := WordLEToN(AStream.ReadWord);
recSize := WordLEToN(AStream.ReadWord);
if recType <> INT_EXCEL_ID_CONTINUE then begin
Raise Exception.Create('[TsSpreadBIFF8Reader.ReadWideString] CONTINUE record expected, but not found.');
Raise EFPSpreadsheetReader.Create('[TsSpreadBIFF8Reader.ReadWideString] CONTINUE record expected, but not found.');
end else begin
PendingRecordSize := recSize;
DecomprStrValue := copy(DecomprStrValue,1,i) + ReadWideString(AStream, ALength-i, ARichTextParams);
@ -742,7 +742,7 @@ begin
recType := WordLEToN(AStream.ReadWord);
recSize := WordLEToN(AStream.ReadWord);
if recType <> INT_EXCEL_ID_CONTINUE then begin
Raise Exception.Create('[TsSpreadBIFF8Reader.ReadWideString] CONTINUE record expected, but not found.');
Raise EFPSpreadsheetReader.Create('[TsSpreadBIFF8Reader.ReadWideString] CONTINUE record expected, but not found.');
end else begin
PendingRecordSize := recSize;
end;
@ -1381,12 +1381,12 @@ begin
//tag and continue linking...
ContinueIndicator := WordLEtoN(AStream.ReadWord);
if ContinueIndicator <> INT_EXCEL_ID_CONTINUE then begin
raise Exception.Create('[TsSpreadBIFF8Reader.ReadSST] Expected CONTINUE record not found.');
raise EFPSpreadsheetReader.Create('[TsSpreadBIFF8Reader.ReadSST] Expected CONTINUE record not found.');
end;
PendingRecordSize := WordLEtoN(AStream.ReadWord);
CurStrLen := Length(UTF8ToUTF16(LString));
if StringLength < CurStrLen then
Exception.Create('[TsSpreadBIFF8Reader.ReadSST] StringLength<CurStrLen');
raise EFPSpreadsheetReader.Create('[TsSpreadBIFF8Reader.ReadSST] StringLength<CurStrLen');
Dec(StringLength, CurStrLen); //Dec the used chars
if StringLength = 0 then break;
end else begin
@ -1436,7 +1436,7 @@ begin
SSTIndex := DWordLEToN(rec.SSTIndex);
if SizeInt(SSTIndex) >= FSharedStringTable.Count then begin
raise Exception.CreateFmt(rsIndexInSSTOutOfRange, [
raise EFPSpreadsheetReader.CreateFmt(rsIndexInSSTOutOfRange, [
Integer(SSTIndex), FSharedStringTable.Count-1
]);
end;
@ -2510,7 +2510,7 @@ begin
end;
end;
else
raise Exception.Create('Name not supported');
raise EFPSpreadsheetWriter.Create('Name not supported');
end; // case
{ BIFF record header }
@ -2549,8 +2549,9 @@ begin
{ Name }
if (Length(AName) = 1) and (AName[1] < #32) then
AStream.WriteWord(WordToLE(ord(AName[1]) shl 8)) else
raise Exception.Create('Name not supported.');
AStream.WriteWord(WordToLE(ord(AName[1]) shl 8))
else
raise EFPSpreadsheetWriter.Create('Name not supported.');
{ Formula }
memstream.Position := 0;
@ -2675,9 +2676,9 @@ begin
exit;
if AFont.FontName = '' then
raise Exception.Create('Font name not specified.');
raise EFPSpreadsheetWriter.Create('Font name not specified.');
if AFont.Size <= 0.0 then
raise Exception.Create('Font size not specified.');
raise EFPSpreadsheetWriter.Create('Font size not specified.');
WideFontName := UTF8Decode(AFont.FontName);
Len := Length(WideFontName);
@ -3087,7 +3088,7 @@ begin
// Badly formatted UTF8String (maybe ANSI?)
if Length(AValue)<>0 then begin
//Quite sure it was an ANSI string written as UTF8, so raise exception.
raise Exception.CreateFmt(rsUTF8TextExpectedButANSIFoundInCell, [GetCellString(ARow, ACol)]);
raise EFPSpreadsheetWriter.CreateFmt(rsUTF8TextExpectedButANSIFoundInCell, [GetCellString(ARow, ACol)]);
end;
Exit;
end;

View File

@ -773,7 +773,7 @@ begin
dm1904:
result := AExcelDateNum + DATEMODE_1904_BASE;
else
raise Exception.CreateFmt('[ConvertExcelDateTimeToDateTime] Unknown datemode %d. Please correct fpspreadsheet source code. ', [ADateMode]);
raise EFPSpreadsheet.CreateFmt('[ConvertExcelDateTimeToDateTime] Unknown datemode %d. Please correct fpspreadsheet source code. ', [ADateMode]);
end;
end;
end;
@ -797,7 +797,7 @@ begin
dm1904:
Result := ADateTime - DATEMODE_1904_BASE;
else
raise Exception.CreateFmt('ConvertDateTimeToExcelDateTime: unknown datemode %d. Please correct fpspreadsheet source code. ', [ADateMode]);
raise EFPSpreadsheet.CreateFmt('ConvertDateTimeToExcelDateTime: unknown datemode %d. Please correct fpspreadsheet source code. ', [ADateMode]);
end;
end;
end;
@ -1561,7 +1561,8 @@ begin
case lBaseMode of
0: FDateMode := dm1900;
1: FDateMode := dm1904;
else raise Exception.CreateFmt('Error reading file. Got unknown date mode number %d.',[lBaseMode]);
else
raise EFPSpreadsheetReader.CreateFmt('Error reading file. Got unknown date mode number %d.',[lBaseMode]);
end;
end;
@ -3017,7 +3018,7 @@ var
begin
// Check if the operation succeeded
if AStream.Size = 0 then
raise Exception.Create('[TsSpreadBIFFReader.InternalReadFromStream] Reading of OLE document failed');
raise EFPSpreadsheetReader.Create('[TsSpreadBIFFReader.InternalReadFromStream] Reading of OLE document failed');
// Rewind the stream and read from it
AStream.Position := 0;
@ -3512,7 +3513,8 @@ begin
case FDateMode of
dm1900: AStream.WriteWord(WordToLE(0));
dm1904: AStream.WriteWord(WordToLE(1));
else raise Exception.CreateFmt('Unknown datemode number %d. Please correct fpspreadsheet code.', [FDateMode]);
else
raise EFPSpreadsheetReader.CreateFmt('Unknown datemode number %d. Please correct fpspreadsheet code.', [FDateMode]);
end;
end;

View File

@ -300,7 +300,7 @@ procedure WriteMSOSpGrContainer(AStream: TStream; ASize: DWord);
implementation
uses
fpsutils;
fpstypes, fpsutils;
type
TsMSOHeader = packed record
@ -418,7 +418,7 @@ end;
procedure WriteMSOFdgRecord(AStream: TStream; ANumShapes, ADrawingID, ALastObjID: Word);
begin
if ADrawingID > $0FFE then
raise Exception.CreateFmt('[WriteMSOFdgRecord] Invalid drawing identifier $%.4x', [ADrawingID]);
raise EFpSpreadsheet.CreateFmt('[WriteMSOFdgRecord] Invalid drawing identifier $%.4x', [ADrawingID]);
WriteMSOHeader(AStream, MSO_ID_OFFICEART_FDG, 0, ADrawingID, 8);
AStream.WriteDWord(DWordToLE(ANumShapes));
AStream.WriteDWord(DWordToLE(ALastObjID));

View File

@ -154,7 +154,7 @@ begin
cctBool : Result := 'Boolean';
cctError : Result := 'Error';
else
raise Exception.Create('Content type error in cell ' + GetCellString(ACell^.Row, ACell^.Col));
raise EFPSpreadsheet.Create('Content type error in cell ' + GetCellString(ACell^.Row, ACell^.Col));
end;
end;
@ -562,7 +562,7 @@ begin
haCenter : fmtHor := 'ss:Horizontal="Center" ';
haRight : fmtHor := 'ss:Horizontal="Right" ';
else
raise Exception.Create('[TsSpreadXMLWriter.WriteStyle] Horizontal alignment cannot be handled.');
raise EFPSpreadsheetWriter.Create('[TsSpreadXMLWriter.WriteStyle] Horizontal alignment cannot be handled.');
end;
// Vertical alignment
@ -574,7 +574,7 @@ begin
vaCenter : fmtVert := 'ss:Vertical="Center" ';
vaBottom : ;
else
raise Exception.Create('[TsSpreadXMLWriter.WriteStyle] Vertical alignment cannot be handled.');
raise EFPSpreadsheetWriter.Create('[TsSpreadXMLWriter.WriteStyle] Vertical alignment cannot be handled.');
end;
// Wrap text

View File

@ -785,9 +785,9 @@ begin
else if dataStr = '#N/A' then
AWorksheet.WriteErrorValue(cell, errArgError)
else
raise Exception.Create(rsUnknownErrorType);
raise EFPSpreadsheetReader.Create(rsUnknownErrorType);
end else
raise Exception.Create(rsUnknownDataType);
raise EFPSpreadsheetReader.Create(rsUnknownDataType);
if FIsVirtualMode then
Workbook.OnReadCellData(Workbook, rowIndex, colIndex, cell);
@ -2408,7 +2408,7 @@ begin
XMLStream := CreateXMLStream;
try
if not UnzipToStream(AStream, OOXML_PATH_XL_WORKBOOK, XMLStream) then
raise Exception.CreateFmt(rsDefectiveInternalFileStructure, ['xlsx']);
raise EFPSpreadsheetReader.CreateFmt(rsDefectiveInternalFileStructure, ['xlsx']);
ReadXMLStream(Doc, XMLStream);
ReadFileVersion(Doc.DocumentElement.FindNode('fileVersion'));
ReadDateMode(Doc.DocumentElement.FindNode('workbookPr'));
@ -2553,7 +2553,7 @@ begin
XMLStream := CreateXMLStream;
try
if not UnzipToStream(AStream, OOXML_PATH_XL_WORKBOOK, XMLStream) then
raise Exception.CreateFmt(rsDefectiveInternalFileStructure, ['xlsx']);
raise EFPSpreadsheetReader.CreateFmt(rsDefectiveInternalFileStructure, ['xlsx']);
ReadXMLStream(Doc, XMLStream);
ReadDefinedNames(Doc.DocumentElement.FindNode('definedNames'));
FreeAndNil(Doc);
@ -2566,14 +2566,6 @@ begin
end;
end;
(*
procedure TsSpreadOOXMLReader.ReadFromStream(AStream: TStream);
begin
Unused(AStream);
raise Exception.Create('[TsSpreadOOXMLReader.ReadFromStream] '+
'Method not implemented. Use "ReadFromFile" instead.');
end;
*)
{------------------------------------------------------------------------------}
{ TsSpreadOOXMLWriter }