16 de marzo de 2013

Leer tarjetas de contactos .VCF desde VFP

Una función para leer tarjetas de contactos .VCF desde Visual FoxPro enviada al foro de Foxite.com/forum por el hindú Rahul Moudgill.

ReadVcard(GETFILE("VCF"))
BROWSE

PROCEDURE ReadVcard
  LPARAMETERS cVcardFile

  IF !FILE(m.cVcardFile)
    RETURN .F.
  ENDIF

  #DEFINE clrf  CHR(13)+CHR(10)
  #DEFINE sTag   'BEGIN:VCARD'
  #DEFINE eTag   'END:VCARD'
  #DEFINE ver   'VERSION:'
  #DEFINE fn     'FN:'
  #DEFINE tel    'TEL;'
  #DEFINE email  'EMAIL;'
  SET MEMOWIDTH TO 254
  CREATE CURSOR vCard ;
    (;
    ID i,;
    NAME c(254),;
    FirstName c(100),;
    lastName c(100),;
    tg c(15),;
    TelType c(30),;
    contact c(50),;
    VERSION c(5),;
    TEXT m;
    )
  SCATTER MEMO NAME oVcardData BLANK


  LOCAL cvCardText,ntVcard,ix,cText,tText,jx,kx

  cvCardText=FILETOSTR(m.cVcardFile)
  ntVcard=OCCURS(sTag,M.cvCardText)

  FOR ix = 1 TO ntVcard
    SCATTER MEMO NAME oVcardData BLANK
    oVcardData.ID=m.ix
    cText=STREXTRACT(m.cvCardText,sTag,eTag,m.ix)
    oVcardData.TEXT=cText
    oVcardData.VERSION=STREXTRACT(m.cText,ver,clrf)
    oVcardData.NAME=STREXTRACT(m.cText,fn,clrf)
    oVcardData.FirstName=STREXTRACT(m.cText,[;],[;;;])
    oVcardData.LastName=STREXTRACT(m.cText,CHR(10)+[N:],[;])

    FOR kx = 1 TO MEMLINES(m.cText)
      FOR jx = 1 TO OCCURS(TEL,MLINE(m.cText,m.kx))
        tText=STREXTRACT(MLINE(m.cText,m.kx),TEL,[],m.jx)
        oVcardData.tg=TEL
        oVcardData.TelType=STREXTRACT(m.tText,"",":")
        oVcardData.Contact=STRTRAN(STREXTRACT(m.tText,":"),[-])
        INSERT INTO vCard ;
          FROM NAME oVcardData
      NEXT

      FOR jx = 1 TO OCCURS(EMAIL,MLINE(m.cText,m.kx))
        tText=STREXTRACT(MLINE(m.cText,m.kx),EMAIL,[],m.jx)
        oVcardData.tg=EMAIL
        oVcardData.TelType=STREXTRACT(m.tText,"",":")
        oVcardData.Contact=STRTRAN(STREXTRACT(m.tText,":"),[-])
        INSERT INTO vCard ;
          FROM NAME oVcardData
      NEXT
    NEXT

  NEXT
ENDPROC
Fuente: http://www.foxite.com/forum

14 de marzo de 2013

Buscar direcciones postales en Google Maps con VFP (Actualizada API)

Esta es una actualización de la utilidad que ya publiqué hace tiempo, con motivo del cambio de la API de Google Maps.

Además, ajusto el formulario a la zona visible de la pantalla, y una vez localizada la dirección, se muestra el mapa con un globo de información en el que se incluyen las coordenadas correspondientes a la dirección buscada.

Se puede descargar de:

https://sites.google.com/site/archivosvfp/archivos/gmaps.zip

Un saludo.

José Antonio Blasco, Zaragoza, España