harbour activeX DateTime

  • Follow


hi,

i do read Appointment from Outlook Calendar.
this work fine except Date/Time like this:

*** Code ***
   oOutlook := CreateObject( "Outlook.Application" )
   IF Empty(oOutLook)
      RETURN
   ENDIF

   oNameSpace   := oOutlook:GetNamespace( "MAPI" )
   oAppointment := oNameSpace:getDefaultFolder( olFolderCalendar ):Items

   cFilter      := "[Start] >= '"+ cStart + "' and [Start] <= '"+ cEnd +"'"
   currentAppointment := oAppointment:Restrict(cFilter)
   iMax := currentAppointment:count()

   bSaveError  := ErrorBlock( {|oError| MyErrorHandler(oError) })

   FOR i := 1 TO iMax
       oItem   := currentAppointment:item(i)

      APPEND BLANK
      BEGIN SEQUENCE

#IFDEF __XPP__
         cStringStart := oItem:treatDateAsString( .T. ):getProperty( 
"Start")
         //
         // GERMAN Notation
         //
         cDateStart   := SUBSTR( cStringStart, 1, 8 )  // YYYYMMDDHHMMSS
         cTimeStart   := SUBSTR( cStringStart, 9, 2 ) + ":" + SUBSTR( 
cString

         REPLACE CALENDAR->STARTDATE   WITH STOD(cDateStart )
         REPLACE CALENDAR->STARTTIME   WITH cTimeStart

#ELSE
         LogMe("1 Start")
         cStringStart := oItem:getProperty( "Start")    // -> FAIL

         // never reach here
         LogMe("2 Start"+cStringStart)
....
#ENDIF
         nHit++

      RECOVER USING oError
         nMiss++
         cStringStart := ""
         LogMe("0 Start                      FAIL")
      END SEQUENCE

*** Eof ***
with Xbase++ i use oItem:treatDateAsString( .T. ):getProperty( "Start") to 
get YYYYMMDDHHMMSS String.

how to do it with harbour ?

greetings by OHR
Jimmy


0
Reply AUGE_OHR 2/28/2011 6:28:59 PM

use same code for both xbase++ and xharbour

Regards
Luiz

On 28 fev, 15:28, "AUGE_OHR" <AUGE_OHR*NOS...@WEB.DE> wrote:
> hi,
>
> i do read Appointment from Outlook Calendar.
> this work fine except Date/Time like this:
>
> *** Code ***
> =A0 =A0oOutlook :=3D CreateObject( "Outlook.Application" )
> =A0 =A0IF Empty(oOutLook)
> =A0 =A0 =A0 RETURN
> =A0 =A0ENDIF
>
> =A0 =A0oNameSpace =A0 :=3D oOutlook:GetNamespace( "MAPI" )
> =A0 =A0oAppointment :=3D oNameSpace:getDefaultFolder( olFolderCalendar ):=
Items
>
> =A0 =A0cFilter =A0 =A0 =A0:=3D "[Start] >=3D '"+ cStart + "' and [Start] =
<=3D '"+ cEnd +"'"
> =A0 =A0currentAppointment :=3D oAppointment:Restrict(cFilter)
> =A0 =A0iMax :=3D currentAppointment:count()
>
> =A0 =A0bSaveError =A0:=3D ErrorBlock( {|oError| MyErrorHandler(oError) })
>
> =A0 =A0FOR i :=3D 1 TO iMax
> =A0 =A0 =A0 =A0oItem =A0 :=3D currentAppointment:item(i)
>
> =A0 =A0 =A0 APPEND BLANK
> =A0 =A0 =A0 BEGIN SEQUENCE
>
> #IFDEF __XPP__
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D oItem:treatDateAsString( .T. ):getPr=
operty(
> "Start")
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// GERMAN Notation
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0cDateStart =A0 :=3D SUBSTR( cStringStart, 1, 8 ) =A0//=
 YYYYMMDDHHMMSS
> =A0 =A0 =A0 =A0 =A0cTimeStart =A0 :=3D SUBSTR( cStringStart, 9, 2 ) + ":"=
 + SUBSTR(
> cString
>
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->STARTDATE =A0 WITH STOD(cDateStart )
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->STARTTIME =A0 WITH cTimeStart
>
> #ELSE
> =A0 =A0 =A0 =A0 =A0LogMe("1 Start")
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D oItem:getProperty( "Start") =A0 =A0/=
/ -> FAIL
>
> =A0 =A0 =A0 =A0 =A0// never reach here
> =A0 =A0 =A0 =A0 =A0LogMe("2 Start"+cStringStart)
> ...
> #ENDIF
> =A0 =A0 =A0 =A0 =A0nHit++
>
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D ""
> =A0 =A0 =A0 =A0 =A0LogMe("0 Start =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> *** Eof ***
> with Xbase++ i use oItem:treatDateAsString( .T. ):getProperty( "Start") t=
o
> get YYYYMMDDHHMMSS String.
>
> how to do it with harbour ?
>
> greetings by OHR
> Jimmy

0
Reply culikr 2/28/2011 7:43:36 PM


This is a multi-part message in MIME format.

------=_NextPart_000_0030_01CBD796.155FB090
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

hi,

>use same code for both xbase++ and xharbour

thx for Answer, but=20
cStringStart :=3D oItem:treatDateAsString( .T. ):getProperty( =
"CreationTime")
still does not work with my harbour Version ( very old .. 0.9x )

greetings by OHR
Jimmy

------=_NextPart_000_0030_01CBD796.155FB090
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.6036" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><FONT size=3D2>hi,</FONT></DIV>
<DIV><FONT size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT size=3D2>&gt;use same code for both xbase++ and =
xharbour</FONT></DIV>
<DIV><FONT size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT size=3D2>thx for Answer, but </FONT></DIV>
<DIV><FONT size=3D2>cStringStart :=3D oItem<STRONG>:treatDateAsString( =
..T.=20
)</STRONG>:getProperty( "CreationTime")</FONT></DIV>
<DIV><FONT size=3D2>still does not work with my harbour Version ( very =
old .. 0.9x=20
)</FONT></DIV>
<DIV><BR><FONT size=3D2>greetings by =
OHR<BR>Jimmy<BR></FONT></DIV></BODY></HTML>

------=_NextPart_000_0030_01CBD796.155FB090--

0
Reply AUGE_OHR 2/28/2011 9:23:11 PM

hi,

>use same code for both xbase++ and xharbour

i have update harbour to v2.x but now it tell me "hb_itemGetDD" is wrong

   HB_FUNC( DATEASLONG )
   {
      PHB_ITEM pDate = hb_param( 1, HB_IT_DATE );

      if( pDate )
         hb_retnl( hb_itemGetDL( pDate ) );
      else
         hb_retnl( 0 );
   }

   HB_FUNC( DATEASDOUBLE )
   {
      PHB_ITEM pDate = hb_param( 1, HB_IT_DATE );

      if( pDate )
         hb_retnd( hb_itemGetDD( pDate ) );
      else
         hb_retnd( 0 );
   }

can someone help me please

greetings by OHR
Jimmy 


0
Reply AUGE_OHR 3/1/2011 10:47:05 PM

On Tue, 1 Mar 2011 23:47:05 +0100, "AUGE_OHR" <AUGE_OHR*NOSPAM@WEB.DE>
wrote:

>hi,
>
>>use same code for both xbase++ and xharbour
>
>i have update harbour to v2.x but now it tell me "hb_itemGetDD" is wrong
>
>   HB_FUNC( DATEASLONG )
>   {
>      PHB_ITEM pDate = hb_param( 1, HB_IT_DATE );
>
>      if( pDate )
>         hb_retnl( hb_itemGetDL( pDate ) );
>      else
>         hb_retnl( 0 );
>   }
>
>   HB_FUNC( DATEASDOUBLE )
>   {
>      PHB_ITEM pDate = hb_param( 1, HB_IT_DATE );
>
>      if( pDate )
>         hb_retnd( hb_itemGetDD( pDate ) );
>      else
>         hb_retnd( 0 );
>   }
>
>can someone help me please
>
>greetings by OHR
>Jimmy 
>

Hi,

I'm not sure if this will work:

   HB_FUNC( DATEASDOUBLE )
   {
      PHB_ITEM pDate = hb_param( 1, HB_IT_DATE );

      if( pDate )
         hb_retnd( ( double ) hb_itemGetDL( pDate ) );
      else
         hb_retnd( 0 );
   }

Andi
0
Reply xharbour_delete 3/1/2011 11:12:04 PM

On Mon, 28 Feb 2011 19:28:59 +0100, "AUGE_OHR"
<AUGE_OHR*NOSPAM@WEB.DE> wrote:


>*** Eof ***
>with Xbase++ i use oItem:treatDateAsString( .T. ):getProperty( "Start") to 
>get YYYYMMDDHHMMSS String.
>
>how to do it with harbour ?
>
>greetings by OHR
>Jimmy

Can you try the following:

-----8<-----
proc main()

? DATETIMESTR()

#pragma begindump
#include "hbapi.h"
#include "hbapiitm.h"
#include "hbdate.h"

HB_FUNC( DATETIMESTR )
{
   PHB_ITEM pTemp = hb_itemNew( NULL );
   int iYear, iMonth, iDay;
   char szDateTime[18];
   char szDate[9];
   char szTime[9];
   char szTmp[9];
   int i, u = 0;

   *szDateTime = 0;
   hb_dateTimeStr( szTime );
   hb_dateToday( &iYear, &iMonth, &iDay );
   hb_itemPutD( pTemp, iYear, iMonth, iDay );
   hb_dateDecStr( szDate, hb_itemGetDL( pTemp ) );

   for( i = 0; i < 8; i++ )
   {
      if (!( szTime[ i ] == ':' ))
         szTmp[ u++ ] = szTime[ i ];
   }

   szTmp[ u ] = 0;
   hb_xstrcat( szDateTime, szDate, szTmp, 0 );
   hb_retc( szDateTime );
   hb_itemRelease( pTemp );
}

#pragma enddump
-----8<-----

Andi
0
Reply xharbour_delete 3/2/2011 12:09:12 AM

hi,

please ignore both Function of lates Msg ... they are not need

i have strip down Code to "clean" harbour.
please compile/link it ( i use BCC55 ) Sample so you can "see" my Problem

i have upgrade to harbour v2.x and my Environment to

Path=C:\hrb_dev\bcc55\bin;C:\HB2\BIN;C:\WINDOWS\system32;C:\WINDOWS;
SET INCLUDE=C:\hrb_dev\bcc55\Include;C:\HB2\INCLUDE
SET LIB=C:\hrb_dev\bcc55\Lib;C:\HB2\LIB
C:
cd C:\hrb_dev\xmate
start C:\hrb_dev\xmate\xMate.Exe

and also in xMate config.
it does start fine but DateTime Field are still empty

can someone help me please

greetings by OHR
Jimmy

*** Code ***
#include      "inkey.ch"
#include     "common.ch"

#DEFINE olFolderCalendar  9

REQUEST DbfCdx

PROCEDURE MAIN
LOCAL cAppPath  := LEFT(APPNAME(.t.),LEN(APPNAME(.t.))-LEN(APPNAME(.f.)))
LOCAL zDBF      := cAppPath + "CALENDAR.DBF"
LOCAL cStart
LOCAL cEnd
LOCAL nMax := 25 // MAXROW()
LOCAL nCol := 80 // MAXCOL()
LOCAL Getlist := {}

   SET EPOCH TO YEAR( DATE() ) - 50
   SET DATE GERMAN

   cStart     := DTOC(DATE()-7) // +" 0:01 AM"
   cEnd       := DTOC(DATE())   // +" 0:01 AM"

   SELECT 1
   //
   // create DBF
   //
   IF !FILE( zDBF )
      CRE_CALENDAR( zDBF )
   ENDIF
   //
   // create Index
   //
   IF !FILE( STRTRAN(zDBF,".DBF",".CDX") )
      CRE_INDEX(zDBF)
   ENDIF

   USE ( zDBF )  VIA "DBFCDX" EXCLUSIVE
   SET INDEX TO (STRTRAN(zDBF,".DBF",".CDX"))
   OrdSetFocus(0)
   ZAP

   CLS
   @ (nMax/2)-1,(nCol/2) SAY "Show from "
   @ (nMax/2)  ,(nCol/2) SAY "Start Date" GET cStart
   @ (nMax/2)+1,(nCol/2) SAY "End   Date" GET cEnd

   READ
   CLEAR GETS

   // log it to File
   SET ALTER TO DATETIME.TXT
   // start Import
   Fillit(cStart,cEnd)
   SET ALTER TO

   GO TOP
   Browse()

RETURN

PROCEDURE Fillit(cStart,cEnd)
LOCAL oOutlook
LOCAL oNameSpace
LOCAL oAppointment
LOCAL currentAppointment
LOCAL i,iMax
LOCAL oItem
LOCAL cStringStart
LOCAL cDateStart
LOCAL cTimeStart
LOCAL nRMBS
LOCAL bSaveError
LOCAL oError
LOCAL nMax := MAXROW()
LOCAL nCol := MAXCOL()
LOCAL cFilter
LOCAL cMax
LOCAL aDateSec
LOCAL nTimeStart
LOCAL nEndStart
LOCAL cText
LOCAL nHit  := 0
LOCAL nMiss := 0

   oOutlook := CreateObject( "Outlook.Application" )
   IF Empty(oOutLook)
      RETURN
   ENDIF

   oNameSpace   := oOutlook:GetNamespace( "MAPI" )

   cFilter      := "[Start] >= '"+ cStart + "' and [Start] <= '"+ cEnd +"'"
   oAppointment := oNameSpace:getDefaultFolder( olFolderCalendar ):Items

   #IFDEF USEFIND
      currentAppointment := oAppointment:Find(cFilter)
   #ELSE
      currentAppointment := oAppointment:Restrict(cFilter)
   #ENDIF

   iMax := currentAppointment:count()
   cMax := LTRIM(STR(iMax))
   nTimeStart  := SECONDS()

   bSaveError  := ErrorBlock( {|oError| MyErrorHandler(oError) })

#IFDEF USEFIND
   i = 0
   DO While NIL <> currentAppointment
       oItem   := currentAppointment
       i++
#ELSE
   FOR i := 1 TO iMax
       oItem   := currentAppointment:item(i)
#ENDIF

      APPEND BLANK
      //
      // will work
      //
      BEGIN SEQUENCE
         LogMe("1 Start")
         cStringStart := oItem:treatDateAsString(.T.):getProperty("Start")
         LogMe("2 Start"+cStringStart)
         //
         // GERMAN Notation
         //
         cDateStart   := SUBSTR( cStringStart, 1, 8 )  // YYYYMMDDHHMMSS
         cTimeStart   := SUBSTR( cStringStart, 9, 2 )+":"+;
                                   SUBSTR(cStringStart, 11, 2 ) + ":" +;
                                   SUBSTR( cStringStart, 13, 2 )

         REPLACE CALENDAR->STARTDATE   WITH STOD(cDateStart )
         REPLACE CALENDAR->STARTTIME   WITH cTimeStart

         nHit++
      RECOVER USING oError
         nMiss++
         cStringStart := ""
         LogMe("0 Start                      FAIL")
      END SEQUENCE

      @ nMax,nCol/3 SAY cMax+"/"+STR(i)+" "+cStringStart

      BEGIN SEQUENCE
         //
         // MUST !!!
         //
         LogMe("1 CreationTime")
         cStringStart := 
oItem:treatDateAsString(.T.):getProperty("CreationTime")
         LogMe("2 CreationTime"+cStringStart)
         REPLACE CALENDAR->CREDATE     WITH cStringStart

         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 CreationTime               FAIL")
      END SEQUENCE

      BEGIN SEQUENCE
         //
         // MUST !!!
         LogMe("1 LastModificationTime")
         cStringStart := 
oItem:treatDateAsString(.T.):getProperty("LastModificationTime")
         LogMe("2 LastModificationTime"+cStringStart)
         REPLACE CALENDAR->LASTDATE    WITH cStringStart

         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 LastModificationTime       FAIL")
      END SEQUENCE

      BEGIN SEQUENCE
         //
         // ok
         //
         REPLACE CALENDAR->SUBJECT     WITH oItem:getProperty( "Subject")
         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 Subject                    FAIL")
      END SEQUENCE

      BEGIN SEQUENCE
         //
         // ok, nur wenn Eintrag ;)
         //
         REPLACE CALENDAR->LOCATION    WITH oItem:getProperty( "Location")
         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 Location                   FAIL")
      END SEQUENCE

      BEGIN SEQUENCE
         //
         // ok, nur wenn Eintrag ;)
         //
         REPLACE CALENDAR->LABELCOLOR  WITH oItem:Categories
         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 Categories                 FAIL")
      END SEQUENCE

      BEGIN SEQUENCE
         //
         // ok, nur wenn Eintrag ;)
         //
         REPLACE CALENDAR->MEMOTEXT    WITH oItem:getProperty( "Body")
         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 Body                       FAIL")
      END SEQUENCE

      BEGIN SEQUENCE
         //
         // ok
         //
         REPLACE CALENDAR->Duration    WITH oItem:getProperty( "Duration")
         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 Duration                   FAIL")
      END SEQUENCE

      BEGIN SEQUENCE
         //
         // ok, nur wenn Eintrag ;)
         //
         REPLACE CALENDAR->ALLDAY  WITH oItem:getProperty("AllDayEvent")
         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 AllDayEvent                FAIL")
      END SEQUENCE

      BEGIN SEQUENCE
         //
         // auch z.b. Geburtstag 1956 !!!
         //
         REPLACE CALENDAR->RECURREN    WITH oItem:RecurrenceState
         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 RecurrenceState            FAIL")
      END SEQUENCE

      BEGIN SEQUENCE
         //
         // fast immer default Wert
         //
         nRMBS := oItem:getProperty( "ReminderMinutesBeforeStart")
         //
         // hm ... �berlauf ...
         //
         IF nRMBS > 999
            nRMBS := 999
         ENDIF
         REPLACE CALENDAR->WARNTIME    WITH nRMBS
         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 ReminderMinutesBeforeStart FAIL")
      END SEQUENCE
      //
      // hm ... works
      //
      BEGIN SEQUENCE
         //
         // numerisch weil OUTLOOK.CH Konstante
         //
         REPLACE CALENDAR->BUSYSTAT    WITH oItem:getProperty( "BusyStatus")
         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 BusyStatus                 FAIL")
      END SEQUENCE

      BEGIN SEQUENCE
         //
         // numerisch weil OUTLOOK.CH Konstante
         //
         REPLACE CALENDAR->IMPORTAN    WITH oItem:getProperty( "Importance")
         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 Importance                 FAIL")
      END SEQUENCE

      BEGIN SEQUENCE
         //
         // numerisch weil OUTLOOK.CH Konstante
         //
         REPLACE CALENDAR->REMINDER WITH oItem:getProperty("ReminderSet")
         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 ReminderSet                FAIL")
      END SEQUENCE

      BEGIN SEQUENCE
         //
         // ok
         //
         REPLACE CALENDAR->MEETING     WITH oItem:MeetingStatus
         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 MeetingStatus              FAIL")
      END SEQUENCE

      BEGIN SEQUENCE
         //
         // hm ...
         //
         REPLACE CALENDAR->PRIVATE     WITH oItem:Sensitivity
         nHit++
      RECOVER USING oError
         nMiss++
         LogMe("0 Sensitivity                FAIL")
      END SEQUENCE

#IFDEF USEFIND
      currentAppointment := oAppointment:FindNext
   ENDDO

#ELSE
   NEXT
#ENDIF

   CLS
   ? ""
   ? ""

   nEndStart   := SECONDS()
   SET DECIMALS TO 4

#IFDEF USEFIND
   ? cText := STR(nEndStart-nTimeStart)+" Sec. for "+LTRIM(STR(iMax))+"
Records"
   LogMe(cText)
   IF iMax > 0
      ? cText := STR((nEndStart-nTimeStart)/iMax)+" Records per Sec."
      LogMe(cText)

      ? cText := STR((nEndStart-nTimeStart)/nHit)+" Sec. per activeX Calls"
      LogMe(cText)

      ? cText := STR(nMiss)+" ActiveX Calls fail"
      LogMe(cText)
   ENDIF
#ELSE
   ? cText := STR(nEndStart-nTimeStart)+" Sec. for "+LTRIM(STR(i))+"
Records"
   LogMe(cText)
   IF i > 0
      ? cText := STR((nEndStart-nTimeStart)/i)+" Records per Sec."
      LogMe(cText)

      ? cText := STR((nEndStart-nTimeStart)/nHit)+" Sec. per ActiveX Calls"
      LogMe(cText)

      ? cText := STR(nMiss)+" ActiveX Calls fail"
      LogMe(cText)
   ENDIF
#ENDIF

   ? ""
   ? ""
   ? ""

   BEGIN SEQUENCE
      oOutlook  := NIL
   RECOVER USING oError
   END SEQUENCE

   ErrorBlock( bSaveError )

RETURN

FUNCTION MyErrorHandler()    // Fehler-Routine
   BREAK
RETURN .F.


STATIC FUNCTION CRE_CALENDAR( datei, alias, id )
LOCAL p, field_list := {}

   IF VALTYPE( datei ) != "C"
      datei := "CALENDAR.DBF"
   ENDIF
   IF VALTYPE( alias ) != "C"
      p := AT( ".", datei )
      alias := IF( p > 0, SUBSTR( datei, 1, p - 1 ), datei )
   ENDIF
   IF VALTYPE( id ) != "N"
      id := 0
   ENDIF
   SELECT( id )
   IF !FILE( datei )
      AADD( field_list, { "EVENTID"    , "N",   7, 0 } )  // 9.999.999 Item
enough ?
      AADD( field_list, { "CREDATE"    , "C",  14, 0 } )  // YYYYMMDDHHMMSS
      AADD( field_list, { "LASTDATE"   , "C",  14, 0 } )

      AADD( field_list, { "SUBJECT"    , "C", 100, 0 } )
      AADD( field_list, { "LOCATION"   , "C", 100, 0 } )
      AADD( field_list, { "STARTDATE"  , "D",   8, 0 } )
      AADD( field_list, { "STARTTIME"  , "C",   8, 0 } )
*     AADD( field_list, { "ENDDATE"    , "D",   8, 0 } )
*     AADD( field_list, { "ENDTIME"    , "C",   8, 0 } )
      AADD( field_list, { "DURATION"   , "N",   5, 0 } )
      AADD( field_list, { "ALLDAY"     , "L",   1, 0 } )
      AADD( field_list, { "LABELCOLOR" , "C",  20, 0 } )
*     aadd( field_list, { "LABELTEXT"  , "C",  30, 0 } )
      AADD( field_list, { "PRIVATE"    , "N",   3, 0 } )
      AADD( field_list, { "MEETING"    , "N",   3, 0 } )
      AADD( field_list, { "REMINDER"   , "L",   1, 0 } )
      AADD( field_list, { "WARNTIME"   , "N",   3, 0 } )
*     AADD( field_list, { "REMINDTIME" , "C",  14, 0 } )
*     AADD( field_list, { "SCHEDULE"   , "N",   3, 0 } )
*     aadd( field_list, { "SHOWTIMEAS" , "C",  30, 0 } )
      AADD( field_list, { "IMPORTAN"   , "N",   3, 0 } )
      AADD( field_list, { "BUSYSTAT"   , "N",   3, 0 } )
      AADD( field_list, { "RECURREN"   , "N",   3, 0 } )  // RecurrenceState
only

      //
      // just for mark Record as deleted
      //
      AADD( field_list, { "MARKDEL"    , "L",   1, 0 } )  // is Record
deleted
      //
      // Memofields
      //
      AADD( field_list, { "MEMOTEXT"   , "M",  10, 0 } )
*     AADD( field_list, { "MAKEUP"     , "M",  10, 0 } )  // XML MarkUp

   #IFDEF __XPP__
      DBCREATE( datei, field_list, "FOXCDX")
   #ELSE
      DBCREATE( datei, field_list, "DBFCDX" )
   #ENDIF


   ENDIF

RETURN .T.

STATIC FUNCTION CRE_INDEX(zDBF)
LOCAL _tagname
LOCAL _keyfeld
LOCAL _cdxname

   _cdxname := STRTRAN(zDBF,".DBF",".CDX")

   *# SNAPCODE USE CALENDAR.DBF
   USE (zDBF) VIA "DBFCDX" EXCLUSIVE
   //
   // index on EVENTID
   //
   _tagname := "ID"
   _KEYFELD := "EVENTID"
   ORDCREATE(_cdxname,_tagname,_keyfeld)
   CLOSE INDEX

   _tagname := "STARTDATE"
   _KEYFELD := "DTOS( Startdate ) + STRTRAN( Starttime, ':', '' )"
   ORDCREATE(_cdxname,_tagname,_keyfeld)
   CLOSE INDEX

   _tagname := "SUBJECT"
   _KEYFELD := "SUBJECT"
   ORDCREATE(_cdxname,_tagname,_keyfeld)
   CLOSE INDEX

   //
   // index on "markdel" Flag to "recycle" Records
   //
   _tagname := "MARKDEL"
   _KEYFELD := "IF( MARKDEL = .T., 'Y', 'N' )"
   ORDCREATE(_cdxname,_tagname,_keyfeld)
   CLOSE INDEX

   CLOSE

RETURN ( .t. )

STATIC FUNCTION LogMe(cText)
   SET ALTER ON
   SET CONSOLE OFF

   ? DATE(),TIME(),cText

   SET CONSOLE ON
   SET ALTER OFF

RETURN nil

FUNCTION HB_GTSYS()
   REQUEST HB_GT_WVG_DEFAULT
   REQUEST HB_GT_WVT
   REQUEST HB_GT_WGU
   RETURN NIL

STATIC FUNCTION AppName( lWithPath )
   LOCAL n
   LOCAL cName := hb_argV( 0 )
   //
   DEFAULT lWithPath TO .f.
   //
   IF !( lWithPath )
      IF ( n := rat( '\', cName ) ) > 0
         cName := substr( cName, n+1 )
      ENDIF
   ENDIF
   //
   RETURN  cName

STATIC FUNCTION MsgBox( cMessage, cTitle )
   RETURN Win_MessageBox( , cMessage, cTitle )

STATIC FUNCTION AltD()
   RETURN nil
*
*
*
*** Eof ***




0
Reply AUGE_OHR 3/2/2011 3:11:53 AM

First

install xharbour from http://free.xharbour.com

use xbuild to compile your app.

Regards
Luiz

On 2 mar, 00:11, "AUGE_OHR" <AUGE_OHR*NOS...@WEB.DE> wrote:
> hi,
>
> please ignore both Function of lates Msg ... they are not need
>
> i have strip down Code to "clean" harbour.
> please compile/link it ( i use BCC55 ) Sample so you can "see" my Problem
>
> i have upgrade to harbour v2.x and my Environment to
>
> Path=3DC:\hrb_dev\bcc55\bin;C:\HB2\BIN;C:\WINDOWS\system32;C:\WINDOWS;
> SET INCLUDE=3DC:\hrb_dev\bcc55\Include;C:\HB2\INCLUDE
> SET LIB=3DC:\hrb_dev\bcc55\Lib;C:\HB2\LIB
> C:
> cd C:\hrb_dev\xmate
> start C:\hrb_dev\xmate\xMate.Exe
>
> and also in xMate config.
> it does start fine but DateTime Field are still empty
>
> can someone help me please
>
> greetings by OHR
> Jimmy
>
> *** Code ***
> #include =A0 =A0 =A0"inkey.ch"
> #include =A0 =A0 "common.ch"
>
> #DEFINE olFolderCalendar =A09
>
> REQUEST DbfCdx
>
> PROCEDURE MAIN
> LOCAL cAppPath =A0:=3D LEFT(APPNAME(.t.),LEN(APPNAME(.t.))-LEN(APPNAME(.f=
..)))
> LOCAL zDBF =A0 =A0 =A0:=3D cAppPath + "CALENDAR.DBF"
> LOCAL cStart
> LOCAL cEnd
> LOCAL nMax :=3D 25 // MAXROW()
> LOCAL nCol :=3D 80 // MAXCOL()
> LOCAL Getlist :=3D {}
>
> =A0 =A0SET EPOCH TO YEAR( DATE() ) - 50
> =A0 =A0SET DATE GERMAN
>
> =A0 =A0cStart =A0 =A0 :=3D DTOC(DATE()-7) // +" 0:01 AM"
> =A0 =A0cEnd =A0 =A0 =A0 :=3D DTOC(DATE()) =A0 // +" 0:01 AM"
>
> =A0 =A0SELECT 1
> =A0 =A0//
> =A0 =A0// create DBF
> =A0 =A0//
> =A0 =A0IF !FILE( zDBF )
> =A0 =A0 =A0 CRE_CALENDAR( zDBF )
> =A0 =A0ENDIF
> =A0 =A0//
> =A0 =A0// create Index
> =A0 =A0//
> =A0 =A0IF !FILE( STRTRAN(zDBF,".DBF",".CDX") )
> =A0 =A0 =A0 CRE_INDEX(zDBF)
> =A0 =A0ENDIF
>
> =A0 =A0USE ( zDBF ) =A0VIA "DBFCDX" EXCLUSIVE
> =A0 =A0SET INDEX TO (STRTRAN(zDBF,".DBF",".CDX"))
> =A0 =A0OrdSetFocus(0)
> =A0 =A0ZAP
>
> =A0 =A0CLS
> =A0 =A0@ (nMax/2)-1,(nCol/2) SAY "Show from "
> =A0 =A0@ (nMax/2) =A0,(nCol/2) SAY "Start Date" GET cStart
> =A0 =A0@ (nMax/2)+1,(nCol/2) SAY "End =A0 Date" GET cEnd
>
> =A0 =A0READ
> =A0 =A0CLEAR GETS
>
> =A0 =A0// log it to File
> =A0 =A0SET ALTER TO DATETIME.TXT
> =A0 =A0// start Import
> =A0 =A0Fillit(cStart,cEnd)
> =A0 =A0SET ALTER TO
>
> =A0 =A0GO TOP
> =A0 =A0Browse()
>
> RETURN
>
> PROCEDURE Fillit(cStart,cEnd)
> LOCAL oOutlook
> LOCAL oNameSpace
> LOCAL oAppointment
> LOCAL currentAppointment
> LOCAL i,iMax
> LOCAL oItem
> LOCAL cStringStart
> LOCAL cDateStart
> LOCAL cTimeStart
> LOCAL nRMBS
> LOCAL bSaveError
> LOCAL oError
> LOCAL nMax :=3D MAXROW()
> LOCAL nCol :=3D MAXCOL()
> LOCAL cFilter
> LOCAL cMax
> LOCAL aDateSec
> LOCAL nTimeStart
> LOCAL nEndStart
> LOCAL cText
> LOCAL nHit =A0:=3D 0
> LOCAL nMiss :=3D 0
>
> =A0 =A0oOutlook :=3D CreateObject( "Outlook.Application" )
> =A0 =A0IF Empty(oOutLook)
> =A0 =A0 =A0 RETURN
> =A0 =A0ENDIF
>
> =A0 =A0oNameSpace =A0 :=3D oOutlook:GetNamespace( "MAPI" )
>
> =A0 =A0cFilter =A0 =A0 =A0:=3D "[Start] >=3D '"+ cStart + "' and [Start] =
<=3D '"+ cEnd +"'"
> =A0 =A0oAppointment :=3D oNameSpace:getDefaultFolder( olFolderCalendar ):=
Items
>
> =A0 =A0#IFDEF USEFIND
> =A0 =A0 =A0 currentAppointment :=3D oAppointment:Find(cFilter)
> =A0 =A0#ELSE
> =A0 =A0 =A0 currentAppointment :=3D oAppointment:Restrict(cFilter)
> =A0 =A0#ENDIF
>
> =A0 =A0iMax :=3D currentAppointment:count()
> =A0 =A0cMax :=3D LTRIM(STR(iMax))
> =A0 =A0nTimeStart =A0:=3D SECONDS()
>
> =A0 =A0bSaveError =A0:=3D ErrorBlock( {|oError| MyErrorHandler(oError) })
>
> #IFDEF USEFIND
> =A0 =A0i =3D 0
> =A0 =A0DO While NIL <> currentAppointment
> =A0 =A0 =A0 =A0oItem =A0 :=3D currentAppointment
> =A0 =A0 =A0 =A0i++
> #ELSE
> =A0 =A0FOR i :=3D 1 TO iMax
> =A0 =A0 =A0 =A0oItem =A0 :=3D currentAppointment:item(i)
> #ENDIF
>
> =A0 =A0 =A0 APPEND BLANK
> =A0 =A0 =A0 //
> =A0 =A0 =A0 // will work
> =A0 =A0 =A0 //
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0LogMe("1 Start")
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D oItem:treatDateAsString(.T.):getProp=
erty("Start")
> =A0 =A0 =A0 =A0 =A0LogMe("2 Start"+cStringStart)
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// GERMAN Notation
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0cDateStart =A0 :=3D SUBSTR( cStringStart, 1, 8 ) =A0//=
 YYYYMMDDHHMMSS
> =A0 =A0 =A0 =A0 =A0cTimeStart =A0 :=3D SUBSTR( cStringStart, 9, 2 )+":"+;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0SU=
BSTR(cStringStart, 11, 2 ) + ":" +;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0SU=
BSTR( cStringStart, 13, 2 )
>
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->STARTDATE =A0 WITH STOD(cDateStart )
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->STARTTIME =A0 WITH cTimeStart
>
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D ""
> =A0 =A0 =A0 =A0 =A0LogMe("0 Start =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 @ nMax,nCol/3 SAY cMax+"/"+STR(i)+" "+cStringStart
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// MUST !!!
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0LogMe("1 CreationTime")
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D
> oItem:treatDateAsString(.T.):getProperty("CreationTime")
> =A0 =A0 =A0 =A0 =A0LogMe("2 CreationTime"+cStringStart)
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->CREDATE =A0 =A0 WITH cStringStart
>
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 CreationTime =A0 =A0 =A0 =A0 =A0 =A0 =A0 FAIL=
")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// MUST !!!
> =A0 =A0 =A0 =A0 =A0LogMe("1 LastModificationTime")
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D
> oItem:treatDateAsString(.T.):getProperty("LastModificationTime")
> =A0 =A0 =A0 =A0 =A0LogMe("2 LastModificationTime"+cStringStart)
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->LASTDATE =A0 =A0WITH cStringStart
>
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 LastModificationTime =A0 =A0 =A0 FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->SUBJECT =A0 =A0 WITH oItem:getProper=
ty( "Subject")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Subject =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok, nur wenn Eintrag ;)
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->LOCATION =A0 =A0WITH oItem:getProper=
ty( "Location")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Location =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok, nur wenn Eintrag ;)
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->LABELCOLOR =A0WITH oItem:Categories
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Categories =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 FA=
IL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok, nur wenn Eintrag ;)
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->MEMOTEXT =A0 =A0WITH oItem:getProper=
ty( "Body")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Body =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->Duration =A0 =A0WITH oItem:getProper=
ty( "Duration")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Duration =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok, nur wenn Eintrag ;)
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->ALLDAY =A0WITH oItem:getProperty("Al=
lDayEvent")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 AllDayEvent =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0FA=
IL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// auch z.b. Geburtstag 1956 !!!
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->RECURREN =A0 =A0WITH oItem:Recurrenc=
eState
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 RecurrenceState =A0 =A0 =A0 =A0 =A0 =A0FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// fast immer default Wert
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0nRMBS :=3D oItem:getProperty( "ReminderMinutesBeforeSt=
art")
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// hm ... =EF=BF=BDberlauf ...
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0IF nRMBS > 999
> =A0 =A0 =A0 =A0 =A0 =A0 nRMBS :=3D 999
> =A0 =A0 =A0 =A0 =A0ENDIF
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->WARNTIME =A0 =A0WITH nRMBS
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 ReminderMinutesBeforeStart FAIL")
> =A0 =A0 =A0 END SEQUENCE
> =A0 =A0 =A0 //
> =A0 =A0 =A0 // hm ... works
> =A0 =A0 =A0 //
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// numerisch weil OUTLOOK.CH Konstante
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->BUSYSTAT =A0 =A0WITH oItem:getProper=
ty( "BusyStatus")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 BusyStatus =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 FA=
IL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// numerisch weil OUTLOOK.CH Konstante
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->IMPORTAN =A0 =A0WITH oItem:getProper=
ty( "Importance")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Importance =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 FA=
IL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// numerisch weil OUTLOOK.CH Konstante
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->REMINDER WITH oItem:getProperty("Rem=
inderSet")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 ReminderSet =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0FA=
IL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->MEETING =A0 =A0 WITH oItem:MeetingSt=
atus
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 MeetingStatus =A0 =A0 =A0 =A0 =A0 =A0 =A0FAIL=
")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// hm ...
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->PRIVATE =A0 =A0 WITH oItem:Sensitivi=
ty
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Sensitivity =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0FA=
IL")
> =A0 =A0 =A0 END SEQUENCE
>
> #IFDEF USEFIND
> =A0 =A0 =A0 currentAppointment :=3D oAppointment:FindNext
> =A0 =A0ENDDO
>
> #ELSE
> =A0 =A0NEXT
> #ENDIF
>
> =A0 =A0CLS
> =A0 =A0? ""
> =A0 =A0? ""
>
> =A0 =A0nEndStart =A0 :=3D SECONDS()
> =A0 =A0SET DECIMALS TO 4
>
> #IFDEF USEFIND
> =A0 =A0? cText :=3D STR(nEndStart-nTimeStart)+" Sec. for "+LTRIM(STR(iMax=
))+"
> Records"
> =A0 =A0LogMe(cText)
> =A0 =A0IF iMax > 0
> =A0 =A0 =A0 ? cText :=3D STR((nEndStart-nTimeStart)/iMax)+" Records per S=
ec."
> =A0 =A0 =A0 LogMe(cText)
>
> =A0 =A0 =A0 ? cText :=3D STR((nEndStart-nTimeStart)/nHit)+" Sec. per acti=
veX Calls"
> =A0 =A0 =A0 LogMe(cText)
>
> =A0 =A0 =A0 ? cText :=3D STR(nMiss)+" ActiveX Calls fail"
> =A0 =A0 =A0 LogMe(cText)
> =A0 =A0ENDIF
> #ELSE
> =A0 =A0? cText :=3D STR(nEndStart-nTimeStart)+" Sec. for "+LTRIM(STR(i))+=
"
> Records"
> =A0 =A0LogMe(cText)
> =A0 =A0IF i > 0
> =A0 =A0 =A0 ? cText :=3D STR((nEndStart-nTimeStart)/i)+" Records per Sec.=
"
> =A0 =A0 =A0 LogMe(cText)
>
> =A0 =A0 =A0 ? cText :=3D STR((nEndStart-nTimeStart)/nHit)+" Sec. per Acti=
veX Calls"
> =A0 =A0 =A0 LogMe(cText)
>
> =A0 =A0 =A0 ? cText :=3D STR(nMiss)+" ActiveX Calls fail"
> =A0 =A0 =A0 LogMe(cText)
> =A0 =A0ENDIF
> #ENDIF
>
> =A0 =A0? ""
> =A0 =A0? ""
> =A0 =A0? ""
>
> =A0 =A0BEGIN SEQUENCE
> =A0 =A0 =A0 oOutlook =A0:=3D NIL
> =A0 =A0RECOVER USING oError
> =A0 =A0END SEQUENCE
>
> =A0 =A0ErrorBlock( bSaveError )
>
> RETURN
>
> FUNCTION MyErrorHandler() =A0 =A0// Fehler-Routine
> =A0 =A0BREAK
> RETURN .F.
>
> STATIC FUNCTION CRE_CALENDAR( datei, alias, id )
> LOCAL p, field_list :=3D {}
>
> =A0 =A0IF VALTYPE( datei ) !=3D "C"
> =A0 =A0 =A0 datei :=3D "CALENDAR.DBF"
> =A0 =A0ENDIF
> =A0 =A0IF VALTYPE( alias ) !=3D "C"
> =A0 =A0 =A0 p :=3D AT( ".", datei )
> =A0 =A0 =A0 alias :=3D IF( p > 0, SUBSTR( datei, 1, p - 1 ), datei )
> =A0 =A0ENDIF
> =A0 =A0IF VALTYPE( id ) !=3D "N"
> =A0 =A0 =A0 id :=3D 0
> =A0 =A0ENDIF
> =A0 =A0SELECT( id )
> ...
>
> mais =BB

0
Reply culikr 3/2/2011 1:57:47 PM

Hello Jimmy,

    Did you try to compile it using hbmk2?
    I did here but since I do not have Outlook it does not work but compiles 
(also I do not have BCC - just have MingW).
    Follows my command line:

hbmk2 test -gtwvg -lhbwin -lhbtip -lgtwvw -lhbct -lxhb -lxhb -gui -run

    BTW for what is that code for? Could you please explain it? Seems 
interesting but I didn�t understand the whole idea.

Qatan


"AUGE_OHR" <AUGE_OHR*NOSPAM@WEB.DE> wrote in message 
news:ikkcl1$ga8$02$1@news.t-online.com...
> hi,
>
> please ignore both Function of lates Msg ... they are not need
>
> i have strip down Code to "clean" harbour.
> please compile/link it ( i use BCC55 ) Sample so you can "see" my Problem
>
> i have upgrade to harbour v2.x and my Environment to
>
> Path=C:\hrb_dev\bcc55\bin;C:\HB2\BIN;C:\WINDOWS\system32;C:\WINDOWS;
> SET INCLUDE=C:\hrb_dev\bcc55\Include;C:\HB2\INCLUDE
> SET LIB=C:\hrb_dev\bcc55\Lib;C:\HB2\LIB
> C:
> cd C:\hrb_dev\xmate
> start C:\hrb_dev\xmate\xMate.Exe
>
> and also in xMate config.
> it does start fine but DateTime Field are still empty
>
> can someone help me please
>
> greetings by OHR
> Jimmy
>
> *** Code ***
> #include      "inkey.ch"
> #include     "common.ch"
>
> #DEFINE olFolderCalendar  9
>
> REQUEST DbfCdx
>
> PROCEDURE MAIN
> LOCAL cAppPath  := LEFT(APPNAME(.t.),LEN(APPNAME(.t.))-LEN(APPNAME(.f.)))
> LOCAL zDBF      := cAppPath + "CALENDAR.DBF"
> LOCAL cStart
> LOCAL cEnd
> LOCAL nMax := 25 // MAXROW()
> LOCAL nCol := 80 // MAXCOL()
> LOCAL Getlist := {}
>
>   SET EPOCH TO YEAR( DATE() ) - 50
>   SET DATE GERMAN
>
>   cStart     := DTOC(DATE()-7) // +" 0:01 AM"
>   cEnd       := DTOC(DATE())   // +" 0:01 AM"
>
>   SELECT 1
>   //
>   // create DBF
>   //
>   IF !FILE( zDBF )
>      CRE_CALENDAR( zDBF )
>   ENDIF
>   //
>   // create Index
>   //
>   IF !FILE( STRTRAN(zDBF,".DBF",".CDX") )
>      CRE_INDEX(zDBF)
>   ENDIF
>
>   USE ( zDBF )  VIA "DBFCDX" EXCLUSIVE
>   SET INDEX TO (STRTRAN(zDBF,".DBF",".CDX"))
>   OrdSetFocus(0)
>   ZAP
>
>   CLS
>   @ (nMax/2)-1,(nCol/2) SAY "Show from "
>   @ (nMax/2)  ,(nCol/2) SAY "Start Date" GET cStart
>   @ (nMax/2)+1,(nCol/2) SAY "End   Date" GET cEnd
>
>   READ
>   CLEAR GETS
>
>   // log it to File
>   SET ALTER TO DATETIME.TXT
>   // start Import
>   Fillit(cStart,cEnd)
>   SET ALTER TO
>
>   GO TOP
>   Browse()
>
> RETURN
>
> PROCEDURE Fillit(cStart,cEnd)
> LOCAL oOutlook
> LOCAL oNameSpace
> LOCAL oAppointment
> LOCAL currentAppointment
> LOCAL i,iMax
> LOCAL oItem
> LOCAL cStringStart
> LOCAL cDateStart
> LOCAL cTimeStart
> LOCAL nRMBS
> LOCAL bSaveError
> LOCAL oError
> LOCAL nMax := MAXROW()
> LOCAL nCol := MAXCOL()
> LOCAL cFilter
> LOCAL cMax
> LOCAL aDateSec
> LOCAL nTimeStart
> LOCAL nEndStart
> LOCAL cText
> LOCAL nHit  := 0
> LOCAL nMiss := 0
>
>   oOutlook := CreateObject( "Outlook.Application" )
>   IF Empty(oOutLook)
>      RETURN
>   ENDIF
>
>   oNameSpace   := oOutlook:GetNamespace( "MAPI" )
>
>   cFilter      := "[Start] >= '"+ cStart + "' and [Start] <= '"+ cEnd +"'"
>   oAppointment := oNameSpace:getDefaultFolder( olFolderCalendar ):Items
>
>   #IFDEF USEFIND
>      currentAppointment := oAppointment:Find(cFilter)
>   #ELSE
>      currentAppointment := oAppointment:Restrict(cFilter)
>   #ENDIF
>
>   iMax := currentAppointment:count()
>   cMax := LTRIM(STR(iMax))
>   nTimeStart  := SECONDS()
>
>   bSaveError  := ErrorBlock( {|oError| MyErrorHandler(oError) })
>
> #IFDEF USEFIND
>   i = 0
>   DO While NIL <> currentAppointment
>       oItem   := currentAppointment
>       i++
> #ELSE
>   FOR i := 1 TO iMax
>       oItem   := currentAppointment:item(i)
> #ENDIF
>
>      APPEND BLANK
>      //
>      // will work
>      //
>      BEGIN SEQUENCE
>         LogMe("1 Start")
>         cStringStart := oItem:treatDateAsString(.T.):getProperty("Start")
>         LogMe("2 Start"+cStringStart)
>         //
>         // GERMAN Notation
>         //
>         cDateStart   := SUBSTR( cStringStart, 1, 8 )  // YYYYMMDDHHMMSS
>         cTimeStart   := SUBSTR( cStringStart, 9, 2 )+":"+;
>                                   SUBSTR(cStringStart, 11, 2 ) + ":" +;
>                                   SUBSTR( cStringStart, 13, 2 )
>
>         REPLACE CALENDAR->STARTDATE   WITH STOD(cDateStart )
>         REPLACE CALENDAR->STARTTIME   WITH cTimeStart
>
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         cStringStart := ""
>         LogMe("0 Start                      FAIL")
>      END SEQUENCE
>
>      @ nMax,nCol/3 SAY cMax+"/"+STR(i)+" "+cStringStart
>
>      BEGIN SEQUENCE
>         //
>         // MUST !!!
>         //
>         LogMe("1 CreationTime")
>         cStringStart := 
> oItem:treatDateAsString(.T.):getProperty("CreationTime")
>         LogMe("2 CreationTime"+cStringStart)
>         REPLACE CALENDAR->CREDATE     WITH cStringStart
>
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 CreationTime               FAIL")
>      END SEQUENCE
>
>      BEGIN SEQUENCE
>         //
>         // MUST !!!
>         LogMe("1 LastModificationTime")
>         cStringStart := 
> oItem:treatDateAsString(.T.):getProperty("LastModificationTime")
>         LogMe("2 LastModificationTime"+cStringStart)
>         REPLACE CALENDAR->LASTDATE    WITH cStringStart
>
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 LastModificationTime       FAIL")
>      END SEQUENCE
>
>      BEGIN SEQUENCE
>         //
>         // ok
>         //
>         REPLACE CALENDAR->SUBJECT     WITH oItem:getProperty( "Subject")
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 Subject                    FAIL")
>      END SEQUENCE
>
>      BEGIN SEQUENCE
>         //
>         // ok, nur wenn Eintrag ;)
>         //
>         REPLACE CALENDAR->LOCATION    WITH oItem:getProperty( "Location")
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 Location                   FAIL")
>      END SEQUENCE
>
>      BEGIN SEQUENCE
>         //
>         // ok, nur wenn Eintrag ;)
>         //
>         REPLACE CALENDAR->LABELCOLOR  WITH oItem:Categories
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 Categories                 FAIL")
>      END SEQUENCE
>
>      BEGIN SEQUENCE
>         //
>         // ok, nur wenn Eintrag ;)
>         //
>         REPLACE CALENDAR->MEMOTEXT    WITH oItem:getProperty( "Body")
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 Body                       FAIL")
>      END SEQUENCE
>
>      BEGIN SEQUENCE
>         //
>         // ok
>         //
>         REPLACE CALENDAR->Duration    WITH oItem:getProperty( "Duration")
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 Duration                   FAIL")
>      END SEQUENCE
>
>      BEGIN SEQUENCE
>         //
>         // ok, nur wenn Eintrag ;)
>         //
>         REPLACE CALENDAR->ALLDAY  WITH oItem:getProperty("AllDayEvent")
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 AllDayEvent                FAIL")
>      END SEQUENCE
>
>      BEGIN SEQUENCE
>         //
>         // auch z.b. Geburtstag 1956 !!!
>         //
>         REPLACE CALENDAR->RECURREN    WITH oItem:RecurrenceState
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 RecurrenceState            FAIL")
>      END SEQUENCE
>
>      BEGIN SEQUENCE
>         //
>         // fast immer default Wert
>         //
>         nRMBS := oItem:getProperty( "ReminderMinutesBeforeStart")
>         //
>         // hm ... �berlauf ...
>         //
>         IF nRMBS > 999
>            nRMBS := 999
>         ENDIF
>         REPLACE CALENDAR->WARNTIME    WITH nRMBS
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 ReminderMinutesBeforeStart FAIL")
>      END SEQUENCE
>      //
>      // hm ... works
>      //
>      BEGIN SEQUENCE
>         //
>         // numerisch weil OUTLOOK.CH Konstante
>         //
>         REPLACE CALENDAR->BUSYSTAT    WITH oItem:getProperty( 
> "BusyStatus")
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 BusyStatus                 FAIL")
>      END SEQUENCE
>
>      BEGIN SEQUENCE
>         //
>         // numerisch weil OUTLOOK.CH Konstante
>         //
>         REPLACE CALENDAR->IMPORTAN    WITH oItem:getProperty( 
> "Importance")
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 Importance                 FAIL")
>      END SEQUENCE
>
>      BEGIN SEQUENCE
>         //
>         // numerisch weil OUTLOOK.CH Konstante
>         //
>         REPLACE CALENDAR->REMINDER WITH oItem:getProperty("ReminderSet")
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 ReminderSet                FAIL")
>      END SEQUENCE
>
>      BEGIN SEQUENCE
>         //
>         // ok
>         //
>         REPLACE CALENDAR->MEETING     WITH oItem:MeetingStatus
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 MeetingStatus              FAIL")
>      END SEQUENCE
>
>      BEGIN SEQUENCE
>         //
>         // hm ...
>         //
>         REPLACE CALENDAR->PRIVATE     WITH oItem:Sensitivity
>         nHit++
>      RECOVER USING oError
>         nMiss++
>         LogMe("0 Sensitivity                FAIL")
>      END SEQUENCE
>
> #IFDEF USEFIND
>      currentAppointment := oAppointment:FindNext
>   ENDDO
>
> #ELSE
>   NEXT
> #ENDIF
>
>   CLS
>   ? ""
>   ? ""
>
>   nEndStart   := SECONDS()
>   SET DECIMALS TO 4
>
> #IFDEF USEFIND
>   ? cText := STR(nEndStart-nTimeStart)+" Sec. for "+LTRIM(STR(iMax))+"
> Records"
>   LogMe(cText)
>   IF iMax > 0
>      ? cText := STR((nEndStart-nTimeStart)/iMax)+" Records per Sec."
>      LogMe(cText)
>
>      ? cText := STR((nEndStart-nTimeStart)/nHit)+" Sec. per activeX Calls"
>      LogMe(cText)
>
>      ? cText := STR(nMiss)+" ActiveX Calls fail"
>      LogMe(cText)
>   ENDIF
> #ELSE
>   ? cText := STR(nEndStart-nTimeStart)+" Sec. for "+LTRIM(STR(i))+"
> Records"
>   LogMe(cText)
>   IF i > 0
>      ? cText := STR((nEndStart-nTimeStart)/i)+" Records per Sec."
>      LogMe(cText)
>
>      ? cText := STR((nEndStart-nTimeStart)/nHit)+" Sec. per ActiveX Calls"
>      LogMe(cText)
>
>      ? cText := STR(nMiss)+" ActiveX Calls fail"
>      LogMe(cText)
>   ENDIF
> #ENDIF
>
>   ? ""
>   ? ""
>   ? ""
>
>   BEGIN SEQUENCE
>      oOutlook  := NIL
>   RECOVER USING oError
>   END SEQUENCE
>
>   ErrorBlock( bSaveError )
>
> RETURN
>
> FUNCTION MyErrorHandler()    // Fehler-Routine
>   BREAK
> RETURN .F.
>
>
> STATIC FUNCTION CRE_CALENDAR( datei, alias, id )
> LOCAL p, field_list := {}
>
>   IF VALTYPE( datei ) != "C"
>      datei := "CALENDAR.DBF"
>   ENDIF
>   IF VALTYPE( alias ) != "C"
>      p := AT( ".", datei )
>      alias := IF( p > 0, SUBSTR( datei, 1, p - 1 ), datei )
>   ENDIF
>   IF VALTYPE( id ) != "N"
>      id := 0
>   ENDIF
>   SELECT( id )
>   IF !FILE( datei )
>      AADD( field_list, { "EVENTID"    , "N",   7, 0 } )  // 9.999.999 Item
> enough ?
>      AADD( field_list, { "CREDATE"    , "C",  14, 0 } )  // YYYYMMDDHHMMSS
>      AADD( field_list, { "LASTDATE"   , "C",  14, 0 } )
>
>      AADD( field_list, { "SUBJECT"    , "C", 100, 0 } )
>      AADD( field_list, { "LOCATION"   , "C", 100, 0 } )
>      AADD( field_list, { "STARTDATE"  , "D",   8, 0 } )
>      AADD( field_list, { "STARTTIME"  , "C",   8, 0 } )
> *     AADD( field_list, { "ENDDATE"    , "D",   8, 0 } )
> *     AADD( field_list, { "ENDTIME"    , "C",   8, 0 } )
>      AADD( field_list, { "DURATION"   , "N",   5, 0 } )
>      AADD( field_list, { "ALLDAY"     , "L",   1, 0 } )
>      AADD( field_list, { "LABELCOLOR" , "C",  20, 0 } )
> *     aadd( field_list, { "LABELTEXT"  , "C",  30, 0 } )
>      AADD( field_list, { "PRIVATE"    , "N",   3, 0 } )
>      AADD( field_list, { "MEETING"    , "N",   3, 0 } )
>      AADD( field_list, { "REMINDER"   , "L",   1, 0 } )
>      AADD( field_list, { "WARNTIME"   , "N",   3, 0 } )
> *     AADD( field_list, { "REMINDTIME" , "C",  14, 0 } )
> *     AADD( field_list, { "SCHEDULE"   , "N",   3, 0 } )
> *     aadd( field_list, { "SHOWTIMEAS" , "C",  30, 0 } )
>      AADD( field_list, { "IMPORTAN"   , "N",   3, 0 } )
>      AADD( field_list, { "BUSYSTAT"   , "N",   3, 0 } )
>      AADD( field_list, { "RECURREN"   , "N",   3, 0 } )  // 
> RecurrenceState
> only
>
>      //
>      // just for mark Record as deleted
>      //
>      AADD( field_list, { "MARKDEL"    , "L",   1, 0 } )  // is Record
> deleted
>      //
>      // Memofields
>      //
>      AADD( field_list, { "MEMOTEXT"   , "M",  10, 0 } )
> *     AADD( field_list, { "MAKEUP"     , "M",  10, 0 } )  // XML MarkUp
>
>   #IFDEF __XPP__
>      DBCREATE( datei, field_list, "FOXCDX")
>   #ELSE
>      DBCREATE( datei, field_list, "DBFCDX" )
>   #ENDIF
>
>
>   ENDIF
>
> RETURN .T.
>
> STATIC FUNCTION CRE_INDEX(zDBF)
> LOCAL _tagname
> LOCAL _keyfeld
> LOCAL _cdxname
>
>   _cdxname := STRTRAN(zDBF,".DBF",".CDX")
>
>   *# SNAPCODE USE CALENDAR.DBF
>   USE (zDBF) VIA "DBFCDX" EXCLUSIVE
>   //
>   // index on EVENTID
>   //
>   _tagname := "ID"
>   _KEYFELD := "EVENTID"
>   ORDCREATE(_cdxname,_tagname,_keyfeld)
>   CLOSE INDEX
>
>   _tagname := "STARTDATE"
>   _KEYFELD := "DTOS( Startdate ) + STRTRAN( Starttime, ':', '' )"
>   ORDCREATE(_cdxname,_tagname,_keyfeld)
>   CLOSE INDEX
>
>   _tagname := "SUBJECT"
>   _KEYFELD := "SUBJECT"
>   ORDCREATE(_cdxname,_tagname,_keyfeld)
>   CLOSE INDEX
>
>   //
>   // index on "markdel" Flag to "recycle" Records
>   //
>   _tagname := "MARKDEL"
>   _KEYFELD := "IF( MARKDEL = .T., 'Y', 'N' )"
>   ORDCREATE(_cdxname,_tagname,_keyfeld)
>   CLOSE INDEX
>
>   CLOSE
>
> RETURN ( .t. )
>
> STATIC FUNCTION LogMe(cText)
>   SET ALTER ON
>   SET CONSOLE OFF
>
>   ? DATE(),TIME(),cText
>
>   SET CONSOLE ON
>   SET ALTER OFF
>
> RETURN nil
>
> FUNCTION HB_GTSYS()
>   REQUEST HB_GT_WVG_DEFAULT
>   REQUEST HB_GT_WVT
>   REQUEST HB_GT_WGU
>   RETURN NIL
>
> STATIC FUNCTION AppName( lWithPath )
>   LOCAL n
>   LOCAL cName := hb_argV( 0 )
>   //
>   DEFAULT lWithPath TO .f.
>   //
>   IF !( lWithPath )
>      IF ( n := rat( '\', cName ) ) > 0
>         cName := substr( cName, n+1 )
>      ENDIF
>   ENDIF
>   //
>   RETURN  cName
>
> STATIC FUNCTION MsgBox( cMessage, cTitle )
>   RETURN Win_MessageBox( , cMessage, cTitle )
>
> STATIC FUNCTION AltD()
>   RETURN nil
> *
> *
> *
> *** Eof ***
>
>
>
> 



--- news://freenews.netfront.net/ - complaints: news@netfront.net ---
0
Reply Qatan 3/2/2011 4:11:44 PM

hi,

thx for help

>First
>install xharbour from http://free.xharbour.com

i did have installed harbour v2.x.
is there a Differenz when build Application ?

>use xbuild to compile your app.

i can compile / link and run my harbour Application.
it is only the DateTime from Outlook activeX which fail

what did i miss ?

greetings by OHR
Jimmy


0
Reply AUGE_OHR 3/2/2011 4:42:23 PM

hi,

>    Did you try to compile it using hbmk2?

i use Bedi Pritpal GTWVG Constribution as Environment
and start compile / link from xMate.

all my harbour Application work fine it is only the
Outlook activeX DateTime which fail

>BTW for what is that code for? Could you please explain it? Seems 
>interesting but I didn�t understand the whole idea.

which activeX you can read / write to Outlook Contact, Mail
and Calendar using "simple" MAPI.

to use Outlook in a Network you need Exchange ( or SBS)
to share it so i made a Xbase++ Clone for it and share DBF

now i try to port Xbase++ Code to harbour to get a single EXE
but DateTime :treatDateAsString(.T.):getProperty("Start") fail

greetings by OHR
Jimmy


0
Reply AUGE_OHR 3/2/2011 4:53:57 PM

Xharbour have gtwvg

compile your app with xharbour using xbuild utility

Regards
Luiz

On 2 mar, 13:53, "AUGE_OHR" <AUGE_OHR*NOS...@WEB.DE> wrote:
> hi,
>
> > =A0 =A0Did you try to compile it using hbmk2?
>
> i use Bedi Pritpal GTWVG Constribution as Environment
> and start compile / link from xMate.
>
> all my harbour Application work fine it is only the
> Outlook activeX DateTime which fail
>
> >BTW for what is that code for? Could you please explain it? Seems
> >interesting but I didn t understand the whole idea.
>
> which activeX you can read / write to Outlook Contact, Mail
> and Calendar using "simple" MAPI.
>
> to use Outlook in a Network you need Exchange ( or SBS)
> to share it so i made a Xbase++ Clone for it and share DBF
>
> now i try to port Xbase++ Code to harbour to get a single EXE
> but DateTime :treatDateAsString(.T.):getProperty("Start") fail
>
> greetings by OHR
> Jimmy

0
Reply culikr 3/2/2011 5:13:58 PM

Hello Jimmy,

    Thanks for explaining.
    It is interesting...

Qatan

"AUGE_OHR" <AUGE_OHR*NOSPAM@WEB.DE> wrote in message 
news:iklsnl$ef6$01$1@news.t-online.com...
> hi,
>
>>    Did you try to compile it using hbmk2?
>
> i use Bedi Pritpal GTWVG Constribution as Environment
> and start compile / link from xMate.
>
> all my harbour Application work fine it is only the
> Outlook activeX DateTime which fail
>
>>BTW for what is that code for? Could you please explain it? Seems 
>>interesting but I didn�t understand the whole idea.
>
> which activeX you can read / write to Outlook Contact, Mail
> and Calendar using "simple" MAPI.
>
> to use Outlook in a Network you need Exchange ( or SBS)
> to share it so i made a Xbase++ Clone for it and share DBF
>
> now i try to port Xbase++ Code to harbour to get a single EXE
> but DateTime :treatDateAsString(.T.):getProperty("Start") fail
>
> greetings by OHR
> Jimmy
>
> 



--- news://freenews.netfront.net/ - complaints: news@netfront.net ---
0
Reply Qatan 3/2/2011 5:16:34 PM

hi,

>install xharbour from http://free.xharbour.com
>use xbuild to compile your app.

i did what you say.
i can build EXE with xbuild
i can run EXE fine

.... but still DateTime from Outlook Calender activeX is empty

can someone please try my Source and confirm it

greetings by OHR
Jimmy



0
Reply nospam23 (74) 3/3/2011 9:35:09 PM

hi,

sorry for late Answer

> Can you try the following:
>
> -----8<-----
> proc main()
>
> ? DATETIMESTR()
>
> #pragma begindump
> #include "hbapi.h"
> #include "hbapiitm.h"
> #include "hbdate.h"
>
> HB_FUNC( DATETIMESTR )
> {
>   PHB_ITEM pTemp = hb_itemNew( NULL );
>   int iYear, iMonth, iDay;
>   char szDateTime[18];
>   char szDate[9];
>   char szTime[9];
>   char szTmp[9];
>   int i, u = 0;
>
>   *szDateTime = 0;
>   hb_dateTimeStr( szTime );
>   hb_dateToday( &iYear, &iMonth, &iDay );
>   hb_itemPutD( pTemp, iYear, iMonth, iDay );
>   hb_dateDecStr( szDate, hb_itemGetDL( pTemp ) );
>
>   for( i = 0; i < 8; i++ )
>   {
>      if (!( szTime[ i ] == ':' ))
>         szTmp[ u++ ] = szTime[ i ];
>   }
>
>   szTmp[ u ] = 0;
>   hb_xstrcat( szDateTime, szDate, szTmp, 0 );
>   hb_retc( szDateTime );
>   hb_itemRelease( pTemp );
> }
>
> #pragma enddump
> -----8<-----

YES this now work !!!

Xbase++
cStringStart := oItem:treatDateAsString( .T. ):getProperty( "Start")

xharbour
cStringStart := DATETIMESTR(oItem:getProperty( "Start"))

any Way to make it Xbase++ "compatible" ?

thx, greetings by OHR
Jimmy 


0
Reply nospam23 (74) 3/4/2011 1:42:56 AM

hi,

> YES this now work !!!

.... but only once ... now with

cStringStart := DATETIMESTR(oItem:getProperty( "Start"))

all Records are filled with same ( 1st ) Value ... :(

 greetings by OHR
Jimmy 


0
Reply nospam23 (74) 3/4/2011 3:04:15 AM

Hi Jimmy,

The function that I wrote returns today's date.
To fullfil your need, please info what is returned by:

  oItem:getProperty("Start") => return what?

I can easily modify the function.

Andi

On Fri, 4 Mar 2011 04:04:15 +0100, "AUGE_OHR" <AUGE_OHR*NOSPAM@WEB.DE>
wrote:

>hi,
>
>> YES this now work !!!
>
>... but only once ... now with
>
>cStringStart := DATETIMESTR(oItem:getProperty( "Start"))
>
>all Records are filled with same ( 1st ) Value ... :(
>
> greetings by OHR
>Jimmy 
>

0
Reply xharbour_delete (69) 3/4/2011 3:44:09 AM

hi,

> The function that I wrote returns today's date.
> To fullfil your need, please info what is returned by:

aha ... now i "see" it

>  oItem:getProperty("Start") => return what?
> I can easily modify the function.

it should return YYYYMMDDHHMMSS but harbour seems to fail
usind activeX with :getProperty() and (VB ?) DateTime.

my Code (see above) did run correct with Xbase++ and
:treatDateAsString( .T. ):getProperty() but i remember
we had same Problem with Xbase++ some Years ago

greetings by OHR
Jimmy


0
Reply nospam23 (74) 3/4/2011 2:06:19 PM

hi,

i "think" i got it

cStringStart := TtoS(oItem:getProperty( "CreationTime"))

will give me "20110304041200.985"

 greetings by OHR
Jimmy 


0
Reply nospam23 (74) 3/4/2011 9:35:41 PM

18 Replies
153 Views

(page loaded in 0.226 seconds)

Similiar Articles:

7/16/2012 9:42:07 AM


Reply: