Ver Mensaje Individual
  #13  
Antiguo 13-12-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Broskil Giovann,

Cita:
Empezado por Broskil Giovann
...Te adjunto todo el código para que lo veas...En Debug...el F_PS025 lo tengo a "nil" y sus componentes no tienen valor...
Te comento:

1- La función EnviarCorreoAdjunto instancia y libera el formulario TF_PS025.

2- La declaración de la función EnviarCorreoAdjunto esta en en código del Msg #12, pero la llamada a la función ¿Donde esta?.

3- Al parecer, según lo mostrado en el código del Msg #12, el formulario TF_PS025 no esta instanciado y por ello al ejecutar Synchronize(EnvioFinalizado) se produce el error de Access Violation, dado que se trata de acceder en runtime a un objeto que no ha sido creado previamente.

4- Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Unit2;

function ShowModalForm2(Msg : String) : Boolean;
var
   Form2 : TForm2;
   i : Integer;
   
begin

   try

      Form2 := TForm2.Create(nil);

      with Form2 do
         for i := 0 to 10 do
            Memo1.Lines.Add('Line-' + IntToStr(i) + ' ' + Msg);

      Form2.ShowModal;

      if Assigned(Form2) then
         Form2.Free;

      Result := True;

   except

      Result := False;

   end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   if ShowModalForm2('Text') then
      MessageDlg('La función ShowModalForm2 fue ejecutada correctamente',mtInformation,[mbOK],0)
   else
      MessageDlg('Error al ejecutar la función ShowModalForm2',mtError,[mbOK],0);
end;

end.
El código anterior instancia y libera el formulario TForm2 por medio de la función ShowModalForm2 y carga 11 líneas en el componente TMemo1, si se comenta la línea Form2 := TForm2.Create(nil) se producirá un Access Violation (Gestionado por try...except statements), al ejecutar la línea Memo1.Lines.Add('Line-' + IntToStr(i) + ' ' + Msg) dado que el objeto que contiene al componente nunca fue creado.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 13-12-2013 a las 18:49:23.
Responder Con Cita