[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]

    {
    You're right about that... The only thin why I found it difficult, is
    because TP (or any other language) doesn't support the MenaNum itself..
    Some other thing is that when you're creating a file, you need to use
    two windows, and constantly convert the numbers... But for the source,
    thanks, I'll look it over... Is it Ok with you when I place it in the
    download of my BBS..? I havn't seen any DEC<>MEGA program yet...

    Try this...
    }

    Function MegaToDec(Num: String) : LongInt; {Converts String MEGA to Dec}
    Const MegaNum : Set of Char = ['0'..'9','A'..'Z']; {assume UC}

    Var HoldNum,
        TempVal : LongInt;
        CharPos : Byte; {Position of Character}

        Function ToThirtySix(Ex: Byte) : Longint; {Raises to power of 36}
        Var Times: Byte;
            HoldPower: LongInt;

        Begin
            HoldPower:=0;
            If Ex=0 then begin
               ToThirtySix:=1;
               End;
            For Times:=1 to Ex do HoldPower:=HoldPower*36;
            ToThirtySix:=HoldPower;
        End;

       Function ConvertVal(Ch: Char) : Byte;
       Var Temp : Char;
       Begin
            Temp:=Ch;
            Upcase(Temp);
            If Ord(Ch)>47 and Ord(Ch)<58 then ConvertVal:=Ord(Ch)-48;
                    {Converts if 0..9}
            If Ord(Ch)>64 and Ord(Ch)<91 then ConvertVal:=Ord(Ch)-55;
       End;

       Begin
            HoldNum:=0;
            For CharPos:=Length(Num) downto 1 do
                HoldNum:=HoldNum+ConverVal(Num[CharPos])*
                    ToThirtysix(CharPos-1);
            MegaToDec:=HoldNum;
       End;

    Note: this is untested, but it should work... try values of 10 Mega
    (should by 36 dec) or 2Z (should be 107 dec I think)... Tell me how it
    works...

[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]