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
public
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.