Ver Mensaje Individual
  #5  
Antiguo 28-08-2014
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Reputación: 17
jhonalone Va por buen camino
Gracias Al.
Hasta ahora no me ha dado ningún problema, después de los cambios.
El record es el siguiente.


Código Delphi [-]
       
DATOS=RECORD
              JORNADA:INTEGER;
              SIMIL:INTEGER;
              MAX1,MED1B,MED1A,MIN1,MAX2,MED2B,MED2A,MIN2,MAXX,MEDXB,MEDXA,MINX,
              MAX1SG,MED1SG,MIN1SG,Extra1sg,MAX2SG,MED2SG,MIN2SG,Extra2sg,
              MAXXSG,MEDXSG,MINXSG,ExtraXsg,
              MAXV0,MINV0,MAXV1,MINV1,MAXV2,MINV2,MAXV3,MINV3,
              MAX2G0,MAX2G1,MAX2G2,MAX2G3:INTEGER;
              minAB,medABB,medABA,maxAB:Byte;
              A,B,PronSorTodas,PronSorMasPro,PronSorMenosPro,PronSinSor:
                                  ARRAY [1..17] OF STRING[3];  //pleno 15 con goles
              ganadora,GR,PronQuiniMasPro:ARRAY [1..17] OF STRING[1]; //pleno 15 con goles
              Aciertos: array[10..15] of integer;
              {premios: array[10..15] of Real48;}
              ValApuEuro, ValApuPtas, ApuRedu,{se pone totreducidas para estadisticas}
              Sindefinir:Real48;
              SinDefinir2:Real48;
              RaizRandomGoles: integer;  //pleno 15 con goles la variacion de resultados aleatorios para goles
              END;

La declaración de variables es esta:
Código Delphi [-]
 
 
D,      { Siempre lleva datos de la jornada en uso }
   DDup,   { usado para la lectura de condiciones y base}
   dInter, { usado como intermediario para CambioDatJor}
   D2,     { Siempre lleva datos de la primera leída o última grabada }
   DMierda { Sin inicializar para control anticopia }
   DATOS;

y el evento OnExit ha quedado así después de los cambios:

Código Delphi [-]
 
procedure TApBasica.Edit15Exit(Sender: TObject);
begin
if EsUnaAsignacionMia then EXIT; // para que no de error al asignar yo los valores
if (TEdit(Sender).Text<>'1') and
   (TEdit(Sender).Text<>'X') and
   (TEdit(Sender).Text<>'2')
then begin
     Application.MessageBox('Entrada incorrecta. Utilice los signos  "1"   "X"   "2"  exclusivamente. ',
     '¡ Atención !',mb_OK+mb_IconExclamation);
     TEdit(Sender).SetFocus;
     EXIT;
     end;
DDup.A[15]:=TEdit(Sender).Text; // Aquí creo que es donde perdia valores la variable Record DDup
end; {Edit15Exit}

La variable "EsUnaAsignacionMia" la pongo a True antes de asignar los valores a los distintos Edit. Y la cambio a False después de asignar los valores.

Sigo sin entender por qué ha estado funcionando tantos años, si lo he compilado con la misma versión de Delphi, o sea con la versión Delphi7, que todavía conservo instalada en un ordenador más antiguo, para no complicarme la vida si tengo que hacer alguna modificación en algun programa viejo.

Gracias por tus elogios, pero es cierto que soy muy meticuloso, pero sólo soy aficionado y tengo muchiiiiiisimo que aprender.
Un Saludo.

Última edición por Casimiro Notevi fecha: 29-08-2014 a las 18:31:46.
Responder Con Cita