Esperemos que te sirva esta funcion...
un poco maquiavelica pero jala je
Código:
Function Division(CNum : String;Dividir : Int64) : LongInt;
Const
Entero64 = 999999999999999999;
Var
Mayores,Menores : Extended;
ModMen,ModMay,ModConst : Int64;
Begin
If Length(CNum) > 18 Then
Begin
//quitamos primero los nulos
While CNum[1] = '0' Do
Delete(CNum,1,1);
//Sacamos a los que no podamos transformar en entero
Mayores := StrToFloat(Copy(CNum,1,Length(CNum)-18));
//Sacamos a los que podemos transformar en Enteros
Menores := StrToFloat(Copy(CNum,Length(CNum)-17,10000));
//Ahora sabemos que los mayores
//es igual a mayores por la const Entero64
//mas mayores
//Sacamos primero el modulo de los menores
ModMen := Trunc(Menores) MOD Dividir;
//Sacamos el modulo de los mayores
ModMay := Trunc(Mayores) MOD Dividir;
//Sacamos el modulo de la constante
ModConst := Entero64 MOD Dividir;
//lo multiplicamos por las veces que usamos la constante
ModConst := ModConst * Trunc(Mayores);
//Sumamos los sobrantes y sacamos el resultado
Result := (ModMen+ModMay+ModConst) MOD Dividir;
//y listo.. listo
End;
//y si no es mayor entonces eso ya es facil
End;
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
Dividir : Int64;
CNum : String;
begin
CNum := '00120345030000067890142800';
Dividir := 97;
ShowMessage(IntToStr(Division(CNum,Dividir)));
end;
Como siempre a sus ordenes y siempre con buena cara
saludos