Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-12-2006
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Poder: 20
Choclito Va por buen camino
Problema al ejecutar aplicacion cliente servidor

Hola amigos del foro antes que nada comentarles q trabajo con delphi 7 y firebird 1.5 decirles q gracias al foro pude solucionar un problema que tenia respecto a un sistema cliente servidor donde tenia q registrar el nombre de la PC que hacia de servidor, entonces lo que hice es los siguiente en el evento on create del modulo de la aplicacion hago el siguiente codigo:
Código Delphi [-]
modulo_bd.MDOBD_SAM.Connected:=false;
modulo_bd.MDOT_SAM.Active:=false;
modulo_bd.mdoq_listado_gral.Active:=false;
modulo_bd.mdoq_act_edad.Active:=false;
if FileExists('D:\P_SAM\Config\Config.txt') then
begin
 with TStringList.Create do
  try
    LoadFromFile('D:\P_SAM\Config\Config.txt');

modulo_bd.MDOBD_SAM.DatabaseName:=Strings[0]+':'+'D:\P_SAM\BD\P_SAM.FDB';
modulo_bd.MDOBD_SAM.Params.Add('user_name=SYSDBA');
modulo_bd.MDOBD_SAM.Params.Add('password=masterkey');
modulo_bd.MDOBD_SAM.Connected:=true;
modulo_bd.MDOT_SAM.Active:=true;
modulo_bd.mdoq_listado_gral.Active:=true;
modulo_bd.mdoq_act_edad.Active:=true;

    SaveToFile('D:\P_SAM\Config\Config.txt');
  finally
    Free;
  end;
end
else
begin
modulo_bd.MDOBD_SAM.Connected:=false;
modulo_bd.MDOT_SAM.Active:=false;
f_conectar.ShowModal;
end;
aqui es donde llamo a un archivo txt que tendra el dato de la PC servidora y si no lo tiene llamo a otro form donde registro el nombre de la PC servidora para que luego directamente me llame al archivo txt y la coneccion sea directa el codigo en el onclick del boton del form es el siguiente:
Código Delphi [-]
 function Guardar(Filename: string; Buffer: Pointer; Pos, Count: Cardinal): Boolean;
var
  F: File;
  Escritos: Cardinal;
begin
  Result:= FALSE;
  AssignFile(F,Filename);
  {$I-}
    Rewrite(F,1);
  {$I+}
  if IOResult=0 then
  begin
    inc(PByte(Buffer),Pos);
    Escritos:= 0;
    BlockWrite(F,Buffer^,Count,Escritos);
    Result:= Escritos = Count;
    CloseFile(F);
  end;
end;

procedure TF_Conectar.LMDSpeedButton1Click(Sender: TObject);
begin
modulo_bd.MDOBD_SAM.Connected:=false;
modulo_bd.MDOT_SAM.Active:=false;
modulo_bd.mdoq_listado_gral.Active:=false;
modulo_bd.mdoq_act_edad.Active:=false;
Guardar('D:\P_SAM\Config\Config.txt',PChar(login.Text),0,length(login.Text));
modulo_bd.MDOBD_SAM.DatabaseName:=login.Text+':'+'D:\P_SAM\BD\P_SAM.FDB';
modulo_bd.MDOBD_SAM.Params.Add('user_name=SYSDBA');
modulo_bd.MDOBD_SAM.Params.Add('password=masterkey');
modulo_bd.MDOBD_SAM.Connected:=true;
modulo_bd.MDOT_SAM.Active:=true;
modulo_bd.mdoq_listado_gral.Active:=true;
modulo_bd.mdoq_act_edad.Active:=true;
close;
end;
coloco tambien el codigo de la funcion guardar
Ahora bien una vez ejecutado el sistema todo bien el problema es cuando cierro la aplicacion me sale el sgte mensaje
Exception EAccessViolation in Module P_SAM at 001816E4
Read of Address
luego me marcha el siguiente codigo de la unidad Classes
Código Delphi [-]
  DestroyComponents;
  if FOwner <> nil then FOwner.RemoveComponent(Self);
  inherited Destroy;
La verdad nose como solucionarlo porfavor quisiera q me puedan dar sugerencias de como poder arreglar el problema q tengo puesto q cuando ejecuto desde delphi se detiene la aplicacion y tengo que resetearla y cuando ejecuto directamente el sistema me sale muchos informes de errores
Creo q es por la utilizacion de ttringlist como pudiera arreglarlo??? que es lo q estoy haciendo mal?? muchas gracias por toda la ayuda q me brinden amigos del foro
Responder Con Cita
  #2  
Antiguo 26-12-2006
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Poder: 20
Choclito Va por buen camino
sugerencias

Hola amigos del foro primeramente Feliz Navidad para todos
Pasando al problema q tengo no se si lo plantee bien o es q tengo q cambiarlo de seccion
Nuevamente les explico lo que quiero hacer:
tengo una maquina q trabaja de servidora y cliente entonces esta maquina y las otras q se conecten cuando se ejecute el sistema quiero obtener el nombre de la Pc servidora q este guardada en un archivo txt y si es la primera vez q se registre el nombre de la pc servidora y luego se guarde ese dato en un archivo txt asi para q las siguiente vez q se ingrese tome el nombre de la pc servidora del archivo txt
Para eso el codigo q mostre lo hice en el evento oncreate del modulo donde estan mis componentes tmercurytools
¿Cual seria otra opcion para lograr lo q les mencione?
¿Donde estoy cometiendo el error?
Espero porfavor que me colaboren o es que el hilo tendria q cambiarlo a otra seccion
Muchas gracias por todas las respuestas q puedan brindarme
Responder Con Cita
  #3  
Antiguo 27-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Quizás el problema es que desde otra Pc clente (distinta al servidor) no se puede acceder al archivo de texto, para ello debería estar compartida la carpeta donde está el archivo txt.

Quizás el error se produzca en otro sitio, por lo que dices de la unidad Classes, el error tiene toda la pinta de querer destruir un objeto 2 veces. Revisa en tu código si liberas objetos (Forms sobre todo) y cómo lo haces. Por regla general usa FreeAndNil cuando liberes un Form.

Por otra parte creo que te has complicado la vida creando el fichero de texto un TIniFile (busca en el foro) sería mucho más fácil de manipular.


Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 29-12-2006
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Poder: 20
Choclito Va por buen camino
Muchas gracias por responder

Como siempre gracias al foro pude utilizar los Tinifiles y todo bien pero ahora me sigue saliendo el error donde al ultimo me marca en :
Código Delphi [-]
 DestroyComponents;
  if FOwner <> nil then FOwner.RemoveComponent(Self);
  inherited Destroy;

este codigo esta dentro de la unidad Clases
Ahora bien el codigo q hice es el siguiente tengo un modulo en el cual estan mis componentes mdobd,mdotransaction entonces en el evento on create del modulo tengo el siguiente codigo:
Código Delphi [-]
modulo_bd.MDOBD_SAM.Connected:=false;
modulo_bd.MDOT_SAM.Active:=false;
modulo_bd.mdoq_listado_gral.Active:=false;
modulo_bd.mdoq_act_edad.Active:=false;
Fichero := ExtractFileDir (ParamStr(0))+'\Config.ini';
if FileExists('D:\P_SAM\Aplicacion\Config.ini') then
begin
MiFichero := TiniFile.Create (Fichero);
Var1:= MiFichero.ReadString ('ServidorBD','Servidor','');
MiFichero.Free;
modulo_bd.MDOBD_SAM.DatabaseName:=var1+':'+'D:\P_SAM\BD\P_SAM.FDB';
modulo_bd.MDOBD_SAM.Params.Add('user_name=SYSDBA');
modulo_bd.MDOBD_SAM.Params.Add('password=masterkey');
modulo_bd.MDOBD_SAM.Connected:=true;
modulo_bd.MDOT_SAM.Active:=true;
modulo_bd.mdoq_listado_gral.Active:=true;
modulo_bd.mdoq_act_edad.Active:=true;
end
else
begin
modulo_bd.MDOBD_SAM.Connected:=false;
modulo_bd.MDOT_SAM.Active:=false;
f_conectar.ShowModal;
end;
ahora bien si el archivo no existe entonces se llama a otro formulario donde se registrara el nombre de la PC servidora
entonces en el eventro onclick del boton del formulario f_conectar tengo el siguiente codigo:
Código Delphi [-]
var MiFichero:Tinifile;
fichero,var1:string;
begin
modulo_bd.MDOBD_SAM.Connected:=false;
modulo_bd.MDOT_SAM.Active:=false;
modulo_bd.mdoq_listado_gral.Active:=false;
modulo_bd.mdoq_act_edad.Active:=false;
Fichero := ExtractFileDir (ParamStr(0))+'\Config.ini';
 MiFichero := TiniFile.Create (Fichero);
 MiFichero.WriteString ('ServidorBD','Servidor',login.text);
 MiFichero.Free;
 //Guardar('D:\P_SAM\Config\Config.txt',PChar(login.Text),0,length(login.Text));
modulo_bd.MDOBD_SAM.DatabaseName:=login.Text+':'+'D:\P_SAM\BD\P_SAM.FDB';
modulo_bd.MDOBD_SAM.Params.Add('user_name=SYSDBA');
modulo_bd.MDOBD_SAM.Params.Add('password=masterkey');
modulo_bd.MDOBD_SAM.Connected:=true;
modulo_bd.MDOT_SAM.Active:=true;
modulo_bd.mdoq_listado_gral.Active:=true;
modulo_bd.mdoq_act_edad.Active:=true;
close;
end;

donde es que cometo el error ??? o en que evento tendria q estar el codigo?? la verdad no me ubico en que evento tendria q destruir un objeto??
como siempre espero que me puedan brindar toda la ayuda posible
indicarles q mas antes que haga este codigo todo iva bien
Muchas gracias por toda la ayuda q puedan brindarme
Responder Con Cita
  #5  
Antiguo 29-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
¿cual es la filosofía que usas en creación de ventanas?

Normalmente se pueden crear con :
- Application.Createform(TForm1, form1);
- Form1 := TForm1.Create( ) el parámetro que lleva dentro de los paréntesis puede variar y quizás por ahí venga el problema. De hecho ese parámetro es el FOwner que te marca en el depurador.

Quizás tengas suerte. cuando te marca ese error, mira la pila "Stack" con el depurador, ojalá venga algo que te suene (por ejemplo una ventana de clientes, un informe de Quickreport... no sé, algo de tu programa).

Si todas las ventanas las creas de la misma forma, explica como lo haces y como se destruyen después.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 29-12-2006
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Poder: 20
Choclito Va por buen camino
consultando nuevamente

Muchas gracias por responder Lepe y te muestro como esta la unidad principal del proyecto (disculpas por copiar todo el codigo de la unidad principal):
Código Delphi [-]
 Application.Initialize;
  //SplashScreen:=TSplashScreen.Create(application);
  //SplashScreen.Show;
  Application.Title := 'Sistema de Asistencia Médica';
  Application.HelpFile := 'D:\P_SAM\Ayuda & Manual_usuario\Ayuda\AYUDA.HLP';
  Application.CreateForm(TF_Usuarios, F_Usuarios);
  Application.CreateForm(TModulo_BD, Modulo_BD);
  Application.CreateForm(TF_Conectar, F_Conectar);
  Application.CreateForm(TF_Menu, F_Menu);
  Application.CreateForm(TModulo_Dr_Esp, Modulo_Dr_Esp);
  Application.CreateForm(TF_Especialidad, F_Especialidad);
  Application.CreateForm(TF_Doctor, F_Doctor);
  Application.CreateForm(TModulo_Aseg_Benef, Modulo_Aseg_Benef);
  Application.CreateForm(TF_Asegurados, F_Asegurados);
  Application.CreateForm(TF_Beneficiario, F_Beneficiario);
  Application.CreateForm(TF_Select_rep_ingresos_med, F_Select_rep_ingresos_med);
  Application.CreateForm(TF_Cita, F_Cita);
  Application.CreateForm(TF_Re_asegurados, F_Re_asegurados);
  Application.CreateForm(TF_re_beneficiarios, F_re_beneficiarios);
  Application.CreateForm(TF_Listado_Medicos, F_Listado_Medicos);
  Application.CreateForm(TF_Buscar_Benef, F_Buscar_Benef);
  Application.CreateForm(TF_Select_Rep_Pacientes, F_Select_Rep_Pacientes);
  Application.CreateForm(TRep_General, Rep_General);
  Application.CreateForm(TModulo_Cita, Modulo_Cita);
  Application.CreateForm(TF_Consulta_Medica, F_Consulta_Medica);
  Application.CreateForm(TF_PlanCuentas, F_PlanCuentas);
  Application.CreateForm(TF_HC, F_HC);
  Application.CreateForm(TModulo_Contabilidad, Modulo_Contabilidad);
  Application.CreateForm(TF_AsientoContable, F_AsientoContable);
  Application.CreateForm(TF_Rep_Libro_Diario, F_Rep_Libro_Diario);
  Application.CreateForm(TReporte_Libro_Diario, Reporte_Libro_Diario);
  Application.CreateForm(TRep_Libro_Mayor, Rep_Libro_Mayor);
  Application.CreateForm(TF_Rep_Libro_Mayor, F_Rep_Libro_Mayor);
  Application.CreateForm(TF_Rep_Balance, F_Rep_Balance);
  Application.CreateForm(TReporte_Balance, Reporte_Balance);
  Application.CreateForm(TReporte_Especialidad, Reporte_Especialidad);
  Application.CreateForm(TF_Nueva_Consulta, F_Nueva_Consulta);
  Application.CreateForm(TModulo_HC_Consulta, Modulo_HC_Consulta);
  Application.CreateForm(TF_acerca_de, F_acerca_de);
  Application.CreateForm(TModulo_Medicamentos, Modulo_Medicamentos);
  Application.CreateForm(TF_Grupo_Medicamento, F_Grupo_Medicamento);
  Application.CreateForm(TRecetario, Recetario);
  Application.CreateForm(TF_Hospitalizacion, F_Hospitalizacion);
  Application.CreateForm(TF_Selec_Hospital, F_Selec_Hospital);
  Application.CreateForm(TF_Hospital, F_Hospital);
  Application.CreateForm(TReporte_Hospitalizacion, Reporte_Hospitalizacion);
  Application.CreateForm(TF_Examenes_Laboratorio, F_Examenes_Laboratorio);
  Application.CreateForm(TF_Laboratorios, F_Laboratorios);
  Application.CreateForm(TF_selec_laboratorio, F_selec_laboratorio);
  Application.CreateForm(TF_Examenes, F_Examenes);
  Application.CreateForm(TReporte_Sol_Laboratorios, Reporte_Sol_Laboratorios);
  Application.CreateForm(TF_Certificados, F_Certificados);
  Application.CreateForm(TRep_Certificados, Rep_Certificados);
  Application.CreateForm(TFrmMessageBox, FrmMessageBox);
  Application.CreateForm(TF_Proveedores, F_Proveedores);
  Application.CreateForm(TF_Ingresos, F_Ingresos);
  Application.CreateForm(TF_Egresos, F_Egresos);
  Application.CreateForm(TF_M_farmacia, F_M_farmacia);
  Application.CreateForm(TF_det_asiento, F_det_asiento);
  Application.CreateForm(TF_listado_asientos, F_listado_asientos);
  Application.CreateForm(TReporte_Estudios, Reporte_Estudios);
  Application.CreateForm(TF_Rep_citas1, F_Rep_citas1);
  Application.CreateForm(TF_Act_Hospitalizacion, F_Act_Hospitalizacion);
  Application.CreateForm(TModulo_Actualizaciones, Modulo_Actualizaciones);
  Application.CreateForm(TF_Act_Examenes, F_Act_Examenes);
  Application.CreateForm(TF_Act_Estudios, F_Act_Estudios);
  Application.CreateForm(TModulo_Migrador, Modulo_Migrador);
  Application.CreateForm(TModulo_Presupuestos, Modulo_Presupuestos);
  Application.CreateForm(TF_PlanPresupuestos_I, F_PlanPresupuestos_I);
  Application.CreateForm(TF_Farmacia, F_Farmacia);
  Application.CreateForm(TF_Selec_Mensual_F, F_Selec_Mensual_F);
  Application.CreateForm(TModulo_Reportes, Modulo_Reportes);
  Application.CreateForm(TReporte_Mes_Farmacias, Reporte_Mes_Farmacias);
  Application.CreateForm(TF_PlanCuentas_E, F_PlanCuentas_E);
  Application.CreateForm(TF_Presupuestos_I, F_Presupuestos_I);
  Application.CreateForm(TF_Selec_Pres_i, F_Selec_Pres_i);
  Application.CreateForm(TF_Selec_rep_pres, F_Selec_rep_pres);
  Application.CreateForm(TRep_Listado_Pres_Ing, Rep_Listado_Pres_Ing);
  Application.CreateForm(TReporte_Ing_Anual, Reporte_Ing_Anual);
  Application.CreateForm(TF_Menu_Admin_sistem, F_Menu_Admin_sistem);
  Application.CreateForm(TModulo_Seguridad, Modulo_Seguridad);
  Application.CreateForm(TF_Menu_Doctor, F_Menu_Doctor);
  Application.CreateForm(TF_Menu_Fichaje, F_Menu_Fichaje);
  Application.CreateForm(TF_Menu_Farmacia, F_Menu_Farmacia);
  Application.CreateForm(TF_Datos_Usuario, F_Datos_Usuario);
  Application.CreateForm(TF_Cambiar_Pasw, F_Cambiar_Pasw);
  Application.CreateForm(TF_Menu_Adm, F_Menu_Adm);
  Application.CreateForm(TF_Menu_CyP, F_Menu_CyP);
  Application.CreateForm(TF_Migrador_Hos, F_Migrador_Hos);
  Application.CreateForm(TF_Migrador_Lab, F_Migrador_Lab);
  Application.CreateForm(TF_Centro_Est, F_Centro_Est);
  Application.CreateForm(TF_Migrador_Cen, F_Migrador_Cen);
  Application.CreateForm(TRep_Asegurados_Inh, Rep_Asegurados_Inh);
  Application.CreateForm(TReporte_Por_asegurado, Reporte_Por_asegurado);
  Application.CreateForm(TF_Asiento_Similar, F_Asiento_Similar);
  Application.CreateForm(TF_Tipo_Asiento, F_Tipo_Asiento);
  Application.CreateForm(TF_Asiento_Tipo, F_Asiento_Tipo);
  Application.CreateForm(TF_Selec_a_tipo, F_Selec_a_tipo);
  Application.CreateForm(TF_d_asiento_tipo, F_d_asiento_tipo);
  Application.CreateForm(TF_Presupuestos_E, F_Presupuestos_E);
  Application.CreateForm(TReporte_listado_egresos, Reporte_listado_egresos);
  Application.CreateForm(TReporte_Egr_Anual, Reporte_Egr_Anual);
  Application.CreateForm(TF_det_pres_ing_egr, F_det_pres_ing_egr);
  Application.CreateForm(TF_det_pres_egr, F_det_pres_egr);
  Application.CreateForm(TF_Eliminar_A, F_Eliminar_A);
  Application.CreateForm(TReporte_Asiento, Reporte_Asiento);
  Application.CreateForm(TReporte_p_k_ingresos, Reporte_p_k_ingresos);
  Application.CreateForm(TReporte_p_k_Egresos, Reporte_p_k_Egresos);
  Application.CreateForm(TF_Selec_rep_aseg_benef, F_Selec_rep_aseg_benef);
  Application.CreateForm(TReporte_sexo_tipo, Reporte_sexo_tipo);
  Application.CreateForm(TReporte_por_edades, Reporte_por_edades);
  Application.CreateForm(TReporte_aseg_por_fechas, Reporte_aseg_por_fechas);
  Application.CreateForm(TReporte_aseg_reingresos, Reporte_aseg_reingresos);
  Application.CreateForm(TF_Selec_rep_citas, F_Selec_rep_citas);
  Application.CreateForm(TReporte_Citas_general, Reporte_Citas_general);
  Application.CreateForm(TReporte_citas_a, Reporte_citas_a);
  Application.CreateForm(TReporte_citas_d, Reporte_citas_d);
  Application.CreateForm(TF_Buscar_Aseg, F_Buscar_Aseg);
  Application.CreateForm(TReporte_Consulta_medica, Reporte_Consulta_medica);
  Application.CreateForm(TReporte_HC, Reporte_HC);
  Application.CreateForm(TF_Selec_Rep_HC, F_Selec_Rep_HC);
  Application.CreateForm(TReporte_Listado_Consultas, Reporte_Listado_Consultas);
  Application.CreateForm(TReporte_Consultas_nuevos, Reporte_Consultas_nuevos);
  Application.CreateForm(Treporte_consultas_nuevos1, reporte_consultas_nuevos1);
  Application.CreateForm(TReporte_nro_consultas, Reporte_nro_consultas);
  Application.CreateForm(TReporte_listado_consultas1, Reporte_listado_consultas1);
  Application.CreateForm(TReporte_Hospitalizaciones, Reporte_Hospitalizaciones);
  Application.CreateForm(TReporte_Hospitalizaciones1, Reporte_Hospitalizaciones1);
  Application.CreateForm(TReporte_Ex_Lab, Reporte_Ex_Lab);
  Application.CreateForm(TReporte_Ex_Lab1, Reporte_Ex_Lab1);
  Application.CreateForm(TReporte_EstudiosC, Reporte_EstudiosC);
  Application.CreateForm(TReporte_EstudiosC1, Reporte_EstudiosC1);
  Application.CreateForm(TReporte_Listadogral_doctor, Reporte_Listadogral_doctor);
  Application.CreateForm(TReporte_Listadogral, Reporte_Listadogral);
  Application.CreateForm(TF_rep_registros, F_rep_registros);
  Application.CreateForm(TReporte_Medicos, Reporte_Medicos);
  Application.CreateForm(TReporte_Hospitales, Reporte_Hospitales);
  Application.CreateForm(TReporte_Farmacias, Reporte_Farmacias);
  Application.CreateForm(TReporte_Laboratorios, Reporte_Laboratorios);
  Application.CreateForm(TReporte_Centros, Reporte_Centros);
  Application.CreateForm(TF_Selec_Rep_Act, F_Selec_Rep_Act);
  Application.CreateForm(TReporte_Act_Estudios, Reporte_Act_Estudios);
  Application.CreateForm(TReporte_act_examenes, Reporte_act_examenes);
  Application.CreateForm(TReporte_act_h, Reporte_act_h);
  Application.CreateForm(TReporte_Carnet, Reporte_Carnet);
  Application.CreateForm(TF_reasegurados1, F_reasegurados1);
  Application.CreateForm(TF_pres_doctor, F_pres_doctor);
  Application.CreateForm(TF_pres_fichaje, F_pres_fichaje);
  Application.CreateForm(TF_Busqueda_Cons, F_Busqueda_Cons);
  Application.CreateForm(TReporte_Recetas, Reporte_Recetas);
  Application.CreateForm(TReporte_recetas1, Reporte_recetas1);
  Application.CreateForm(TF_select_rep_egr_med, F_select_rep_egr_med);
  Application.CreateForm(TReporte_Proveedores, Reporte_Proveedores);
  Application.CreateForm(TReporte_Saldo_Medicamentos, Reporte_Saldo_Medicamentos);
  Application.CreateForm(TReporte_Stock_Minimo, Reporte_Stock_Minimo);
  Application.CreateForm(TReporte_Egreso_Med_Mes, Reporte_Egreso_Med_Mes);
  Application.CreateForm(TReporte_Egresos_por_fechas, Reporte_Egresos_por_fechas);
  Application.CreateForm(TReporte_Ing_med_mes, Reporte_Ing_med_mes);
  Application.CreateForm(TF_Select_kardex_fisico, F_Select_kardex_fisico);
  Application.CreateForm(TReporte_Kardex_Fsico_Med, Reporte_Kardex_Fsico_Med);
  Application.CreateForm(TReporte_Kardex_Valorado_Med, Reporte_Kardex_Valorado_Med);
  Application.CreateForm(TF_Busqueda_Saldo_Med, F_Busqueda_Saldo_Med);
  Application.CreateForm(TF_Busqueda_Nro_Receta, F_Busqueda_Nro_Receta);
  Application.CreateForm(TF_Saldo_Med, F_Saldo_Med);
  Application.CreateForm(TReporte_Mov_Fisico_Valorado, Reporte_Mov_Fisico_Valorado);
  Application.CreateForm(TF_Select_mov_fiscovalorado, F_Select_mov_fiscovalorado);
  Application.CreateForm(TF_Pres_farmacia, F_Pres_farmacia);
  Application.CreateForm(TF_Buscar_Est_compl, F_Buscar_Est_compl);
  Application.CreateForm(TF_Busqueda_Hosp, F_Busqueda_Hosp);
  Application.CreateForm(TF_busqueda_examenes, F_busqueda_examenes);
  Application.CreateForm(TReporte_Mes_Estudios, Reporte_Mes_Estudios);
  Application.CreateForm(TReporte_Mes_Examenes, Reporte_Mes_Examenes);
  Application.CreateForm(TReporte_Mes_Hosp, Reporte_Mes_Hosp);
  Application.CreateForm(TReporte_Excedentes, Reporte_Excedentes);
  Application.CreateForm(TReporte_Descuento_Farmacia, Reporte_Descuento_Farmacia);
  Application.CreateForm(TF_Seguridad, F_Seguridad);
  Application.CreateForm(TF_Coneccion, F_Coneccion);
  Application.CreateForm(TProceso, Proceso);
  Application.CreateForm(TF_Selec_rep_seguridad, F_Selec_rep_seguridad);
  Application.CreateForm(TReporte_Listado_Gral_seguridad, Reporte_Listado_Gral_seguridad);
  Application.CreateForm(TReporte_Seguridad_Usuario, Reporte_Seguridad_Usuario);
  Application.CreateForm(TF_Pres_Conta, F_Pres_Conta);
  Application.CreateForm(TF_Pres_Seguridad, F_Pres_Seguridad);
  Application.CreateForm(TF_Tipo_Asiento1, F_Tipo_Asiento1);
  Application.CreateForm(TF_SAM, F_SAM);
  Application.CreateForm(TF_Selec_presupuestos, F_Selec_presupuestos);
  Application.CreateForm(TF_TipoCambio, F_TipoCambio);
  Application.CreateForm(TF_Select_Balance, F_Select_Balance);
  Application.CreateForm(TF_Enviar_mails, F_Enviar_mails);
  Application.CreateForm(TF_Registro_Receta, F_Registro_Receta);
  Application.CreateForm(TF_Buscar_asegurado, F_Buscar_asegurado);
  Application.CreateForm(TF_Busqueda_Beneficiario, F_Busqueda_Beneficiario);
  Application.CreateForm(TF_Select_reportes_fichaje, F_Select_reportes_fichaje);
  Application.CreateForm(TReporte_Asegurados, Reporte_Asegurados);
  Application.CreateForm(TReporte_Aseg_Tolerancia, Reporte_Aseg_Tolerancia);
  Application.CreateForm(TReporte_Benef_19, Reporte_Benef_19);
  Application.CreateForm(TF_Buscar_Centros, F_Buscar_Centros);
  Application.CreateForm(TReporte_Aseg_Documentos, Reporte_Aseg_Documentos);
  Application.CreateForm(TRep_Generall, Rep_Generall);
  Application.CreateForm(TReporte_Benef_19d, Reporte_Benef_19d);
  Application.CreateForm(TReporte_Codigos, Reporte_Codigos);
  Application.CreateForm(TReporte_Mes_Farmacia1, Reporte_Mes_Farmacia1);
  Application.CreateForm(TF_Descuentos_Med, F_Descuentos_Med);
  Application.CreateForm(TF_Validacion, F_Validacion);
  Application.CreateForm(TReporte_Visualizar, Reporte_Visualizar);
  Application.CreateForm(TF_Informe_Mensual, F_Informe_Mensual);
  Application.CreateForm(TReporte_Control_M, Reporte_Control_M);
  Application.CreateForm(TReporte_Tratamiento, Reporte_Tratamiento);
  //SplashScreen.Hide;
  //SplashScreen.Free;
  Application.Run;
end.
estaba utillizando un splahscreem pero por la ayuda q me brindaste lo puse como comentario y luego de eso al salir de la aplicacion me marca lo siguiente dentro de la unidad OleCtrls:
Código Delphi [-]
if FOleObject <> nil then FOleObject.Close(OLECLOSE_NOSAVE);
por la ayuda q me brindaste puedo decir q el problema se causo por el splashcreen pero ahora como puedo solucionarlo ???
Nuevamente muchas gracias Lepe y amigos del foro por la ayuda q me brinden
Responder Con Cita
  #7  
Antiguo 29-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
En principio no es buena idea crear todas las ventanas desde el principio de la aplicación, es una sobrecarga innecesaria. Lo óptimo es crear dinámicamente las ventanas que vas abriendo y cuando se cierre, que se libere la memoria. Así aligeramos la carga de la aplicación y además no supone "esperas" cuando se crea una ventana determinada, (no tarda tanto como se suele suponer).

Pasando un poco de ese tema, vamos al grano. No se trata de esa ventana, sino de la filosofía que usas:

Código Delphi [-]
 SplashScreen:=TSplashScreen.Create(application);
  SplashScreen.Show;
  SplashScreen.Hide;
  SplashScreen.Free;
En la primera línea estas diciendo que el objeto "Application" es el encargado de destruir la ventana Splash, sin embargo, en la última línea, te encargas tú de liberarla, por tanto, cuando la aplicación se cierre al completo, irá a destruir un objeto que ya fue liberado con el error que te da.

Hay varias formas para solventar esto, te comento ambas porque te será necesario.

Lo que no me gusta, pero funciona sin problemas:
Código Delphi [-]
 SplashScreen:=TSplashScreen.Create(application);
  SplashScreen.Show;
  SplashScreen.Hide;
  FreeAndNil(SplashScreen);
Aqui decimos que el objeto Application será el encargado de destruir el Splash, pero nosotros (que necesitamos liberarlo antes de que se cierre la aplicación), lo liberamos con FreeAndNil (mira la ayuda). De esta forma, cuando el objeto Application vaya a destruir a Splash, se "da cuenta" de que ya ha sido liberada y no hace nada (no provoca el error de antes).

Lo que si me gusta y uso a menudo (me gusta tener el control de todo ):
Código Delphi [-]
 SplashScreen:=TSplashScreen.Create(nil);
  SplashScreen.Show;
  SplashScreen.Hide;
  FreeAndNil(SplashScreen);

Ahora en la primera línea le decimos a Delphi que nadie (nil) se encargará de destruir la ventana, porque yo mismo me encargo de ello.

Además uso FreeAnNil como respaldo, es decir, si necesito mostrar el splashScreen en un momento dado, puedo preguntar si ha sido creado o no:
Código Delphi [-]
  if not Assigned(SplashScreen) then //  (si no ha sido creada, la creo yo)
    SplashScreen := TSplashScreen.Crete(nil);

  SplashScreen.Show; // por último se muestra

Tendrás que mirar estos detalles, por si liberas alguna forma / informe de quickreports / etc antes que el objeto Application.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 30-12-2006
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Poder: 20
Choclito Va por buen camino
consultando nuevamente

Muchas gracias por la respuesta Lepe especialmente por tus sugerencias pero te comento que el codigo que puse estaba en el proyecto de la aplicacion, luego que para no tener problemas con el Splashscrenn lo puse como comentario para asi no me muestre y confirme si el causante del error es la creacion del Splashcreen y te comento q me sigue dando el error
Como puedo saber donde estoy cometiendo el error??pues me sigue marcando el error:
Código Delphi [-]
  if FOwner <> nil then FOwner.RemoveComponent(Self);
  inherited Destroy;
Porfavor quisiera q me den una ayuda o sugerencia para poder encontrar el error pues cuando lo llevo a otras maquinas cuando cierro la aplicacion me sale un error de envio de error
Y muchas gracias por el comentario que lo tendre muy encuenta
Para que la aplicacion no sea pesada la creacion dinamica de forms como tendria q hacerla un pequeño ejemplo podria ser??? disculpa por lo novato de lo pregunto pero comentarles q recien me estoy iniciando en desarrollar aplicaciones
Responder Con Cita
  #9  
Antiguo 30-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
El error no está en el código, el error es de concepto. Lo dije para el SplashScreen, pero es aplicable a todas las ventanas / objetos que usas en tu aplicación.

Para la creación dinámica, puedes usar este hilo, como otros tantos que hay en el foro.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 02-01-2007
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Poder: 20
Choclito Va por buen camino
gracias por responder

Muchas gracias por el comentario Lepe q lo tomare en cuenta de ahora en adelante, pero que truco o como puedo hacer para q ya no me salga ese error debido a q son muchas las formas y lo unico q faltaba a la aplicacion era lo de seleccionar el Servidor de base de datos.
El cambiar de concepto y las razones las comprendi pero lo quieren ya nomas y como lo puedo arreglar
Muchas gracias por las sugerencias y ayuda q me brinden
Responder Con Cita
Respuesta



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
aplicación cliente servidor? Giniromero Conexión con bases de datos 12 25-10-2006 04:39:18
Aplicacion Cliente-Servidor D-MO Varios 2 01-09-2005 00:37:42
Aplicación Cliente Servidor NickName Internet 3 23-07-2004 15:07:22
Aplicacion cliente servidor aguilot_21 Internet 3 26-12-2003 02:07:55
Aplicacion Cliente - Servidor GIVO Conexión con bases de datos 0 30-07-2003 23:33:14


La franja horaria es GMT +2. Ahora son las 00:18:54.


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