Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2006
Seba.F1 Seba.F1 is offline
Registrado
 
Registrado: Nov 2004
Ubicación: ER - Argentina
Posts: 7
Poder: 0
Seba.F1 Va por buen camino
Angry Thread bendito thread...se me pierde la ventana

Hola gente como andan? llevo mas de 3 horas buscando en los foros de club delphi e internet algo que me ayude con mi problema pero no encuentro nada, si no les molesta a los que mas saben por favor denme una mano, o un pie o algo por favor!!!!!!!! estoy por volverme loco.

EL PROBLEMA
He desarrollado una aplicación que entre muchas cosas, lee datos de una balanza electrónica que pesa camiones (cuando comence con el desarrollo ya estaba). La cuestión es que esta balanza usa un ejecutable en DOS (si Disk Operating Sistem de Micro...), cuando lo ejecuto con cierta sintaxis me devuelve el valor del peso en un archivo .txt. Hasta aca todo bien. Por cuestiones de tiempo (demoras del archivito, mostrar los datos, etc) tuve que implementar un thread para que la aplicación pueda realizar otras tareas mientras pesa los camiones, y ejecuto dentro del thread el programita de la balanza, luego leo el archivo .txt y muestro el numerito en LA aplicación, cuando deja de pesar, se termina el thread, imprime el ticket y cuando cierro la ventana de la balanza, puuuuuuuuffffff,!"·$·$|@#~&·$&|@#~%&|@#~€|34% me tira el siguiente error (obviamente le meti un par de try except... y muestra un lindo mensajito).

Error Win32 Code1400
El identificador de la ventana no es válido

todo bien hasta que se quiere volver a abrir la ventana de la balanza.

Ya existe un componente con el nombre F_Balanza.

y no me lo deja crear, y cuando cierro la aplicaciópn paaaaaaassfff

violacion de acceso a la direccion 7c928fea en el módulo ntdll.dll

aca va el codigo de mi thread, junto con el que dispara el ejecutable de la balanza.

por favor les pido que si alguien me pude decir donde le estoy errando, porque ya no veo nada.


Código Delphi [-]
function T_Lectura_Balanza.Ejecutar(const AppName, Params:String):THandle;
var
   ProcInfo:TProcessInformation;
   Info:TStartupInfo;
begin
     FillChar(Info,SizeOf(Info),0);
     Info.cb:=SizeOf(Info);
     Info.dwFlags:=STARTF_USESHOWWINDOW;
     info.wShowWindow:=SW_HIDE;
     if not CreateProcess(nil, pchar(AppName+' '+Params),nil,nil,False,0,nil,nil,Info,ProcInfo) then
        raise Exception.Create('No se puede iniciar la lectura de la balanza.');
     Result:=ProcInfo.hProcess;
end;
procedure T_Lectura_Balanza.Esperar(H:THandle);
begin
     while WaitForSingleObject(H,100)=WAIT_TIMEOUT do
           begin
                Application.ProcessMessages;
                if Application.Terminated then
                   Break;
                if F_Balanza.Terminar then
                   Break;
           end;
end;
 
 
procedure T_Lectura_Balanza.Execute;
begin      Linea_Comando:=MD_Config.IBQ_CONFIGLINEA_COMANDO_BALANZA.AsString;
     repeat
           try
              Esperar(Ejecutar(Linea_Comando,''));
              Archivo_Peso:=F_Principal.Dir+'Peso';
              F_Balanza.Memo_Peso.Lines.LoadFromFile(Archivo_Peso);
              Archivo_Peso:=F_Balanza.Memo_Peso.Lines[0];
              if Archivo_Peso='E' then
                 begin
                      F_Balanza.Img_Error.Visible:=True;
                 end
              else
                  begin
                       F_Balanza.Img_Error.Visible:=False;
                       Peso:=Copy(Archivo_Peso,2,(Length(Archivo_Peso)-1));
                       try
                          Long_:=StrToFloat(Peso);
                       except
                             Long_:=0;
                       end;
                       if Long_=0 then
                          F_Balanza.Img_Cero.Visible:=True
                       else
                           F_Balanza.Img_Cero.Visible:=False;
                       F_Balanza.Kg:=Long_;
                       Decodificar_Numero(Long_,CM,DM,UM,C,D,U);
                       Mostrar(CM,DM,UM,C,D,U);
                  end;
          except
                 Decodificar_Numero(0,CM,DM,UM,C,D,U);
                 Mostrar(CM,DM,UM,C,D,U);
                 F_Balanza.Img_Cero.Visible:=True;
           end;
     until F_Balanza.Terminar;
end;

desde ya muchas gracias.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas MDI cerrar ventana rafadrover Varios 3 28-01-2006 13:30:44
Cerrar componente con ventana modal elcigarra OOP 7 12-10-2005 13:17:53
En mi aplicacion MDI quiero crear una ventana hija desde otra ventana hija Durbed Varios 8 05-07-2005 11:51:54
Llamada de procedimientos wallesis OOP 19 27-01-2004 18:39:15


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


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