Ver Mensaje Individual
  #1  
Antiguo 20-05-2024
Avatar de Matorral
Matorral Matorral is offline
Miembro
 
Registrado: oct 2006
Ubicación: Ferrol-Galicia
Posts: 46
Reputación: 0
Matorral Va por buen camino
Funcion ORD en Delphi 7 devuelve valor diferente que en Delphi 11 Alexandria

Buenos días¡¡

Estoy cambiando un viejo programa desarrollado en Delphi7 a Delphi 11 Alexandria.
Tengo un problema con una función "Codifica()", que en Delphi7 me devuelve un valor, y en Delphi 11 me devuelve otro diferente.

Delphi 7:
Código Delphi [-]
function Codifica(v: string): integer;
var wClave1: string;
    i,j: longint;
begin
   j:=0;
   wclave1 :=v;
   for i:=1 to Length(wClave1) do
      j:=j*255+ord(wClave1[i]);

   j:=j*7;
   Result:=j;
end;

Delphi 11:
Código Delphi [-]
function Codifica(v: string): int64;
var wClave1: string;
    i,  j:int64;
begin
   j:=0;
   wclave1 :=v;
   for i:=1 to Length(wClave1) do
      j:=j*255+ord(wClave1[i]);
   j:=j*7;
   Result:=j;
end;

Pasando como parámetro ‘1111’ en Delphi4 me devuelve ‘1414835712’ y en Delphi 11 me devuelve ‘5709803008’.

El tipo integer (delphi7) lo cambié por int64(delphi11) porque me daba un error de ejecución "integer overflow".

Supongo que tendrá que ver con que en delphi 11 la funcion system.ord devuelve un valor tipo byte y en Delphi 7 de tipo integer, pero no se cómo solucionarlo.

Alguien podría darme una pista de que tendría que hacer para que el valor devuelto en Delphi11 fuese igual al devuelto por la funcion de Delphi7?

Gracias de antemano¡¡
__________________
Inieeeesssstademiviiiiidaaaaa.
Responder Con Cita