Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Chequear el valor de una variable OleVariant (https://www.clubdelphi.com/foros/showthread.php?t=89653)

pacopenin 07-01-2016 17:55:51

Chequear el valor de una variable OleVariant
 
Estoy encabezonado con un problemilla que no se resolver.

Os explico. Es una automatización Ole para buscar un correo enviado mediante Outlook.

Código Delphi [-]
var
  ol : OutlookXP.TOutLookApplication;
  ns : OutlookXP.NameSpace;
  fdOutbox : OutlookXP.MAPIFolder;

  MyUserProperty: OutlookXP.UserProperty;

  ItemOL, Prop, props, myInsp, myRef: OLEVariant;
  x : String;
  b : Boolean;
  vt : TVarType;
begin

.....

   ol := OutlookXP.TOutLookApplication.Create(nil);
   ns := ol.GetNamespace('MAPI');
   try
    fdOutbox := ns.GetDefaultFolder(olFolderSentMail);

    if fdOutbox.Items <> nil then
     if fdOutbox.Items.Count > 0  then
      begin
       try
         myInsp := fdOutbox.Items.Find('[Campo De Busqueda]=' + quotedStr('Valor de Busqueda'));

//         b := myInsp = nada;

//         x := format('%p', [myInsp]);
//         x := VarToStr(myInsp);

//         x:= OleVariantToString(myInsp);

//         if (@myInsp <> @myRef) then

          if VarIsNull(myInsp) OR VarIsEmpty(myInsp) then
           mensaje('No encontrado mensaje ' + IntToStr(id))
          else
           saveEMail(myInsp);
       finally
         myInsp := VarNull;
       end;
      end;
   except
     on E: SysUtils.Exception do
      begin
       MostrarError('Se produjo un error al recuperar el correo enviado.', E.Message);
       raise;
      end;
   end;

La variable myInsp toma el valor $00000000 cuando no encuentra el valor buscado, pero no soy capaz de poner una condición para chequear eso. No puedo pasarlo a string, ni a entero... incluso hice una búsqueda de un elemento que no puede existir y lo comparaba. Nada, que no doy con ello.

Se os ocurre algo?

dec 07-01-2016 18:25:20

Hola Francisco,

¿Probaste con algo así?

Código Delphi [-]
if VarIsClear(myInsp) then
  ....

¿Y con algo así?

Código Delphi [-]
if IUnknown(Contacts) = nil then
  ....

Lo tomé de este hilo en Stakoverflow y tal vez te sirva.

pacopenin 07-01-2016 19:01:49

Estoy probando lo de VarIsClear y parece que funciona.

Había estado mirando ese post y se me había pasado por alto esa opción. Debió ser cuando estaba ya medio saturado de ver cosas.

Gracias ^\||/^\||/:):)


La franja horaria es GMT +2. Ahora son las 02:38:56.

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