Răsfoiți Sursa

+ Added float - string conversion examples

michael 23 ani în urmă
părinte
comite
cdf2d7408e
5 a modificat fișierele cu 127 adăugiri și 2 ștergeri
  1. 2 2
      docs/sysutex/Makefile
  2. 3 0
      docs/sysutex/README
  3. 45 0
      docs/sysutex/ex89.pp
  4. 40 0
      docs/sysutex/ex90.pp
  5. 37 0
      docs/sysutex/ex91.pp

+ 2 - 2
docs/sysutex/Makefile

@@ -39,7 +39,7 @@ OBJECTS=ex1 ex2 ex3 ex4 ex5 ex6 ex7 ex8 ex9 ex10 ex11 ex12\
         ex48 ex49 ex50 ex51 ex52 ex53 ex54 ex55 ex56 ex57 ex58\
         ex59 ex60 ex61 ex62 ex63 ex64 ex65 ex66 ex67 ex68 ex69 ex70\
         ex71 ex72 ex73 ex74 ex75 ex76 ex77 ex78 ex79 ex80 \
-        ex81 ex82 ex83 ex84 ex85 ex86 ex87 ex88
+        ex81 ex82 ex83 ex84 ex85 ex86 ex87 ex88 ex89 ex90 ex91
         
 # This might not be the same list as objects, since some of the
 # tests might be interactive.
@@ -50,7 +50,7 @@ TOTEST=ex1 ex2 ex3 ex4 ex5 ex6 ex7 ex8 ex9 ex10 ex11 ex12\
         ex48 ex49 ex50 ex51 ex52 ex53 ex54 ex55 ex56 ex57 ex58\
         ex59 ex60 ex61 ex62 ex63 ex64 ex65 ex66 ex67 ex68 ex69 ex70\
         ex72 ex73 ex74 ex75 ex76 ex77 ex78 ex79 ex80 \
-        ex81 ex82 ex83 ex84 ex85 ex86 ex87 ex88
+        ex81 ex82 ex83 ex84 ex85 ex86 ex87 ex88 ex89 ex90 ex91
 
 LOGFILE=$(addsuffix .log, $(TOTEST))
         

+ 3 - 0
docs/sysutex/README

@@ -89,3 +89,6 @@ ex86.pp contains an example of the TrimRight function.
 ex87.pp contains an example of the UpperCase function.
 ex88.pp contains an example of the LastDelimiter function.
 
+ex89.pp contains an example of the FormatFloat function.
+ex90.pp contains an example of the StrToFloat function.
+ex91.pp contains an example of the TextToFloat function.

+ 45 - 0
docs/sysutex/ex89.pp

@@ -0,0 +1,45 @@
+Program Example89;
+
+{ This program demonstrates the FormatFloat function }
+
+Uses sysutils;
+
+Const
+  NrFormat=9;
+  FormatStrings : Array[1..NrFormat] of string = (
+        '',
+ 	'0',
+ 	'0.00',
+ 	'#.##',
+ 	'#,##0.00',
+ 	'#,##0.00;(#,##0.00)',
+ 	'#,##0.00;;Zero',
+ 	'0.000E+00',
+ 	'#.###E-0');
+  NrValue = 5;
+  FormatValues : Array[1..NrValue] of Double =
+    (1234,-1234,0.5,0,-0.5);
+  
+  Width  = 12;  
+  FWidth = 20;
+  
+Var
+  I,J : Integer;
+  S : String;
+
+begin
+  Write('Format':FWidth);
+  For I:=1 to NrValue do
+    Write(FormatValues[i]:Width:2);
+  Writeln;
+  For I:=1 to NrFormat do
+    begin
+    Write(FormatStrings[i]:FWidth);
+    For J:=1 to NrValue do
+      begin
+      S:=FormatFloat(FormatStrings[I],FormatValues[j]);
+      Write(S:Width);
+      end;
+    Writeln;   
+    end;    
+End.

+ 40 - 0
docs/sysutex/ex90.pp

@@ -0,0 +1,40 @@
+Program Example90;
+
+{ This program demonstrates the StrToFloat function }
+{$mode objfpc}
+{$h+ }
+
+Uses SysUtils;
+
+Const 
+  NrValues = 5;
+  TestStr : Array[1..NrValues] of string = 
+           ('1,1','-0,2','1,2E-4','0','1E4');
+
+Procedure Testit;
+
+Var
+  I : Integer;
+  E : Extended;
+  
+begin
+  Writeln('Using DecimalSeparator : ',DecimalSeparator);
+  For I:=1 to NrValues do
+    begin
+    Writeln('Converting : ',TestStr[i]);
+    Try
+      E:=StrToFloat(TestStr[i]);
+      Writeln('Converted value : ',E);
+    except
+      On E : Exception do
+        Writeln('Exception when converting : ',E.Message);
+    end;
+    end;
+end;
+
+Begin
+  DecimalSeparator:=',';
+  Testit;
+  DecimalSeparator:='.';
+  Testit;
+End.

+ 37 - 0
docs/sysutex/ex91.pp

@@ -0,0 +1,37 @@
+Program Example91;
+
+{ This program demonstrates the TextToFloat function }
+{$mode objfpc}
+{$h+ }
+
+Uses SysUtils;
+
+Const 
+  NrValues = 5;
+  TestStr : Array[1..NrValues] of pchar = 
+           ('1,1','-0,2','1,2E-4','0','1E4');
+
+Procedure Testit;
+
+Var
+  I : Integer;
+  E : Extended;
+  
+begin
+  Writeln('Using DecimalSeparator : ',DecimalSeparator);
+  For I:=1 to NrValues do
+    begin
+    Writeln('Converting : ',TestStr[i]);
+    If TextToFloat(TestStr[i],E) then
+      Writeln('Converted value : ',E)
+    else
+      Writeln('Unable to convert value.');
+    end;
+end;
+
+Begin
+  DecimalSeparator:=',';
+  Testit;
+  DecimalSeparator:='.';
+  Testit;
+End.