+62 812-1171-5379 Fast Respond

Tips dan Trik Delphi - Matematika

Ceil Delphi untuk penggajian / Matematika / Windows Android / Delphi 7 - XE
Var Nilai_awal_temp, Nilai_awal_temp1, Nilai_awal_temp2, Simpanan : Integer;
    Nilai_awal_str1, Nilai_awal_str2 : String;
    Tambahan : String;
    Hasil, Simpanan_STR : String;

FunCtion Strkeint(Str:String):integer;
begin
    if str='' Then
       result:=0 else
    begin
       try
          result:=strtoint(str);
       Except
          Result:=0;
       end;
    end;
end;

function MakeNDigit(myVal:String; myLen:byte):String;
var
  vlTempVal: String;
  vlCount, vlNewDigit: Byte;
begin
    vlNewDigit := 0;
    vlTempVal := myVal;
    if length(vlTempVal) >= myLen then
       result := vlTempVal
    else
    vlNewDigit := myLen-Length(vlTempVal);
    for vlCount := 1 to vlNewDigit do
        vlTempVal := '0'+vlTempVal;
    result := vlTempVal;
end;

Function Ceil_Gaji(Nilai_awal, Nilai_bulat : Integer) : Integer;
Begin
     Result := 0;
     Nilai_awal_str1 :=''; Nilai_awal_str2 := '';
     Nilai_awal_temp := Trunc(Nilai_awal);
     Nilai_awal_str1 := LeftStr(inttostr(Nilai_awal_temp),
                        length(inttostr(Nilai_awal_temp)) - length(inttostr(Nilai_bulat)));

     Nilai_awal_str2 := RightStr(inttostr(Nilai_awal_temp),
                        length(inttostr(Nilai_bulat)));

     Nilai_awal_temp1 := Strkeint(Nilai_awal_str1);
     Nilai_awal_temp2 := Strkeint(Nilai_awal_str2);

     Tambahan := MakeNDigit('', length(inttostr(Nilai_bulat)));

     if Nilai_awal_temp2 = 0 Then
     Begin
          hasil := Nilai_awal_str1 + (Tambahan);
          Result := Strkeint(hasil);
     End else
     if Nilai_awal_temp2 < Nilai_bulat Then
     Begin
          hasil := Nilai_awal_str1 + inttostr(Nilai_bulat);
          Result := Strkeint(hasil);
     End else
     if Nilai_awal_temp2 > Nilai_bulat Then
     Begin
          Simpanan_STR := Nilai_awal_str1 + (Tambahan);
          Simpanan := Strkeint(Simpanan_STR);
          Result := Simpanan + (Nilai_bulat + Nilai_bulat)
     End;
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
     Edit3.Text := inttostr(Ceil_Gaji(Strkeint(Edit1.text), Strkeint(Edit2.text)));
end;

Floor delphi untuk pembulatan gaji / Matematika / Windows / Delphi 7 - XE
FunCtion Strkeint(Str:String):integer;
begin
    if str='' Then
       result:=0 else
    begin
       try
          result:=strtoint(str);
       Except
          Result:=0;
       end;
    end;
end;

function MakeNDigit(myVal:String; myLen:byte):String;
var
  vlTempVal: String;
  vlCount, vlNewDigit: Byte;
begin
    vlNewDigit := 0;
    vlTempVal := myVal;
    if length(vlTempVal) >= myLen then
       result := vlTempVal
    else
    vlNewDigit := myLen-Length(vlTempVal);
    for vlCount := 1 to vlNewDigit do
        vlTempVal := '0'+vlTempVal;
    result := vlTempVal;
end;

Function Floor_Gaji(Nilai_awal, Nilai_bulat : Integer) : Integer;
Var Nilai_awal_temp, Nilai_awal_temp1, Nilai_awal_temp2 : Integer;
    Nilai_awal_str1, Nilai_awal_str2 : String;
    Tambahan : String;
    Hasil : String;
Begin
     Result := 0;
     Nilai_awal_str1 :=''; Nilai_awal_str2 := '';
     Nilai_awal_temp := Trunc(Nilai_awal);
     Nilai_awal_str1 := LeftStr(inttostr(Nilai_awal_temp),
                        length(inttostr(Nilai_awal_temp)) - length(inttostr(Nilai_bulat)));

     Nilai_awal_str2 := RightStr(inttostr(Nilai_awal_temp),
                        length(inttostr(Nilai_bulat)));

     Nilai_awal_temp1 := Strkeint(Nilai_awal_str1);
     Nilai_awal_temp2 := Strkeint(Nilai_awal_str2);
     Tambahan := MakeNDigit('', length(inttostr(Nilai_bulat)));

     if Nilai_awal_temp2 < Nilai_bulat Then
     Begin
          hasil := Nilai_awal_str1 + tambahan;
          Result := Strkeint(hasil);
     End;

     if Nilai_awal_temp2 >= Nilai_bulat Then
     Begin
          hasil := Nilai_awal_str1 + inttostr(Nilai_bulat);
          Result := Strkeint(hasil);
     End;
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
     Edit3.Text := inttostr(Floor_Rp(Strkeint(Edit1.text), Strkeint(Edit2.text)));
end;


Membuat kalkulator sendiri / Matematika / Windows Android / Delphi 7 - XE
function Calculate(SMyExpression: string; digits: Byte): string;
  // Calculate a simple expression
  // Supported are:  Real Numbers, parenthesis
var
  z: Char;
  ipos: Integer;

  function StrToReal(chaine: string): Real;
  var
    r: Real;
    Pos: Integer;
  begin
    Val(chaine, r, Pos);
    if Pos > 0 then Val(Copy(chaine, 1, Pos - 1), r, Pos);
    Result := r;
  end;

  function RealToStr(inreal: Extended; digits: Byte): string;
  var
    S: string;
  begin
    Str(inreal: 0: digits, S);
    realToStr := S;
  end;

  procedure NextChar;
  var
    s: string;
  begin
    if ipos > Length(SMyExpression) then
    begin
      z := #9;
      Exit;
    end
    else
    begin
      s := Copy(SMyExpression, ipos, 1);
      z := s[1];
      Inc(ipos);
    end;
    if z = ' ' then nextchar;
  end;

  function Expression: Real;
  var
    w: Real;

    function Factor: Real;
    var
      ws: string;
    begin
      Nextchar;
      if z in ['0'..'9'] then
      begin
        ws := '';
        repeat
          ws := ws + z;
          nextchar
        until not (z in ['0'..'9', '.']);
        Factor := StrToReal(ws);
      end
      else if z = '(' then
      begin
        Factor := Expression;
        nextchar
      end
      else if z = '+' then Factor := +Factor
      else if Z = '-' then Factor := -Factor;
    end;

    function Term: Real;
    var
      W: Real;
    begin
      W := Factor;
      while Z in ['*', '/'] do
        if z = '*' then w := w * Factor
      else
        w := w / Factor;
      Term := w;
    end;
  begin
    w := term;
    while z in ['+', '-'] do
      if z = '+' then w := w + term
    else
      w := w - term;
    Expression := w;
  end;
begin
  ipos   := 1;
  Result := RealToStr(Expression, digits);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  sMyExpression: string;
begin
  sMyExpression := '12.5*6+18/3.2+2*(5-6.23)';
  ShowMessage(sMyExpression + ' = ' + Calculate(sMyExpression, 3));
end;


Konversi Desimal ke Roman / Matematika / Windows Android / Delphi 7 - XE
function DecToRoman(Decimal: Longint): string;
const
  Numbers: array[1..13] of Integer =
    (1, 4, 5, 9, 10, 40, 50, 90, 100,
    400, 500, 900, 1000);
  Romans: array[1..13] of string =
    ('I', 'IV', 'V', 'IX', 'X', 'XL',
    'L', 'XC', 'C', 'CD', 'D', 'CM', 'M');
var
  i: Integer;
begin
  Result := '';
  for i := 13 downto 1 do
    while (Decimal >= Numbers[i]) do
    begin
      Decimal := Decimal - Numbers[i];
      Result  := Result + Romans[i];
    end;
end;

Konversi Oktal ke Integer / Matematika / Windows Android / Delphi 7 - XE
function OctToInt(Value: string): Longint;
var 
  i: Integer;
  int: Integer;
begin
  int := 0;
  for i := 1 to Length(Value) do
  begin
    int := int * 8 + StrToInt(Copy(Value, i, 1));
  end;
  Result := int;
end;



Konversi integer ke Oktal / Matematika / Windows Android / Delphi 7 - XE
function IntToOct(Value: Longint; digits: Integer): string;
var
  rest: Longint;
  oct: string;
  i: Integer;
begin
  oct := '';
  while Value <> 0 do
  begin
    rest  := Value mod 8;
    Value := Value div 8;
    oct := IntToStr(rest) + oct;
  end;
  for i := Length(oct) + 1 to digits do
    oct := '0' + oct;
  Result := oct;
end;


Konversi binary dengan spliter / Matematika / Windows Android / Delphi 7 - XE
function ToBin(Value: Byte; Splitter: Char): string;
var
  val, bit, intX: Byte;
begin
  val := Value;
  for intX := 0 to 7 do
  begin   //Alle 8 Bits durchlaufen
    bit := 48;    //48 (='0') zu bit
    val := val shr 1; //Value um 1 Bit nach rechts verschieben
    asm
   adc bit,0   //CarryFlag zu bit addieren
  end;
    if intX = 4 then Result := Splitter + Result;
    Result := Chr(bit) + Result;   //zu Result hinzufügen
  end;
end;
{------------------------------------------------------------------------------}

function ToBin(Value: Word; Splitter: Char): string;
begin
  Result := ToBin(Byte(Hi(Value)), Splitter) + Splitter + ToBin(Byte(Lo(Value)), Splitter);
end;
{------------------------------------------------------------------------------}

function BinTo(Value: string): Cardinal;
var
  intX, PosCnt: Byte;
begin
  Result := 0;
  PosCnt := 0;
  for intX := Length(Value) - 1 downto 0 do //zeichen von rechts durchlaufen
    case Value[intX + 1] of   //prüfen, ob 0 oder 1
      '0': Inc(PosCnt);  //bei 0 nur Pos-Zähler erhöhen
      '1':
        begin  //bei 1 Bit an Position einfügen
          Result := Result or (1 shl PosCnt);
          Inc(PosCnt); //und Zähler erhöhen
        end;
    end;
end;

Konversi integer ke binary / Matematika / Windows Android / Delphi 7 - XE
function IntToBin1(Value: Longint; Digits: Integer): string;
var
  i: Integer;
begin
  Result := '';
  for i := Digits downto 0 do
    if Value and (1 shl i) <> 0 then
      Result := Result + '1'
  else
    Result := Result + '0';
end;


function IntToBin2(d: Longint): string;
var
  x, p: Integer;
  bin: string;
begin
  bin := '';
  for x := 1 to 8 * SizeOf(d) do
  begin
    if Odd(d) then bin := '1' + bin
    else
      bin := '0' + bin;
    d := d shr 1;
  end;
  Delete(bin, 1, 8 * ((Pos('1', bin) - 1) div 8));
  Result := bin;
end;


Konversi Biner ke Integer / Matematika / Windows Android / Delphi 7 - XE
function BinToInt(Value: string): Integer;
var
  i, iValueSize: Integer;
begin
  Result := 0;
  iValueSize := Length(Value);
  for i := iValueSize downto 1 do
    if Value[i] = '1' then Result := Result + (1 shl (iValueSize - i));
end;

Konversi Hexa ke integer / Matematika / Windows Android / Delphi 7 - XE
procedure TForm1.Button1Click(Sender: TObject);
begin
  label1.Caption := IntToStr(StrToInt('$AFFE')); //45054
end;