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]; ganadora,GR,PronQuiniMasPro:ARRAY [1..17] OF STRING[1]; Aciertos: array[10..15] of integer;
ValApuEuro, ValApuPtas, ApuRedu,
Sindefinir:Real48;
SinDefinir2:Real48;
RaizRandomGoles: integer; END;
La declaración de variables es esta:
Código Delphi
[-]
D,
DDup,
dInter,
D2,
DMierda
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; 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; end;
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.