Chaine et Ecrasement de zone mémoire

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Chaine et Ecrasement de zone mémoire

Message par Progi1984 »

Bonjour, en fait, j'ai une chaine qui se fait écraser par une autre. Je sais, cela n'est pas trés explicite mais lancez ce code et vous verrez.

Pour infos, ce code génère deux fichiers VCard et les lit juste aprés.

Merci d'avance de votre aide.

Code : Tout sélectionner

Enumeration ; Version
  #VCard_Version_2_1
  #VCard_Version_3_0
EndEnumeration
Enumeration ; Errors
  #VCard_ErrorType_Success
  #VCard_ErrorType_FileAccess
  #VCard_ErrorType_
EndEnumeration
Enumeration ; Types Phone
  #VCard_PhoneType_PREF   = 1
  #VCard_PhoneType_WORK   = 2
  #VCard_PhoneType_HOME   = 4
  #VCard_PhoneType_VOICE  = 8
  #VCard_PhoneType_FAX    = 16
  #VCard_PhoneType_MSG    = 32
  #VCard_PhoneType_CELL   = 64
  #VCard_PhoneType_PAGER  = 128
  #VCard_PhoneType_BBS    = 256
  #VCard_PhoneType_CAR    = 512
  #VCard_PhoneType_MODEM  = 1024
  #VCard_PhoneType_ISDN   = 2048
  #VCard_PhoneType_VIDEO  = 4096
EndEnumeration
Enumeration ; Types Adress
  #VCard_AdressType_DOM   = 1
  #VCard_AdressType_INTL  = 2
  #VCard_AdressType_POSTAL= 4
  #VCard_AdressType_PARCEL= 8
  #VCard_AdressType_HOME  = 16
  #VCard_AdressType_WORK  = 32
EndEnumeration
Enumeration ; Types Url
  #VCard_UrlType_HOME     = 1
  #VCard_UrlType_WORK     = 2
EndEnumeration

Structure S_VCard_Phone
  sPhoneNumber.s
  lPhoneType.l
EndStructure
Structure S_VCard_Adress
  sPostOfficeBox.s
  sExtendAdress.s
  sStreet.s
  sLocality.s
  sRegion.s
  sPostalCode.s
  sCountryName.s
  lAdressType.l
EndStructure
Structure S_VCard_Url
  sUrl.s
  lUrlType.l
EndStructure
Structure S_VCard
  lVersion.l
  sMailer.s
  sFirstName.s    ; Prenom
  sLastName.s     ; Nom
  sBirthday.s
  sEMail.s
  sNote.s
  sSociety.s      ; Societe
  sTitle.s        ; Title
  sRevision.s
  lPhoneNum.l     ; Number of PhoneNumber
  dimPhoneNum.S_VCard_Phone[20]
  lAdressNum.l    ; Number of Adress
  dimAdress.S_VCard_Adress[20]
  lURLNum.l       ; Number of URL
  dimURL.S_VCard_URL[20]
EndStructure

ProcedureDLL VCard_Write(*VCard.S_VCard, Filename.s)
  Protected plFile.l
  Protected plVarTmp.l
  Protected psVarTmp.s
  Protected psEndOfLine.s
  Protected psTypeSeparator.s
  Protected psTypeStart.s
  Protected psTypeEnd.s
  
  plFile = OpenFile(#PB_Any, Filename)
  If plFile
    If *VCard\lVersion = #VCard_Version_2_1
      psEndOfLine = Chr(13)+Chr(10)
      psTypeSeparator = ";"
      psTypeStart = ";"
      psTypeEnd = ""
    Else
      psEndOfLine = Chr(10)
      psTypeSeparator = ","
      psTypeStart = ";TYPE="
      psTypeEnd = ""
    EndIf
  
    WriteString(plFile, "BEGIN:VCARD"+psEndOfLine)
    ; Version
    If *VCard\lVersion = #VCard_Version_2_1
      WriteString(plFile, "VERSION:2.1"+psEndOfLine)
    Else
      WriteString(plFile, "VERSION:3.0"+psEndOfLine)
    EndIf
    ; Name
    WriteString(plFile, "N:"+*VCard\sLastName+";"+*VCard\sFirstName+psEndOfLine)
    ; Formatted Name
    WriteString(plFile, "FN:"+*VCard\sFirstName+" "+*VCard\sLastName+psEndOfLine)
    ; Organization Name 
    If Len(*VCard\sSociety) > 0
      WriteString(plFile, "ORG:"+*VCard\sSociety+psEndOfLine)
    EndIf
    ; Title
    If Len(*VCard\sTitle) > 0
      WriteString(plFile, "TITLE:"+*VCard\sTitle+psEndOfLine)
    EndIf
    ; Birthday
    If Len(*VCard\sBirthday) > 0
      WriteString(plFile, "BDAY:"+*VCard\sBirthday+psEndOfLine)
    EndIf
    ; Mail
    If Len(*VCard\sEMail) > 0
      WriteString(plFile, "EMAIL"+psTypeStart+"INTERNET"+psTypeEnd+":"+*VCard\sEMail+psEndOfLine)
    EndIf
    ; Note  
    If Len(*VCard\sNote) > 0
      WriteString(plFile, "NOTE;ENCODING=QUOTED-PRINTABLE:"+*VCard\sNote+psEndOfLine)
    EndIf
    ; URL
    If *VCard\lURLNum > 0
      For plInc = 0 To *VCard\lURLNum
        Select *VCard\dimURL[plInc]\lUrlType
          Case #VCard_UrlType_HOME : WriteString(plFile, "URL"+psTypeStart+"HOME"+psTypeEnd+":"+*VCard\dimURL[plInc]\sUrl+psEndOfLine)
          Case #VCard_UrlType_WORK : WriteString(plFile, "URL"+psTypeStart+"WORK"+psTypeEnd+":"+*VCard\dimURL[plInc]\sUrl+psEndOfLine)
        EndSelect
      Next
    EndIf
    ; Adresses
    If *VCard\lAdressNum > 0
      For plInc = 0 To *VCard\lAdressNum -1
        plVarTmp = *VCard\dimAdress[plInc]\lAdressType
        psVarTmp = ""
        If plVarTmp & #VCard_AdressType_WORK
          plVarTmp - #VCard_AdressType_WORK
          psVarTmp + psTypeSeparator + "WORK"
        EndIf
        If plVarTmp & #VCard_AdressType_HOME
          plVarTmp - #VCard_AdressType_HOME
          psVarTmp + psTypeSeparator + "HOME"
        EndIf
        If plVarTmp & #VCard_AdressType_PARCEL
          plVarTmp - #VCard_AdressType_PARCEL
          psVarTmp + psTypeSeparator + "PARCEL"
        EndIf
        If plVarTmp & #VCard_AdressType_POSTAL
          plVarTmp - #VCard_AdressType_POSTAL
          psVarTmp + psTypeSeparator + "POSTAL"
        EndIf
        If plVarTmp & #VCard_AdressType_INTL
          plVarTmp - #VCard_AdressType_INTL
          psVarTmp + psTypeSeparator + "INTL"
        EndIf
        If plVarTmp & #VCard_AdressType_DOM
          plVarTmp - #VCard_AdressType_DOM
          psVarTmp + psTypeSeparator + "DOM"
        EndIf
        psVarTmp = Right(psVarTmp, Len(psVarTmp) - 1)
        WriteString(plFile, "ADR"+psTypeStart+psVarTmp+psTypeEnd+":"+*VCard\dimAdress[plInc]\sPostOfficeBox+";"+*VCard\dimAdress[plInc]\sExtendAdress+";"+*VCard\dimAdress[plInc]\sStreet+";"+*VCard\dimAdress[plInc]\sLocality+";"+*VCard\dimAdress[plInc]\sRegion+";"+*VCard\dimAdress[plInc]\sPostalCode+";"+*VCard\dimAdress[plInc]\sCountryName+psEndOfLine)
      Next
    EndIf
    ; Phone Number
    If *VCard\lPhoneNum > 0
      For plInc = 0 To *VCard\lPhoneNum -1
        plVarTmp = *VCard\dimPhoneNum[plInc]\lPhoneType
        psVarTmp = ""
        If plVarTmp & #VCard_PhoneType_VIDEO
          plVarTmp - #VCard_PhoneType_VIDEO
          psVarTmp + psTypeSeparator + "VIDEO"
        EndIf
        If plVarTmp & #VCard_PhoneType_ISDN
          plVarTmp - #VCard_PhoneType_ISDN
          psVarTmp + psTypeSeparator + "ISDN"
        EndIf
        If plVarTmp & #VCard_PhoneType_MODEM
          plVarTmp - #VCard_PhoneType_MODEM
          psVarTmp + ";MODEM"
        EndIf
        If plVarTmp & #VCard_PhoneType_CAR
          plVarTmp - #VCard_PhoneType_CAR
          psVarTmp + psTypeSeparator + "CAR"
        EndIf
        If plVarTmp & #VCard_PhoneType_BBS
          plVarTmp - #VCard_PhoneType_BBS
          psVarTmp + ";BBS"
        EndIf
        If plVarTmp & #VCard_PhoneType_PAGER
          plVarTmp - #VCard_PhoneType_PAGER
          psVarTmp + psTypeSeparator + "PAGER"
        EndIf
        If plVarTmp & #VCard_PhoneType_CELL
          plVarTmp - #VCard_PhoneType_CELL
          psVarTmp + psTypeSeparator + "CELL"
        EndIf
        If plVarTmp & #VCard_PhoneType_MSG
          plVarTmp - #VCard_PhoneType_MSG
          psVarTmp + psTypeSeparator + "MSG"
        EndIf
        If plVarTmp & #VCard_PhoneType_FAX
          plVarTmp - #VCard_PhoneType_FAX
          psVarTmp + psTypeSeparator + "FAX"
        EndIf
        If plVarTmp & #VCard_PhoneType_VOICE
          plVarTmp - #VCard_PhoneType_VOICE
          psVarTmp + psTypeSeparator + "VOICE"
        EndIf
        If plVarTmp & #VCard_PhoneType_HOME
          plVarTmp - #VCard_PhoneType_HOME
          psVarTmp + psTypeSeparator + "HOME"
        EndIf
        If plVarTmp & #VCard_PhoneType_WORK
          plVarTmp - #VCard_PhoneType_WORK
          psVarTmp + psTypeSeparator + "WORK"
        EndIf
        If plVarTmp & #VCard_PhoneType_PREF
          plVarTmp - #VCard_PhoneType_PREF
          psVarTmp + psTypeSeparator + "PREF"
        EndIf
        psVarTmp = Right(psVarTmp, Len(psVarTmp) - 1)
        WriteString(plFile, "TEL"+psTypeStart+psVarTmp+psTypeEnd+":"+*VCard\dimPhoneNum[plInc]\sPhoneNumber+psEndOfLine)
      Next
    EndIf
    ; Revision
    WriteString(plFile, "REV:"+FormatDate("%yyyy%mm%dd", Date())+"T"+FormatDate("%hh%ii%ss", Date())+"Z"+psEndOfLine)
    ; Mailer
    If Len(*VCard\sMailer) > 0
      WriteString(plFile, "MAILER:"+*VCard\sMailer+psEndOfLine)
    EndIf
    WriteString(plFile, "END:VCARD"+psEndOfLine)
    CloseFile(plFile)
  Else
    ProcedureReturn #VCard_ErrorType_FileAccess
  EndIf
EndProcedure

ProcedureDLL VCard_SetVersion(*VCard.S_VCard, Version.l = #VCard_Version_2_1)
  *VCard\lVersion = Version
EndProcedure
ProcedureDLL VCard_SetName(*VCard.S_VCard, sFirstName.s, sLastName.s)
  *VCard\sFirstName  = sFirstName
  *VCard\sLastName   = sLastName
EndProcedure
ProcedureDLL VCard_SetBirthday(*VCard.S_VCard, lDate.l)
  *VCard\sBirthday = FormatDate("%yyyy-%mm-%dd", lDate)
EndProcedure
ProcedureDLL VCard_SetAdress(*VCard.S_VCard, sPostOfficeBox.s, sExtendAdress.s, sStreet.s, sLocality.s, sRegion.s, sPostalCode.s, sCountryName.s, lType.l)
  *VCard\dimAdress[*VCard\lAdressNum]\sPostOfficeBox  = sPostOfficeBox
  *VCard\dimAdress[*VCard\lAdressNum]\sExtendAdress   = sExtendAdress
  *VCard\dimAdress[*VCard\lAdressNum]\sStreet         = sStreet
  *VCard\dimAdress[*VCard\lAdressNum]\sLocality       = sLocality
  *VCard\dimAdress[*VCard\lAdressNum]\sRegion         = sRegion
  *VCard\dimAdress[*VCard\lAdressNum]\sPostalCode     = sPostalCode
  *VCard\dimAdress[*VCard\lAdressNum]\sCountryName    = sCountryName
  *VCard\dimAdress[*VCard\lAdressNum]\lAdressType     = lType
  *VCard\lAdressNum +1            
EndProcedure
ProcedureDLL VCard_SetEmail(*VCard.S_VCard, sEMail.s)
  *VCard\sEMail  = sEMail
EndProcedure
ProcedureDLL VCard_SetNote(*VCard.S_VCard, sNote.s)
  *VCard\sNote  = sNote
EndProcedure
ProcedureDLL VCard_SetMailer(*VCard.S_VCard, sMailer.s)
  *VCard\sMailer  = sMailer
EndProcedure
ProcedureDLL VCard_SetURL(*VCard.S_VCard, sURL.s, lType)
  *VCard\dimURL[*VCard\lURLNum]\sUrl      = sURL
  *VCard\dimURL[*VCard\lURLNum]\lUrlType  = lType
  *VCard\lURLNum +1
EndProcedure
ProcedureDLL VCard_SetPhoneNumber(*VCard.S_VCard, sPhoneNumber.s, lType.l)
  *VCard\dimPhoneNum[*VCard\lPhoneNum]\sPhoneNumber = sPhoneNumber
  *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType   = lType
  *VCard\lPhoneNum +1
EndProcedure
ProcedureDLL VCard_SetJob(*VCard.S_VCard, sCompany.s, sJobName.s)
  *VCard\sSociety    = sCompany
  *VCard\sTitle     = sJobName
EndProcedure

ProcedureDLL VCard_Read(*VCard.S_VCard, sFilename.s)
  Protected plFile.l
  Protected plInc.l
  Protected psLine.s
  Protected psIdentifier.s
  plFile = OpenFile(#PB_Any, sFilename)
  If plFile
    While Eof(plFile) = 0
      psLine = ReadString(plFile)
      psIdentifier = StringField(psLine, 1, ":")
      If FindString(psIdentifier, ";", 0) > 0
        psIdentifier = LCase(StringField(psIdentifier, 1, ";"))
      Else
        psIdentifier = LCase(psIdentifier)
      EndIf
      Select psIdentifier
        Case "adr"      ;{ Adress
          For plInc = 2 To CountString(StringField(psLine, 1, ":"), ";")+1
            Select LCase(StringField(StringField(psLine, 1, ":"), plInc, ";"))
              Case "dom"    : *VCard\dimAdress[*VCard\lAdressNum]\lAdressType | #VCard_AdressType_DOM
              Case "home"   : *VCard\dimAdress[*VCard\lAdressNum]\lAdressType | #VCard_AdressType_HOME
              Case "intl"   : *VCard\dimAdress[*VCard\lAdressNum]\lAdressType | #VCard_AdressType_INTL
              Case "parcel" : *VCard\dimAdress[*VCard\lAdressNum]\lAdressType | #VCard_AdressType_PARCEL
              Case "postal" : *VCard\dimAdress[*VCard\lAdressNum]\lAdressType | #VCard_AdressType_POSTAL
              Case "work"   : *VCard\dimAdress[*VCard\lAdressNum]\lAdressType | #VCard_AdressType_WORK
            EndSelect
          Next
          psLine = StringField(psLine, 2, ":")
          *VCard\dimAdress[*VCard\lAdressNum]\sPostOfficeBox = StringField(psLine, 1, ";")
          *VCard\dimAdress[*VCard\lAdressNum]\sExtendAdress = StringField(psLine, 2, ";")
          *VCard\dimAdress[*VCard\lAdressNum]\sStreet = StringField(psLine, 3, ";")
          *VCard\dimAdress[*VCard\lAdressNum]\sLocality = StringField(psLine, 4, ";")
          *VCard\dimAdress[*VCard\lAdressNum]\sRegion = StringField(psLine, 5, ";")
          *VCard\dimAdress[*VCard\lAdressNum]\sPostalCode = StringField(psLine, 6, ";")
          *VCard\dimAdress[*VCard\lAdressNum]\sCountryName = StringField(psLine, 7, ";")
          *VCard\lAdressNum + 1
        ;}
        Case "bday"     ;{ BirthDay
          *VCard\sBirthday = StringField(psLine, 2, ":")
        ;}
        Case "begin"    ;{ "BEGIN:VCARD"
        ;}
        Case "email"    ;{ EMail
          *VCard\sEMail = StringField(psLine, 2, ":")
        ;}
        Case "end"      ;{ "END:VCARD"
        ;}
        Case "fn"       ;{
        ;}
        Case "mailer"   ;{ Mailer
          *VCard\sMailer = StringField(psLine, 2, ":")
        ;}
        Case "n"        ;{ Name
          psLine = StringField(psLine, 2, ":")
          *VCard\sLastName = StringField(psLine, 1, ";")
          *VCard\sFirstName = StringField(psLine, 2, ";")
        ;}
        Case "note"     ;{ Note
          *VCard\sNote = StringField(psLine, 2, ":")
        ;}
        Case "org"      ;{ Company
          *VCard\sSociety = StringField(psLine, 2, ":")
        ;}
        Case "rev"      ;{ Revision
          *VCard\sRevision = StringField(psLine, 2, ":")
        ;}
        Case "title"    ;{ JobName
          *VCard\sTitle = StringField(psLine, 2, ":")
        ;}
        Case "tel"      ;{ Phone
          For plInc = 2 To CountString(StringField(psLine, 1, ":"), ";")+1
            Select LCase(StringField(StringField(psLine, 1, ":"), plInc, ";"))
              Case "bbs"    : *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType | #VCard_PhoneType_BBS
              Case "car"    : *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType | #VCard_PhoneType_CAR
              Case "cell"   : *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType | #VCard_PhoneType_CELL
              Case "fax"    : *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType | #VCard_PhoneType_FAX
              Case "isdn"   : *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType | #VCard_PhoneType_ISDN
              Case "home"   : *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType | #VCard_PhoneType_HOME
              Case "modem"  : *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType | #VCard_PhoneType_MODEM
              Case "msg"    : *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType | #VCard_PhoneType_MSG
              Case "pager"  : *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType | #VCard_PhoneType_PAGER
              Case "pref"   : *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType | #VCard_PhoneType_PREF
              Case "video"  : *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType | #VCard_PhoneType_VIDEO
              Case "voice"  : *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType | #VCard_PhoneType_VOICE
              Case "work"   : *VCard\dimPhoneNum[*VCard\lPhoneNum]\lPhoneType | #VCard_PhoneType_WORK
            EndSelect
          Next
          Debug StringField(psLine, 2, ":")
          *VCard\dimPhoneNum[*VCard\lPhoneNum]\sPhoneNumber = StringField(psLine, 2, ":")
          *VCard\lPhoneNum + 1
        ;}
        Case "url"      ;{ URL
          plInc = FindString(psLine, ":", 0)
          If plInc  > 0
            *VCard\dimURL[*VCard\lURLNum]\sUrl = Right(psLine, Len(psLine) - plInc)
          Else
            *VCard\dimURL[*VCard\lURLNum]\sUrl = ""
          EndIf
          For plInc = 2 To CountString(StringField(psLine, 1, ":"), ";")+1
            Select LCase(StringField(StringField(psLine, 1, ":"), plInc, ";"))
              Case "home" : *VCard\dimURL[*VCard\lURLNum]\lUrlType | #VCard_UrlType_HOME
              Case "work" : *VCard\dimURL[*VCard\lURLNum]\lUrlType | #VCard_UrlType_WORK
            EndSelect
          Next
          *VCard\lURLNum + 1
        ;}
        Case "version"  ;{ Version
          If StringField(psLine, 2, ":") = "2.1"
            *VCard\lVersion = #VCard_Version_2_1
          ElseIf StringField(psLine, 2, ":") = "3.0"
            *VCard\lVersion = #VCard_Version_3_0
          EndIf
        ;}
        Default : 
          Debug psIdentifier
          Debug psLine
          Debug "----"
          ;MessageRequester("VCard_Read", LCase(StringField(psLine, 1, ":"))) 
      EndSelect
    Wend
    CloseFile(plFile)
  Else
    ProcedureReturn #VCard_ErrorType_FileAccess
  EndIf
EndProcedure

ProcedureDLL VCard_GetVersion(*VCard.S_VCard)
  ProcedureReturn *VCard\lVersion 
EndProcedure
ProcedureDLL VCard_GetName(*VCard.S_VCard, *sFirstName, *sLastName)
  PokeS(*sFirstName, *VCard\sFirstName)
  PokeS(*sLastName, *VCard\sLastName)
EndProcedure
ProcedureDLL VCard_GetBirthday(*VCard.S_VCard, *lDate)
  PokeL(*lDate, ParseDate("%yyyy-%mm-%dd", *VCard\sBirthday))
EndProcedure
ProcedureDLL VCard_GetNumAdress(*VCard.S_VCard)
  ProcedureReturn *VCard\lAdressNum
EndProcedure
ProcedureDLL VCard_GetAdress(*VCard.S_VCard, lIndex.l, *sPostOfficeBox, *sExtendAdress, *sStreet, *sLocality, *sRegion, *sPostalCode, *sCountryName, *lType)
  PokeS(*sPostOfficeBox, *VCard\dimAdress[lIndex]\sPostOfficeBox)
  PokeS(*sExtendAdress, *VCard\dimAdress[lIndex]\sExtendAdress)
  PokeS(*sStreet, *VCard\dimAdress[lIndex]\sStreet)
  PokeS(*sLocality, *VCard\dimAdress[lIndex]\sLocality)
  PokeS(*sRegion, *VCard\dimAdress[lIndex]\sRegion)
  PokeS(*sPostalCode, *VCard\dimAdress[lIndex]\sPostalCode)
  PokeS(*sCountryName, *VCard\dimAdress[lIndex]\sCountryName)
  PokeL(*lType, *VCard\dimAdress[lIndex]\lAdressType)
EndProcedure
ProcedureDLL VCard_GetEmail(*VCard.S_VCard, *sEMail)
  PokeS(*sEMail, *VCard\sEMail)
EndProcedure
ProcedureDLL VCard_GetNote(*VCard.S_VCard, *sNote)
  PokeS(*sNote, *VCard\sNote)
EndProcedure
ProcedureDLL VCard_GetMailer(*VCard.S_VCard, *sMailer)
  PokeS(*sMailer, *VCard\sMailer)
EndProcedure
ProcedureDLL VCard_GetNumURL(*VCard.S_VCard)
  ProcedureReturn *VCard\lURLNum
EndProcedure
ProcedureDLL VCard_GetURL(*VCard.S_VCard, lIndex.l, *sURL, *lType)
  PokeS(*sURL, *VCard\dimURL[lIndex]\sUrl)
  PokeL(*lType, *VCard\dimURL[lIndex]\lUrlType)  
EndProcedure
ProcedureDLL VCard_GetNumPhoneNumber(*VCard.S_VCard)
  ProcedureReturn *VCard\lPhoneNum
EndProcedure
ProcedureDLL VCard_GetPhoneNumber(*VCard.S_VCard, lIndex.l, *sPhoneNumber, *lType)
  PokeS(*sPhoneNumber, *VCard\dimPhoneNum[lIndex]\sPhoneNumber)
  PokeL(*lType, *VCard\dimPhoneNum[lIndex]\lPhoneType)  
EndProcedure
ProcedureDLL VCard_GetJob(*VCard.S_VCard, *sCompany, *sJobName)
  Debug "------>"+*VCard\sTitle
  Debug *VCard\dimPhoneNum[0]\sPhoneNumber
  Debug *VCard\dimPhoneNum[1]\sPhoneNumber
  PokeS(*sCompany, *VCard\sSociety, Len(*VCard\sSociety)+1)
  PokeS(*sJobName, *VCard\sTitle)
  Debug "------>"+*VCard\sTitle
  Debug *VCard\dimPhoneNum[0]\sPhoneNumber
  Debug *VCard\dimPhoneNum[1]\sPhoneNumber
EndProcedure


MyCardWrite.S_VCard

VCard_SetName(@MyCardWrite, "Franck", "LEFEVRE")
VCard_SetBirthday(@MyCardWrite, Date(1984, 11, 30, 0, 0, 0))
VCard_SetEmail(@MyCardWrite, "progi1984@gmail.com")
VCard_SetJob(@MyCardWrite, "RootsLabs", "Web & PB Developper")
VCard_SetNote(@MyCardWrite, "Test Note")
VCard_SetMailer(@MyCardWrite, "PBMailer")
VCard_SetURL(@MyCardWrite, "http://www.rootslabs.net", #VCard_UrlType_HOME)
VCard_SetURL(@MyCardWrite, "http://www.rootslabs.net", #VCard_UrlType_WORK)
VCard_SetPhoneNumber(@MyCardWrite, "00 11 22 33 44", #VCard_PhoneType_WORK | #VCard_PhoneType_PAGER)
VCard_SetPhoneNumber(@MyCardWrite, "55 66 77 88 99", #VCard_PhoneType_HOME | #VCard_PhoneType_VOICE)
VCard_SetPhoneNumber(@MyCardWrite, "06 88 77 66 55", #VCard_PhoneType_CELL | #VCard_PhoneType_MSG | #VCard_PhoneType_PREF)
VCard_SetAdress(@MyCardWrite, "","","2, rue des Etoiles","La Haye-Pesnel","Manche","50320","France", #VCard_AdressType_HOME)
VCard_SetAdress(@MyCardWrite, "","","1, rue du Port","Caen","Calvados","14000","France", #VCard_AdressType_WORK)

VCard_SetVersion(@MyCardWrite, #VCard_Version_2_1) : VCard_Write(@MyCardWrite, "MyCardWrite_2_1.vcf")
VCard_SetVersion(@MyCardWrite, #VCard_Version_3_0) : VCard_Write(@MyCardWrite, "MyCardWrite_3_0.vcf")

MyCardRead21.S_VCard
MyCardRead30.S_VCard
VCard_Read(@MyCardRead21, "MyCardWrite_2_1.vcf")
VCard_Read(@MyCardRead30, "MyCardWrite_3_0.vcf")

Define.s sFirstName       = ""
Define.s sLastName        = ""
Define.l lDate            = $0
Define.s sEmail           = ""
Define.s sCompany         = ""
Define.s sJobName         = ""
Define.s sNote            = ""
Define.s sMailer          = ""
Define.s sURL             = ""
Define.l lURLType         = $0
Define.s sPhoneNumber     = ""
Define.l lPhoneNumberType = $0
Define.s sPostOfficeBox.s = ""
Define.s sExtendAdress.s  = ""
Define.s sStreet.s        = ""
Define.s sLocality.s      = ""
Define.s sRegion.s        = ""
Define.s sPostalCode.s    = ""
Define.s sCountryName.s   = ""
Define.l lAdressType      = $0


Debug "21"
; VCard_GetName(@MyCardRead21, @sFirstName, @sLastName)
; Debug "FirstName>"+sFirstName
; Debug "LastName>"+sLastName
; VCard_GetBirthday(@MyCardRead21, @lDate)
; Debug "Date>"+FormatDate("%yyyy-%mm-%dd", lDate)
; VCard_GetEmail(@MyCardRead21, @sEmail)
; Debug "Email > " + sEmail
VCard_GetJob(@MyCardRead21, @sCompany, @sJobName)
Debug "Company > " + sCompany
Debug "JobName > " + sJobName
; For i = 0 To VCard_GetNumURL(@MyCardRead21) -1
;   VCard_GetURL(@MyCardRead21, i, @sURL, @lURLType)
;   Debug "URL #"+Str(i)+"<"+Str(lURLType)+">"+sURL
; Next
For i = 0 To VCard_GetNumPhoneNumber(@MyCardRead21) -1
  VCard_GetPhoneNumber(@MyCardRead21, i, @sPhoneNumber, @lPhoneNumberType)
  Debug "PhoneNum #"+Str(i)+"<"+Str(lPhoneNumberType)+">"+sPhoneNumber
Next
; For i = 0 To VCard_GetNumAdress(@MyCardRead21) -1
;   VCard_GetAdress(@MyCardRead21, i, @sPostOfficeBox, @sExtendAdress, @sStreet, @sLocality, @sRegion, @sPostalCode, @sCountryName, @lAdressType)
;   Debug "Adress #"+Str(i)+"<"+Str(lAdressType)+">"
;   Debug "PostOfficeBox > "+sPostOfficeBox
;   Debug "ExtendAdress > "+sExtendAdress
;   Debug "Street > "+sStreet
;   Debug "Locality > "+sLocality
;   Debug "Region > "+sRegion
;   Debug "PostalCode > "+sPostalCode
;   Debug "CountryName > "+sCountryName
; Next
; VCard_GetMailer(@MyCardRead21, @sMailer)
; Debug "Mailer>"+sMailer
; VCard_GetNote(@MyCardRead21, @sNote)
; Debug "Note>"+sNote


; 
; Debug "30"
; VCard_GetName(@MyCardRead30, @sFirstName, @sLastName)
; Debug "FirstName>"+sFirstName
; Debug "LastName>"+sLastName
; VCard_GetBirthday(@MyCardRead30, @lDate)
; Debug "Date>"+FormatDate("%yyyy-%mm-%dd", lDate)
; VCard_GetEmail(@MyCardRead30, @sEmail)
; Debug "Email > " + sEmail
; VCard_GetJob(@MyCardRead30, @sCompany, @sJobName)
; Debug "Company > " + sCompany
; Debug "JobName > " + sJobName
; For i = 0 To VCard_GetNumURL(@MyCardRead21) -1
;   VCard_GetURL(@MyCardRead30, i, @sURL, @lURLType)
;   Debug "URL #"+Str(i)+"<"+Str(lURLType)+">"+sURL
; Next
; For i = 0 To VCard_GetNumPhoneNumber(@MyCardRead30) -1
;   VCard_GetPhoneNumber(@MyCardRead30, i, @sPhoneNumber, @lPhoneNumberType)
;   Debug "PhoneNum #"+Str(i)+"<"+Str(lPhoneNumberType)+">"+sPhoneNumber
; Next
; For i = 0 To VCard_GetNumAdress(@MyCardRead30) -1
;   VCard_GetAdress(@MyCardRead30, i, @sPostOfficeBox, @sExtendAdress, @sStreet, @sLocality, @sRegion, @sPostalCode, @sCountryName, @lAdressType)
;   Debug "Adress #"+Str(i)+"<"+Str(lAdressType)+">"
;   Debug "PostOfficeBox > "+sPostOfficeBox
;   Debug "ExtendAdress > "+sExtendAdress
;   Debug "Street > "+sStreet
;   Debug "Locality > "+sLocality
;   Debug "Region > "+sRegion
;   Debug "PostalCode > "+sPostalCode
;   Debug "CountryName > "+sCountryName
; Next
; VCard_GetMailer(@MyCardRead30, @sMailer)
; Debug "Mailer>"+sMailer
; VCard_GetNote(@MyCardRead30, @sNote)



Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Qui est écrasé par quoi ? Je ne vois pas comme ça, donne le début de la piste.

Quel est le texte écrasé ?
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

J'ai une erreur de compilation ligne 8 disant que Endenumeration n'est pas un opérateur valide.

Le symbol _ terminant #VCard_ErrorType_ n'est pas bon dans la version 4.40 beta 2
Répondre