Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Programa como .bat (https://www.clubdelphi.com/foros/showthread.php?t=73629)

Caral 06-05-2011 03:11:03

Hola
El error es simplisimo.
El mismo programa te lo esta diciendo.
No son compatibles integer y string.
Veamos tu arreglo:
Hay dos datos iguales, uno el nombre de la funcion y otro el que adhieres a el memo, son el mismo, pero uno es Integer y otro string.
Tu funcion la cambiaste a integer:
Código Delphi [-]
Function TForm1.TransformaTiempo:Integer;
Var
  H,M,S:Integer;
Begin
  H:=StrToInt(EdHora.Text);
  M:=StrToInt(EdMin.Text);
  S:=StrToInt(EdSeg.Text);
  TransformaTiempo:=H*3600+M*60+S;
End;
bien, si funciona entonces deberias de recoger el dato de esa funcion en los mismos terminos, si pide integer, devuelvo integer:
Código Delphi [-]
procedure TForm1.BotApagarClick(Sender: TObject);
begin
  MemoBat.lines.add('shutdown /s /t '+IntToSTr(TransformaTiempo);
  MemoBat.lines.SaveToFile(ExtractFilePath(Application.ExeName)+'Apagar.Bat');
  WinExec(PChar(ExtractFilePath(Application.ExeName)+'Apagar.Bat'),SW_SHOWNORMAL);
  Sleep(250);
  DeleteFile(PChar(ExtractFilePath(Application.ExeName)+'Apagar.Bat'));
  MemoBat.lines.clear;
end;
A ver que te dice ahora.
Saludos

emii89 06-05-2011 03:16:10

Huyy! que bobo que estoy! jaja cuando me empezó a tirar el primer error de conversión, no me di cuenta de que estaba dejando casilleros en blanco!! por eso era el error!! tengo que poner las excepciones! JAJAJA.

Caral 06-05-2011 03:19:56

Hola
Bueno, aqui esta tu seguimiento.
Saludos

emii89 06-05-2011 03:27:11

Ahora tengo problema con la excepción!:

Cita:

procedure TForm1.BotApagarClick(Sender: TObject);
begin
Try
MemoBat.lines.add('shutdown /s /t '+IntToStr(TransformaTiempo));
MemoBat.lines.SaveToFile(ExtractFilePath(Application.ExeName)+'Apagar.Bat');
WinExec(PChar(ExtractFilePath(Application.ExeName)+'Apagar.Bat'),SW_SHOWNORMAL);
Sleep(250);
DeleteFile(PChar(ExtractFilePath(Application.ExeName)+'Apagar.Bat'));
MemoBat.lines.clear;
Except
On E: EConvertError do
Begin
Showmessage ('Estás dejando casilleros en blanco');
EdHora.Text:='0';EdMin.Text:='0';EdSeg.Text:='0';
End;
end;
end;
Qué es lo qué está mal?

Compila, pero me tira error igual.

Caral 06-05-2011 03:32:58

Hola
Excepción ?????
Osea: Quieres que si alguno de los edits esta en blanco salte una execpcion????.
Osea: Quieres dejar que se equivoquen ????.
Osea: mmmmmm.
No hace falta una excepcion cuando se puede hacer que la funcion trabaje dependiendo de .......
Código Delphi [-]
Function TForm1.TransformaTiempo:Real;
var h,m,s : Integer;
Begin
  h:= StrToint(Edit1.Text);
  m:= StrToint(Edit2.Text);
  s:= StrToint(Edit3.Text);
  If h or m or s <> StrToInt('') then // aqui esta la excepcion
  TransformaTiempo:= h*3600 + m*60 + s;
End;
Saludos

emii89 06-05-2011 03:36:42

Cita:

Empezado por Caral (Mensaje 399133)
Hola
Excepción ?????
Osea: Quieres que si alguno de los edits esta en blanco salte una execpcion????.
Osea: Quieres dejar que se equivoquen ????.
Osea: mmmmmm.
No hace falta una excepcion cuando se puede hacer que la funcion trabaje dependiendo de .......
Código Delphi [-]Function TForm1.TransformaTiempo:Real; var h,m,s : Integer; Begin h:= StrToint(Edit1.Text); m:= StrToint(Edit2.Text); s:= StrToint(Edit3.Text); If h or m or s <> StrToInt('') then // aqui esta la excepcion TransformaTiempo:= h*3600 + m*60 + s; End;

Saludos

Buena solución! gracias por ayudarme a pensar! te agradzco mucho de verdad!
Aunque estando algún casillero en blanco, el programa sigue "crasheando" con eso de que "EConvertError ''' is not a valid integer... bla bla bla.

Caral 06-05-2011 03:39:10

Hola
Eso es lo que trato, de que aprendas, si te doy todo resuelto no entenderas.
Me alegro que vayas bien.
Saludos

emii89 06-05-2011 03:43:55

Sí! es cierto, voy a seguir investigando, aunque en un rato seguro me iré a dormir... mañana lo terminaré! seguro!! tengo que poner que no se puedan ingresar letras y demás!

Muchas gracias!

Caral 06-05-2011 04:11:27

Hola
Todo tiene solución.
Efectivamente da el error.
Arreglarlo es solo cuestión de entender el por que de este.
De todos modos aquí hay muchos verdaderos maestros que te podrán decir muchas cosas mas que yo.
Por eso sigo siendo novato.
Saludos

Caral 06-05-2011 20:01:26

Hola
Aqui tienes el ejemplo.
Ahora verifica si los edits estan en blanco.
Saludos


La franja horaria es GMT +2. Ahora son las 07:11:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi