Display numbers in grid problem
[ DelphiLand FAQ ] [ Delphi Tutorials -- by DelphiLand ]
Posted by Robert on October 12, 2004 at 22:33:24:
I'm using a TStringGrid to display numeric data of a matrix from a textfile. There's a problem when passing the numeric values, using FloatToStr to show them in the grid, it is that all the zeros that are after the decimal comma are not shown in the grid. When saving the content of matriz the problem is not observed. Matriz^(i,j) is a pointer defined in another unit. I would like that decimal part to be of the same longitude in all the numbers so that the alignment has better aspect in the grid. This is the content in a file of data: 4 4 10.0000800 22.1120000 1.0030000 2.0009000 111.0021000 2.0001000 3.3340000 -4.5620100 1.3900100 44.1111000 5.1150000 3.0001200 1.2000100 5.5555000 6.2230000 3.3308040 and this is what is observed in the grid 10.00008 22.112 1.003 2.0009 111.0021 2.0001 3.334 -4.56201 1.39001 44.1111 5.115 3.00012 1.20001 5.5555 6.223 3.330804 This is a part of the code procedure SaveStringGrid(StringGrid: TStringGrid; const FileName: TFileName); var f : Text; i, j, dimen1, dimen2 : Integer; begin New(MATRIX); AssignFile(f, FileName); Rewrite(f); with StringGrid do begin dimen1:=RowCount-1; dimen2:=ColCount-1; for i := 1 to ColCount do for j := 1 to RowCount do MATRIX^[i,j]:= strToFloat(Cells[j, i]); end; writeln(f,dimen1); writeln(f,dimen2); for i:=1 to dimen1 do begin for j:=1 to dimen2 do begin write(f,MATRIX^[i,j]); end; writeln(f); end; Close(f); Dispose (MATRIX); end; procedure LoadStringGrid(StringGrid: TStringGrid; const FileName: TFileName); var f : Text; dimen1,dimen2,i,j,k : Integer; temp0 : float; begin New(MATRIX); AssignFile(f, FileName); Reset(f); readln(f,dimen1); readln(f,dimen2); for i:=1 to dimen1 do begin for k:=1 to dimen2 do begin read(f,temp0); MATRIX^[i,k]:=temp0; end; ReadLn(f); end; with StringGrid do begin RowCount := dimen1+1; // Get number of rows and columns ColCount := dimen2+1; for i := 1 to ColCount do // loop through cells & fill in values for k := 1 to RowCount do begin Cells[i, k]:= FloatToStr(MATRIX^[k, i]); end; end; Close(f); Dispose(MATRIX); end; Thanks very much Robert
Related Articles and Replies
[ Delphi Forum -- by DelphiLand ] [ Delphi Tutorials -- by DelphiLand ]
|