fpspreadsheet: Fix crash when destroying columns and rows.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2942 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2014-04-17 20:59:00 +00:00
parent 89942f1bd3
commit 8b688de40b
4 changed files with 25 additions and 14 deletions

View File

@ -1,11 +1,10 @@
<?xml version="1.0"?> <?xml version="1.0" encoding="UTF-8"?>
<CONFIG> <CONFIG>
<ProjectOptions> <ProjectOptions>
<Version Value="9"/> <Version Value="9"/>
<PathDelim Value="\"/> <PathDelim Value="\"/>
<General> <General>
<Flags> <Flags>
<AlwaysBuild Value="False"/>
<LRSInOutputDirectory Value="False"/> <LRSInOutputDirectory Value="False"/>
</Flags> </Flags>
<SessionStorage Value="InProjectDir"/> <SessionStorage Value="InProjectDir"/>
@ -45,7 +44,7 @@
</Units> </Units>
</ProjectOptions> </ProjectOptions>
<CompilerOptions> <CompilerOptions>
<Version Value="9"/> <Version Value="11"/>
<PathDelim Value="\"/> <PathDelim Value="\"/>
<SearchPaths> <SearchPaths>
<OtherUnitFiles Value=".."/> <OtherUnitFiles Value=".."/>

View File

@ -29,6 +29,8 @@ var
i: Integer; i: Integer;
lCell: PCell; lCell: PCell;
number: Double; number: Double;
lCol: TCol;
lRow: TRow;
begin begin
MyDir := ExtractFilePath(ParamStr(0)); MyDir := ExtractFilePath(ParamStr(0));
@ -138,6 +140,18 @@ begin
MyWorksheet.WriteUTF8Text(37, 0, 'nfTimeInterval'); MyWorksheet.WriteUTF8Text(37, 0, 'nfTimeInterval');
MyWorksheet.WriteDateTime(37, 1, number, nfTimeInterval); MyWorksheet.WriteDateTime(37, 1, number, nfTimeInterval);
// Set width of columns 1 and 5
lCol.Width := 100; //mm
MyWorksheet.WriteColInfo(1, lCol);
lCol.Width := 50;
MyWorksheet.WriteColInfo(5, lCol);
// Set height of rows 5 and 6
lRow.Height := 10; // mm
MyWorksheet.WriteRowInfo(5, lRow);
lRow.Height := 5;
MyWorksheet.WriteRowInfo(6, lRow);
// Creates a new worksheet // Creates a new worksheet
MyWorksheet := MyWorkbook.AddWorksheet(Str_Worksheet2); MyWorksheet := MyWorkbook.AddWorksheet(Str_Worksheet2);

View File

@ -1212,7 +1212,7 @@ begin
Result := nil; Result := nil;
LElement.Col := ACol; LElement.Col := ACol;
AVLNode := FRows.Find(@LElement); AVLNode := FCols.Find(@LElement);
if Assigned(AVLNode) then if Assigned(AVLNode) then
result := PCol(AVLNode.Data); result := PCol(AVLNode.Data);
end; end;
@ -1249,26 +1249,26 @@ end;
procedure TsWorksheet.RemoveAllRows; procedure TsWorksheet.RemoveAllRows;
var var
Node: TAVGLVLTreeNode; Node: Pointer;
i: Integer; i: Integer;
begin begin
for i := 0 to FRows.Count-1 do for i := FRows.Count-1 downto 0 do
begin begin
Node:=FRows.Items[0]; Node := FRows.Items[i];
FreeMem(PRow(Node.Data)); FreeMem(Node, SizeOf(TRow));
end; end;
FRows.Clear; FRows.Clear;
end; end;
procedure TsWorksheet.RemoveAllCols; procedure TsWorksheet.RemoveAllCols;
var var
Node: TAVGLVLTreeNode; Node: Pointer;
i: Integer; i: Integer;
begin begin
for i := 0 to FCols.Count-1 do for i := FCols.Count-1 downto 0 do
begin begin
Node:=FCols.Items[0]; Node := FCols.Items[i];
FreeMem(PCol(Node.Data)); FreeMem(Node, SizeOf(TCol));
end; end;
FCols.Clear; FCols.Clear;
end; end;
@ -1278,7 +1278,6 @@ var
AElement: PRow; AElement: PRow;
begin begin
AElement := GetRow(ARow); AElement := GetRow(ARow);
AElement^.Height := AData.Height; AElement^.Height := AData.Height;
end; end;
@ -1287,7 +1286,6 @@ var
AElement: PCol; AElement: PCol;
begin begin
AElement := GetCol(ACol); AElement := GetCol(ACol);
AElement^.Width := AData.Width; AElement^.Width := AData.Width;
end; end;