una para EXPERTOS, arrays y comunicacion OLE
Publicado por Fajardo (99 intervenciones) el 23/08/2002 16:26:47
Hola!
Utilizo Delphi 6 enterprise, Windows 98 y cliente de Lotus Notes 4.6
Tengo un ejemplo en Visual Basic para enviar correo a travéz de Lotus Notes.
A como dios me dio entender, traducí esto a Delphi, todo funciona bien excepto por algo.
En una parte del codigo, es necesario especificar a quien va dirigido el correo, la documentacion de Lotus Notes indica que puede ser una cadena o un arreglo de cadenas. En el codigo de Visual Basic tambien se especifica si es una cadena o un arreglo de tipo variant.
En delphi, si pongo una variable tipo cadena, funciona, pero si pongo un arreglo, me indica el siguiente error:
Type not allowed in Variant Dispatch call
Segun la documentacion de Delphi esto significa que el compilador no sabe como traducir mi arreglo, pero entonces, en comunicacion OLE como envio un arreglo como parametro?
Ejemplo de codigo que SI funciona
var
sNombre:string;
begin
sNombre:='[email protected]';
Session := CreateOleObject('Notes.NotesSession');
UserName := Session.UserName;
Maildb := Session.GetDatabase('','');
If Not (Maildb.IsOpen) Then Maildb.OpenMail;
MailDoc := Maildb.CreateDocument;
MailDoc.Form := 'Memo';
MailDoc.Logo := 'StdNotesLtr34';
MailDoc.from := UserName;
MailDoc.Subject := 'Prueba de Fajardo, favor de borrar';
MailDoc.Body := 'Esto es solo una prueba, borrar este correo';
MailDoc.Send(false,sNombre);
end;
Prueba que marca el error de
'Type not allowed in Variant Dispatch call'
var
asNombre:array [1..2] of string;
begin
asNombre[1]:='[email protected]';
asNombre[2]:='[email protected]';
Session := CreateOleObject('Notes.NotesSession');
UserName := Session.UserName;
Maildb := Session.GetDatabase('','');
If Not (Maildb.IsOpen) Then Maildb.OpenMail;
MailDoc := Maildb.CreateDocument;
MailDoc.Form := 'Memo';
MailDoc.Logo := 'StdNotesLtr34';
MailDoc.from := UserName;
MailDoc.Subject := 'Prueba de Fajardo, favor de borrar';
MailDoc.Body := 'Esto es solo una prueba, borrar este correo';
MailDoc.Send(false,asNombre);
end;
Aqui aparece el error y no ejecuta el programa. Repito, la documentacion de Lotus Notes dice que puede ser una cadena o un arreglo de cadenas y el ejemplo de VisualBasic asi lo trata tambien.
Ya probe con
asNombre:array [1..2] of olevariant;
pero aparece el mismo error.
Se agradece ualquier ayuda para corregir esto.
Saludos
Fajardo.
Utilizo Delphi 6 enterprise, Windows 98 y cliente de Lotus Notes 4.6
Tengo un ejemplo en Visual Basic para enviar correo a travéz de Lotus Notes.
A como dios me dio entender, traducí esto a Delphi, todo funciona bien excepto por algo.
En una parte del codigo, es necesario especificar a quien va dirigido el correo, la documentacion de Lotus Notes indica que puede ser una cadena o un arreglo de cadenas. En el codigo de Visual Basic tambien se especifica si es una cadena o un arreglo de tipo variant.
En delphi, si pongo una variable tipo cadena, funciona, pero si pongo un arreglo, me indica el siguiente error:
Type not allowed in Variant Dispatch call
Segun la documentacion de Delphi esto significa que el compilador no sabe como traducir mi arreglo, pero entonces, en comunicacion OLE como envio un arreglo como parametro?
Ejemplo de codigo que SI funciona
var
sNombre:string;
begin
sNombre:='[email protected]';
Session := CreateOleObject('Notes.NotesSession');
UserName := Session.UserName;
Maildb := Session.GetDatabase('','');
If Not (Maildb.IsOpen) Then Maildb.OpenMail;
MailDoc := Maildb.CreateDocument;
MailDoc.Form := 'Memo';
MailDoc.Logo := 'StdNotesLtr34';
MailDoc.from := UserName;
MailDoc.Subject := 'Prueba de Fajardo, favor de borrar';
MailDoc.Body := 'Esto es solo una prueba, borrar este correo';
MailDoc.Send(false,sNombre);
end;
Prueba que marca el error de
'Type not allowed in Variant Dispatch call'
var
asNombre:array [1..2] of string;
begin
asNombre[1]:='[email protected]';
asNombre[2]:='[email protected]';
Session := CreateOleObject('Notes.NotesSession');
UserName := Session.UserName;
Maildb := Session.GetDatabase('','');
If Not (Maildb.IsOpen) Then Maildb.OpenMail;
MailDoc := Maildb.CreateDocument;
MailDoc.Form := 'Memo';
MailDoc.Logo := 'StdNotesLtr34';
MailDoc.from := UserName;
MailDoc.Subject := 'Prueba de Fajardo, favor de borrar';
MailDoc.Body := 'Esto es solo una prueba, borrar este correo';
MailDoc.Send(false,asNombre);
end;
Aqui aparece el error y no ejecuta el programa. Repito, la documentacion de Lotus Notes dice que puede ser una cadena o un arreglo de cadenas y el ejemplo de VisualBasic asi lo trata tambien.
Ya probe con
asNombre:array [1..2] of olevariant;
pero aparece el mismo error.
Se agradece ualquier ayuda para corregir esto.
Saludos
Fajardo.
Valora esta pregunta
0