home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 11 / CD_ASCQ_11_0294.iso / maj / 558 / example4.pas < prev    next >
Pascal/Delphi Source File  |  1993-12-18  |  5KB  |  171 lines

  1. {$V-,N+,E+,X+}
  2.  
  3. { EXAMPLE4.PAS - demonstrate Btrieve data conversion routines
  4.  
  5.   Requires Turbo Pascal version 6.0, 7.0
  6. }
  7.  
  8. USES
  9.   {$IFDEF WINDOWS}
  10.   WinCrt,
  11.   {$ELSE}
  12.   Crt,
  13.   {$ENDIF}
  14.   {$IFDEF VER70}
  15.   WinDos,
  16.   {$ELSE}
  17.   Dos,
  18.   {$ENDIF}
  19.   BtvConst,
  20.   Btv,
  21.   BtvType;
  22.  
  23.  
  24. TYPE
  25.   DataRec = record
  26.     Str   : Array[1..25] of Char;
  27.     Ch    : Char;
  28.     Int2  : Integer;
  29.     Int4  : LongInt;
  30.     Flt4  : Single;
  31.     Flt8  : Double;
  32.     Date  : BDateRec;
  33.     Time  : BTimeRec;
  34.     Dec6  : Array[1..6] of Byte;
  35.     Dec10 : Array[1..10] of Byte;
  36.     Mony2 : Array[1..2] of Byte;
  37.     Mony10: Array[1..10] of Byte;
  38.     Logic1: Byte;
  39.     Logic2: Word;
  40.     Num1  : Char;
  41.     Num4  : Array[1..4] of Char;
  42.     Num9  : Array[1..9] of Char;
  43.     BFlt4 : Array[1..4] of Byte;
  44.     BFlt8 : Array[1..8] of Byte;
  45.     LStr  : String[15];
  46.     ZStr  : Array[1..10] of Char;
  47.     Auto  : Word;
  48.   end;
  49.  
  50.  
  51. VAR
  52.   F   : BtrieveFile;
  53.   Dat : DataRec;
  54.   Tmp : String;
  55.  
  56.  
  57. Procedure CheckIO;
  58.   begin
  59.     if (F.bResult <> bOkay) and (F.bResult <> bEOF) then
  60.     begin
  61.       Writeln('ERROR #', F.bResult);
  62.       Halt;
  63.     end;
  64.   end;
  65.  
  66.  
  67. BEGIN
  68.   { this file has a field of each Btrieve type }
  69.   F.Init('TYPES.DAT', nil, @Dat, SizeOf(Dat));
  70.   F.Open(bNormal, '');
  71.   CheckIO;
  72.  
  73.   F.Get(bStepFirst, bNoLock);
  74.  
  75.   While (F.bResult = bOkay) do
  76.   begin
  77.     ClrScr;
  78.  
  79.     with Dat do
  80.     begin
  81.       { Convert to strings, then convert from the string to the type and
  82.         display both values for comparison
  83.       }
  84.       Tmp := StringToStr(Str, SizeOf(Str));
  85.       StrToString(Tmp, Str);
  86.       Writeln('STRING   : [', Tmp, ']  [', StringToStr(Str, SizeOf(Str)), ']');
  87.  
  88.       Tmp := StringToStr(Ch, SizeOf(Ch));
  89.       StrToString(Tmp, Ch);
  90.       Writeln('CHAR     : [', Tmp, ']  [', StringToStr(Ch, SizeOf(Ch)), ']');
  91.  
  92.       Tmp := IntegerToStr(Int2, SizeOf(Int2), 5);
  93.       StrToInteger(Tmp, Int2, SizeOf(Int2));
  94.       Writeln('INTEGER  : [', Tmp, ']  [', IntegerToStr(Int2, SizeOf(Int2), 5), ']');
  95.  
  96.       Tmp := IntegerToStr(Int4, SizeOf(Int4), 8);
  97.       StrToInteger(Tmp, Int4, SizeOf(Int4));
  98.       Writeln('INTEGER  : [', Tmp, ']  [', IntegerToStr(Int4, SizeOf(Int4), 8), ']');
  99.  
  100.       Tmp := DecimalToStr(Dec6, SizeOf(Dec6));
  101.       StrToDecimal(Tmp, Dec6, SizeOf(Dec6));
  102.       Writeln('DECIMAL  : [', Tmp, ']  [', DecimalToStr(Dec6, SizeOf(Dec6)), ']');
  103.  
  104.       Tmp := DecimalToStr(Dec10, SizeOf(Dec10));
  105.       StrToDecimal(Tmp, Dec10, SizeOf(Dec10));
  106.       Writeln('DECIMAL  : [', Tmp, ']  [', DecimalToStr(Dec10, SizeOf(Dec10)), ']');
  107.  
  108.       Tmp := NumericToStr(Num1, SizeOf(Num1));
  109.       StrToNumeric(Tmp, Num1, SizeOf(Num1));
  110.       Writeln('NUMERIC  : [', Tmp, ']  [', NumericToStr(Num1, SizeOf(Num1)), ']');
  111.  
  112.       Tmp := NumericToStr(Num4, SizeOf(Num4));
  113.       StrToNumeric(Tmp, Num4, SizeOf(Num4));
  114.       Writeln('NUMERIC  : [', Tmp, ']  [', NumericToStr(Num4, SizeOf(Num4)), ']');
  115.  
  116.       Tmp := NumericToStr(Num9, SizeOf(Num9));
  117.       StrToNumeric(Tmp, Num9, SizeOf(Num9));
  118.       Writeln('NUMERIC  : [', Tmp, ']  [', NumericToStr(Num9, SizeOf(Num9)), ']');
  119.  
  120.       Tmp := BFloatToStr(BFlt4, SizeOf(BFlt4), 8,3);
  121.       StrToBFloat(Tmp, BFlt4, SizeOf(BFlt4));
  122.       Writeln('BFLOAT    : [', Tmp, ']  [', BFloatToStr(BFlt4, SizeOf(BFlt4), 8,2), ']');
  123.  
  124.       Tmp := BFloatToStr(BFlt8, SizeOf(BFlt8), 8,2);
  125.       StrToBFloat(Tmp, BFlt8, SizeOf(BFlt8));
  126.       Writeln('BFLOAT    : [', Tmp, ']  [', BFloatToStr(BFlt8, SizeOf(BFlt8), 8,2), ']');
  127.  
  128.       Tmp := DecimalToStr(Mony2, SizeOf(Mony2));
  129.       StrToDecimal(Tmp, Mony2, SizeOf(Mony2));
  130.       Writeln('MONEY    : [', Tmp, ']  [', DecimalToStr(Mony2, SizeOf(Mony2)), ']');
  131.  
  132.       Tmp := DecimalToStr(Mony10, SizeOf(Mony10));
  133.       StrToDecimal(Tmp, Mony10, SizeOf(Mony10));
  134.       Writeln('MONEY    : [', Tmp, ']  [', DecimalToStr(Mony10, SizeOf(Mony10)), ']');
  135.  
  136.       Writeln('DATE     : [', DateToStr(Date), ']');
  137.  
  138.       Writeln('TIME     : [', TimeToStr(Time), ']');
  139.  
  140.       Tmp := FloatToStr(Flt4, SizeOf(Flt4), 8, 2);
  141.       StrToFloat(Tmp, Flt4, SizeOf(Flt4));
  142.       Writeln('FLOAT    : [', Tmp, ']  [', FloatToStr(Flt4, SizeOf(Flt4), 8, 2), ']');
  143.  
  144.       Tmp := FloatToStr(Flt8, SizeOf(Flt8), 8, 2);
  145.       StrToFloat(Tmp, Flt8, SizeOf(Flt8));
  146.       Writeln('FLOAT    : [', Tmp, ']  [', FloatToStr(Flt8, SizeOf(Flt8), 8, 2), ']');
  147.  
  148.       Tmp := LStringToStr(LStr);
  149.       StrToLString(Tmp, LStr);
  150.       Writeln('LSTRING  : [', Tmp, ']  [', LStringToStr(LStr), ']');
  151.  
  152.       Tmp := ZStringToStr(ZStr);
  153.       StrToZString(Tmp, ZStr);
  154.       Writeln('ZSTRING  : [', Tmp, ']  [', ZStringToStr(ZStr), ']');
  155.  
  156.       Writeln('LOGICAL  : [', LogicalToStr(Logic1, SizeOf(Logic1)), ']');
  157.  
  158.       Writeln('LOGICAL  : [', LogicalToStr(Logic2, SizeOf(Logic2)), ']');
  159.     end;
  160.  
  161.     Writeln;
  162.     Writeln('Press a KEY ...');
  163.     ReadKey;
  164.     F.Get(bStepNext, bNoLock);
  165.   end;
  166.  
  167.   CheckIO;
  168.  
  169.   F.Close;
  170. END.
  171.