Changeset 514 for BigInt/UFormMain.pas


Ignore:
Timestamp:
Apr 26, 2018, 1:07:22 PM (6 years ago)
Author:
chronos
Message:
  • Modified: Updated BigInt classes for Int128 a UInt128.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • BigInt/UFormMain.pas

    r505 r514  
    11unit UFormMain;
    22
    3 {$mode objfpc}{$H+}
     3{$mode delphi}{$H+}
    44
    55interface
    66
    77uses
    8   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, UInt128;
     8  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
     9  ComCtrls, UInt128;
    910
    1011type
     
    1314
    1415  TFormMain = class(TForm)
    15     Memo1: TMemo;
     16    ListView1: TListView;
    1617    procedure FormShow(Sender: TObject);
    1718  private
     19    procedure TestInt128;
    1820
    1921  public
    20 
     22    procedure AddTest(Name: string; Result: Boolean; Value: string);
    2123  end;
    2224
     
    3032{ TFormMain }
    3133
    32 procedure TFormMain.FormShow(Sender: TObject);
     34procedure TFormMain.TestInt128;
    3335var
    3436  A, B, C: Int128;
    35   X: Int64;
    3637begin
    37   A := 10;
     38  ListView1.Items.Clear;
     39  A := 123456789;
     40  AddTest('IntToHex(123456789)', IntToHex(A, 16) = '00000000075BCD15', IntToHex(A, 16));
     41  AddTest('IntToStr(123456789)', IntToStr(A) = '123456789', IntToStr(A));
     42  A := 21;
     43  B := 33;
     44  C := A + B;
     45  AddTest(IntToStr(A) + ' + ' + IntToStr(B), C = 54, IntToStr(C));
     46  C := A * B;
     47  AddTest(IntToStr(A) + ' * ' + IntToStr(B), C = 693, IntToStr(C));
     48  A := 30;
    3849  B := 10;
    39   C := A + B;
    40   X := $12345678;
    41   Memo1.Lines.Add('X: ' + IntToHex(X, 8));
    42   Memo1.Lines.Add(IntToStr(C));
    43   Memo1.Lines.Add(IntToHex(C, 0));
     50  C := A div B;
     51  AddTest(IntToStr(A) + ' div ' + IntToStr(B), C = 3, IntToStr(C));
     52  A := $1234567812345678;
     53  B := 31;
     54  C := A shr B;
     55  AddTest(IntToStr(A) + ' shr ' + IntToStr(B), C = 610839792, IntToStr(C));
     56  A := 100000000000;
     57  C := -A;
     58  AddTest('-' + IntToStr(A), C = -100000000000, IntToStr(C));
     59end;
     60
     61procedure TFormMain.AddTest(Name: string; Result: Boolean; Value: string);
     62var
     63  ListItem: TListItem;
     64begin
     65  ListItem := ListView1.Items.Add;
     66  ListItem.Caption := Name;
     67  if Result then ListItem.SubItems.Add('Passed')
     68    else ListItem.SubItems.Add('Failed');
     69  ListItem.SubItems.Add(Value);
     70end;
     71
     72procedure TFormMain.FormShow(Sender: TObject);
     73begin
     74  ListView1.Items.Clear;
     75  TestInt128;
    4476end;
    4577
Note: See TracChangeset for help on using the changeset viewer.