Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: petpan13 en Marzo 28, 2016, 09:38:41 PM

Título: pasar codigo delphi a game maker
Publicado por: petpan13 en Marzo 28, 2016, 09:38:41 PM
Bueno ando con un programita para generar ean 13 de mi tienda online lo estoy haciendo con game maker
el dígito de control se me resiste y esta el código en delphi alguien podría hacerme el favor de adaptarlo


gracias de antemano

// Cálculo del dígito de control EAN
function cc_CalcDV_Ean(Ean: String): Integer;
{ Calcula y devuelve el dígito verificador de una cadena de código EAN13 o EAN8
  Devcuelve -1 en caso de ser incorrecto. }
var
  SP, SI, I, L:Integer;
  Impar: Boolean;
begin
  L:= Length(Ean);
  if (L=8) or (L=13) then
    begin
    SI:= 0;
    SP:= 0;
    I:= L-1;
    Impar:= Odd(L);
    repeat                                     // Bucle para sumar los valores discriminando posiciones pares e impares
      if Impar then SI:= SI + StrToInt(Ean) else SP:= SP + StrToInt(Ean);
      Impar:= not Impar;
      I:= I - 1;
    until I =0;
    if Impar then SI:= SI*3 else SP:= SP*3;    // Multiplica por tres según la longitud del código
    Result:= 10-(SI+SP) mod 10;                // Calcula el dígito de verificación
  end else Result:= -1;
end;
Título: Re:pasar codigo delphi a game maker
Publicado por: bygdle en Marzo 28, 2016, 10:17:06 PM
No sé un pepino de Delphi, pero si sabes lo que quieres hacer (o al menos lo que ese código hace), ¿Por qué no lo haces directamente en GML en vez de traducirlo?

Sólo por si acaso, quizás deberías explicar qué significa ese código para quienes no saben delphi pero quizás sepan hacer lo que quieres en GML
Título: Re:pasar codigo delphi a game maker
Publicado por: Clamud en Marzo 29, 2016, 04:35:42 AM
Wikipedia explica muy bien el algoritmo, y con esa información hice este script:
[gml]
///ean( cadena )

var I, L, S;

L = string_length( argument0 ); //longitudd
if( L<>7 and L<>12 ) return -1; //codigo no valido

S = 0;
for( I=L; I>0; I-=2 ) //suma impar
S += real(string_char_at( argument0, I ));
S *= 3;
for( I=L-1; I>0; I-=2 ) //suma par
S += real(string_char_at( argument0, I ));

return (10 - (S mod 10)) mod 10; //resultado
[/gml]
La entrada debe ser una cadena de 7 o 12 carateres, y el resultado es un entero.
Título: Re:pasar codigo delphi a game maker
Publicado por: petpan13 en Marzo 29, 2016, 09:50:55 AM
Gracias Clamud no sabia lo del impar y me pillo ayer a ultima hora cansado
enhorabuena parece que tu lo has sacado sin problemas