From 9ac1f18a504c384866b88cb73f3124479007109c Mon Sep 17 00:00:00 2001 From: sekelsenmat Date: Fri, 27 May 2011 10:20:53 +0000 Subject: [PATCH] Fixes 18884, error reading biff8 labels written by fpspreadsheet git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1651 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../examples/excel8demo/excel8read.lpi | 18 ++++++++++++------ components/fpspreadsheet/xlsbiff8.pas | 6 ++++-- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/components/fpspreadsheet/examples/excel8demo/excel8read.lpi b/components/fpspreadsheet/examples/excel8demo/excel8read.lpi index 0b51dd708..43f419d9e 100644 --- a/components/fpspreadsheet/examples/excel8demo/excel8read.lpi +++ b/components/fpspreadsheet/examples/excel8demo/excel8read.lpi @@ -1,21 +1,22 @@ + - - - - + + + + @@ -42,11 +43,16 @@ - + - + + + + + + diff --git a/components/fpspreadsheet/xlsbiff8.pas b/components/fpspreadsheet/xlsbiff8.pas index f7f1829b0..0e90836d2 100755 --- a/components/fpspreadsheet/xlsbiff8.pas +++ b/components/fpspreadsheet/xlsbiff8.pas @@ -844,7 +844,7 @@ end; procedure TsSpreadBIFF8Writer.WriteLabel(AStream: TStream; const ARow, ACol: Word; const AValue: string; ACell: PCell); var - L: Word; + L, RecLen: Word; WideValue: WideString; begin WideValue := UTF8Decode(AValue); @@ -861,7 +861,8 @@ begin { BIFF Record header } AStream.WriteWord(WordToLE(INT_EXCEL_ID_LABEL)); - AStream.WriteWord(WordToLE(8 + 1 + L * Sizeof(WideChar))); + RecLen := 8 + 1 + L * Sizeof(WideChar); + AStream.WriteWord(WordToLE(RecLen)); { BIFF Record data } AStream.WriteWord(WordToLE(ARow)); @@ -1332,6 +1333,7 @@ begin { Read the record header } RecordType := WordLEToN(AStream.ReadWord); RecordSize := WordLEToN(AStream.ReadWord); + PendingRecordSize:=RecordSize; CurStreamPos := AStream.Position;