sync anywhere

171
© 2002-2005 by Cialogica Tecnologia em Informática Ltda SyncAnywhere v1.22

Upload: alexandre-neves

Post on 02-Jan-2016

137 views

Category:

Documents


12 download

TRANSCRIPT

Page 1: Sync Anywhere

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

SyncAnywherev1.22

Page 2: Sync Anywhere

SyncAnywhere v1.22by Marcio Alexandroni

SyncAnywhere é um produto especialmente desenvolvidopara utilização no suporte a sincronização de dados. Comele é possível compactar vários bancos de dados em umúnico banco de dados Palm para que o envio dos dadosseja mais rápido e simplificado, e conta também com adescompactação dos bancos de dados, além de um clienteFTP para a transmissão e recepção de dados.

Page 3: Sync Anywhere

Todos os direitos reservados. Nenhuma parte deste documento pode ser reproduzida em qualquer forma ou porqualquer meio, seja gráfico, eletrônico ou mecânico, incluindo fotocópia, gravação em qualquer tipo de mídia, ousistemas de armazenamento e recuperação de informações sem a permissão do autor.

Produtos que são referenciados neste documento são marcas registradas dos respectivos proprietários. O autorreconhece as devidas marcas e seus proprietários como legítimos autores dos produtos citados.

Embora toda precaução tenha sido tomada na preparação deste documento, o autor não assume a responsabilidadepor danos causados pelo uso da informação contida neste documento ou do uso indevido de programas e/ou códigofonte que seja gerado com a ajuda deste produto. Neste caso, o autor não pode ser responsabilizado por qualquerperda or dano ou qualquer outra acusação causada direta ou indiretamente pelo conteúdo deste documento.

SyncAnywhere v1.22

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Page 4: Sync Anywhere

Tabela de Conteúdo

Parte I Introdução 7

................................................................................................................................... 71 Conceitos

................................................................................................................................... 72 Apresentação

................................................................................................................................... 73 Últimas Atualizações

................................................................................................................................... 94 Conteúdo do Pacote

Parte II Cliente Palm 12

................................................................................................................................... 121 Introdução

................................................................................................................................... 122 PocketStudio

... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 12Instalação

... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 12Utilização

... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 18Funções do SyncAnywhere

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 18SyncAnywhereOpenRef

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 18SyncAnywhereCloseRef

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 19SyncAnywhereGetVersion

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 19SyncAnywhereCheckSumOn

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 20SyncAnywhereCheckSumOff

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 20SyncAnywhereUIDSupportOn

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 21SyncAnywhereUIDSupportOff

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 22SyncAnywhereSetPackDataBlock

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 22SyncAnywhereSetSendUpdateProc

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 23SyncAnywhereSetReceiveUpdateProc

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 24SyncAnywhereSetPackUpdateProc

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 25SyncAnywhereSetUnpackUpdateProc

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 26SyncAnywhereSetCreatorID

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 27SyncAnywherePackDatabase

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 28SyncAnywhereGetDBCount

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 28SyncAnywhereGetDBName

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 29SyncAnywhereCheckDatabase

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 30SyncAnywhereUnpackDatabase

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 30SyncAnywhereUnpackOneDB

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 31SyncAnywhereUnpackApplication

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 31SyncAnywhereSetNetLib

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 32SyncAnywhereNetLibOpen

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 32SyncAnywhereNetLibClose

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 33SyncAnywhereModemDetect

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 33SyncAnywhereDial

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 34SyncAnywhereDialWireless

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 35SyncAnywhereOpenActiveService

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 35SyncAnywhereOpenService

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 36SyncAnywhereHangup

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 36SyncAnywhereFTPPassiveModeOn

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 37SyncAnywhereFTPPassiveModeOff

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 37SyncAnywhereSetTCPDelay

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 38SyncAnywhereFTPOpen

SyncAnywhere v1.22I

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Page 5: Sync Anywhere

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 39SyncAnywhereFTPClose

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 39SyncAnywhereFTPCd

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 40SyncAnywhereFTPMkd

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 40SyncAnywhereFTPRmd

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 41SyncAnywhereFTPDel

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 41SyncAnywhereFTPPut

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 42SyncAnywhereFTPGet

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 42SyncAnywhereFTPRename

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 43SyncAnywhereFTPGetLastResponse

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 43SyncAnywhereFTPSetServerType

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 44SyncAnywhereFTPDir

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 46SyncAnywhereFTPGetFileCount

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 46SyncAnywhereFTPFileExists

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 47SyncAnywhereFTPDirectoryExists

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 47SyncAnywhereFTPGetFileName

................................................................................................................................... 483 NSBasic

... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 48Instalação

... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 48Utilização

... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 54Funções do SyncAnywhere

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 54SyncAnywhereCreateContext

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 54SyncAnywhereDestroyContext

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 55SyncAnywhereGetVersion

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 55SyncAnywhereCheckSumOn

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 55SyncAnywhereCheckSumOff

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 56SyncAnywhereUIDSupportOn

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 56SyncAnywhereUIDSupportOff

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 57SyncAnywhereSetPackDataBlock

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 57SyncAnywhereSetCreatorID

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 58SyncAnywherePackDatabase

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 58SyncAnywhereGetDBCount

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 59SyncAnywhereGetDBName

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 60SyncAnywhereCheckDatabase

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 60SyncAnywhereUnpackDatabase

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 61SyncAnywhereUnpackOneDB

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 61SyncAnywhereUnpackApplication

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 62SyncAnywhereNetLibOpen

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 62SyncAnywhereNetLibClose

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 62SyncAnywhereModemDetect

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 63SyncAnywhereSetDialProperties

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 63SyncAnywhereDial

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 64SyncAnywhereOpenActiveService

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 64SyncAnywhereOpenService

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 64SyncAnywhereHangup

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 65SyncAnywhereSetFTPProperties

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 65SyncAnywhereFTPPassiveModeOn

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 66SyncAnywhereFTPPassiveModeOff

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 66SyncAnywhereSetTCPDelay

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 66SyncAnywhereFTPOpen

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 67SyncAnywhereFTPClose

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 67SyncAnywhereFTPCd

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 68SyncAnywhereFTPMkd

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 68SyncAnywhereFTPRmd

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 68SyncAnywhereFTPDel

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 69SyncAnywhereFTPPut

IIConteúdo

II

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Page 6: Sync Anywhere

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 69SyncAnywhereFTPGet

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 70SyncAnywhereFTPRename

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 70SyncAnywhereFTPGetLastResponse

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 70SyncAnywhereFTPSetServerType

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 71SyncAnywhereFTPDir

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 72SyncAnywhereFTPGetFileCount

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 73SyncAnywhereFTPFileExists

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 73SyncAnywhereFTPDirectoryExists

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 74SyncAnywhereFTPGetFileName

................................................................................................................................... 744 CodeWarrior

... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 74Instalação

... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 75Utilização

... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 80Funções do SyncAnywhere

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 80SyncAnywhereOpenRef

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 81SyncAnywhereCloseRef

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 81SyncAnywhereGetVersion

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 82SyncAnywhereCheckSumOn

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 82SyncAnywhereCheckSumOff

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 82SyncAnywhereUIDSupportOn

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 83SyncAnywhereUIDSupportOff

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 84SyncAnywhereSetPackDataBlock

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 85SyncAnywhereSetSendUpdateProc

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 86SyncAnywhereSetReceiveUpdateProc

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 87SyncAnywhereSetPackUpdateProc

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 88SyncAnywhereSetUnpackUpdateProc

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 89SyncAnywhereSetCreatorID

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 89SyncAnywherePackDatabase

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 90SyncAnywhereGetDBCount

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 91SyncAnywhereGetDBName

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 91SyncAnywhereCheckDatabase

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 92SyncAnywhereUnpackDatabase

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 92SyncAnywhereUnpackOneDB

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 93SyncAnywhereUnpackApplication

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 94SyncAnywhereSetNetLib

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 94SyncAnywhereNetLibOpen

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 95SyncAnywhereNetLibClose

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 95SyncAnywhereModemDetect

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 95SyncAnywhereDial

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 96SyncAnywhereDialWireless

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 97SyncAnywhereOpenActiveService

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 98SyncAnywhereOpenService

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 98SyncAnywhereHangup

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 99SyncAnywhereFTPPassiveModeOn

.. .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... .. 99SyncAnywhereFTPPassiveModeOff

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 100SyncAnywhereSetTCPDelay

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 100SyncAnywhereFTPOpen

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 101SyncAnywhereFTPClose

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 101SyncAnywhereFTPCd

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 102SyncAnywhereFTPMkd

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 102SyncAnywhereFTPRmd

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 103SyncAnywhereFTPDel

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 103SyncAnywhereFTPPut

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 104SyncAnywhereFTPGet

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 104SyncAnywhereFTPRename

SyncAnywhere v1.22III

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Page 7: Sync Anywhere

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 105SyncAnywhereFTPGetLastResponse

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 105SyncAnywhereFTPSetServerType

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 106SyncAnywhereFTPDir

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 108SyncAnywhereFTPGetFileCount

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 108SyncAnywhereFTPFileExists

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 109SyncAnywhereFTPDirectoryExists

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 110SyncAnywhereFTPGetFileName

................................................................................................................................... 1105 HB++

..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 110Instalação

..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 110Utilização

..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 117Funções do SyncAnywhere

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 117SyncAnywhere.GetVersion

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 117SyncAnywhere.CheckSumOn

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 117SyncAnywhere.CheckSumOff

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 118SyncAnywhere.SetPackDataBlock

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 118SyncAnywhere.SetCreatorID

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 119SyncAnywhere.PackDatabase

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 119SyncAnywhere.GetDBCount

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 120SyncAnywhere.GetDBName

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 121SyncAnywhere.CheckDatabase

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 121SyncAnywhere.UnpackDatabase

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 122SyncAnywhere.UnpackOneDB

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 122SyncAnywhere.UnpackApplication

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 123SyncAnywhere.NetLibOpen

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 123SyncAnywhere.NetLibClose

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 123SyncAnywhere.ModemDetect

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 124SyncAnywhere.Dial

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 124SyncAnywhere.DialWireless

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 126SyncAnywhere.OpenActiveService

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 126SyncAnywhere.OpenService

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 126SyncAnywhere.Hangup

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 127SyncAnywhere.FTPPassiveModeOn

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 127SyncAnywhere.FTPPassiveModeOff

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 128SyncAnywhere.SetTCPDelay

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 128SyncAnywhere.FTPOpen

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 129SyncAnywhere.FTPClose

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 129SyncAnywhere.FTPCd

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 130SyncAnywhere.FTPMkd

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 130SyncAnywhere.FTPRmd

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 130SyncAnywhere.FTPDel

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 131SyncAnywhere.FTPPut

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 131SyncAnywhere.FTPGet

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 132SyncAnywhere.FTPRename

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 132SyncAnywhere.FTPGetLastResponse

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 133SyncAnywhere.FTPSetServerType

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 133SyncAnywhere.FTPDir

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 135SyncAnywhere.FTPGetFileCount

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 135SyncAnywhere.FTPFileExists

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 136SyncAnywhere.FTPDirExists

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 136SyncAnywhere.FTPGetFileName

................................................................................................................................... 1386 Códigos de Erro do SyncAnywhere no Palm

Parte III Software no Servidor 146

IVConteúdo

IV

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Page 8: Sync Anywhere

................................................................................................................................... 1461 Introdução

................................................................................................................................... 1462 Delphi

..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 146Instalação

..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 146Utilização

..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 149Funções no SyncAnywhere para o Delphi

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 149PackSetMaxDataBlock

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 150PackSetCheckSum

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 150PackStart

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 151PackDB

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 151PackFinish

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 152GetDBCount

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 152GetDBName

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 153CheckDB

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 153UnpackDB

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 154UnpackOneDB

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 154PackPRC

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 155SetRecordUIDSupport

................................................................................................................................... 1563 Visual Basic

..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 156Instalação

..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 156Utilização

..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 160Funções do objeto COM do SyncAnywhere

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 160PackSetMaxDataBlock

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 161PackSetCheckSum

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 161PackStart

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 161PackDB

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 162PackFinish

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 162GetDBCount

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 163GetDBName

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 163CheckDB

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 164UnpackDB

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 164UnpackOneDB

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 164PackPRC

.... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... .... ..... ..... .... ..... .... ..... .... 165SetRecordUIDSupport

................................................................................................................................... 1674 Códigos de Erro no Servidor

SyncAnywhere v1.22V

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Page 9: Sync Anywhere

Parte

I

Page 10: Sync Anywhere

SyncAnywhere v1.227

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

1 Introdução

1.1 Conceitos

A idéia principal das funções de compactação do SyncAnywhere é que sejapossível criar um único banco de dados contendo vários bancos de dados Palm,compactados, para otimização da transmissão entre o servidor e o Palm. Para compactare descompactar dados no servidor, o desenvolvedor poderá criar sua própria aplicaçãoque gere o banco de dados compactado e também descompacte os bancos de dadosrecebidos do Palm.

O Cliente FTP incorporado na biblioteca do Palm permite que sua aplicação secomunique diretamente com um servidor FTP, enviando e recebendo bancos de dados eaplicações, com total controle da transmissão, isto é, se a linha cair, você saberá etomará providências para enviar ou receber os dados novamente. Outra característicaimportante são as rotinas para detecção do modem quando acoplado ao Palm e tambémpara fazer a discagem automaticamente, simplesmente informando o número detelefone, usuário e senha.

1.2 Apresentação

Seja bem-vindo ao SyncAnywhere, um produto especialmente desenvolvidopara utilização no suporte a sincronização de dados. Com ele é possível compactar váriosbancos de dados em um único banco de dados Palm para que o envio dos dados seja

mais rápido e simplificado, e conta também com a descompactação dos bancos de dados.A compactação e descompactação de dados está disponível na biblioteca Palm e tambémno desktop, com suporte a Delphi 5/6/7 e também ao Visual Basic. O SyncAnywhereconta também com um cliente FTP para a transmissão e recepção de dados.

Agora também é possível compactar uma aplicação Palm (PRC) em um arquivoPDB, para agilizar a transmissão da aplicação para o Palm, e descompacta-la através deum simples comando na sua aplicação.

A versão Trial não tem data limite de operação e tem as mesmas característicasda versão Full, mas apresentará uma tela que identifica a versão Trial toda vez que umaoperação for executada com a biblioteca.

Caso tenha interesse em adquirir o SyncAnywhere, entre em contato conosco peloe-mail [email protected].

1.3 Últimas Atualizações

Versão 1.22

· Correção de Bug na SyaUnpack.pas, gravação dos flags do registro.· Suporte a record flags na compactação no Desktop.· Adicionado suporte à ferramenta HB++.· Adicão das funções SyncAnywhereUIDSupportOn e SyncAnywhereUIDSupportOff.

Page 11: Sync Anywhere

Introdução 8

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Versão 1.21

· Adição da função SyncAnywhereCheckDatabase para verificar o banco antes dedescompactar.

· Adicão da função CheckDB no Delphi e VB para verificar o PDB antes de descompactar.· Melhorias no controle de registros transferidos.· Aumento do tamanho do buffer de descompressão.· Adição da função SyncAnywhereFTPSetServerType para que a função

SyncAnywhereFTPDir funcione com servidores FTP que emitem listagem de diretóriosno padrão MS-DOS.

· Adaptação da função SyncAnywhereFTPDir para listagem padrão Windows 2000.· Adicionado suporte ao Delphi 2005.· Correção da função SyncAnywhereFTPDir para contornar problemas de quebra de

Strings.· Correção do percentual na função de chamada às Callbacks. Estava passando de

100%.· Tratamento da String 'total XXXXX' na função SyncAnywhereFTPDir.

Versão 1.20

· Adição da função SyncAnywhereFTPGetFileName.· Adição da função SyncAnywhereFTPDirectoryExists.· Adição da função SyncAnywhereFTPFileExists.

· Adição da função SyncAnywhereFTPGetFileCount.· Adição da função SyncAnywhereFTPDir.· Acrescentado "Trim" no nome do Servidor FTP na função SyncAnywhereFTPOpen, para

evitar que o usuário utilize espaços à direita ou esquerda do endereço do Servidor.· Adição da função SyncAnywhereUnpackApplication.

· Adição das chamadas de Callback, SyncAnywhereSetPackUpdateProc eSyncAnywhereSetUnpackUpdateProc.

Versão 1.19

· Adição das chamadas de Callback, SyncAnywhereSetSendUpdateProc e

SyncAnywhereSetReceiveUpdateProc.· Adição da verificação do CheckSum do arquivo compactado no Servidor.· Adição do CheckSum no arquivo compactado no Servidor.· Alteração na função GetDBCount e GetDBName; estavam deixando o PDB aberto.

· Adição da verificação do CheckSum do arquivo compactado na função UnpackDB.· Adição do CheckSum no arquivo compactado na função PackDB.· Adição da função SyncAnywhereFTPRename.· Adição da função SyncAnywhereSetCreatorID para configurar o CreatorID dos bancos

compactados pela aplicação Palm.

· Alteração na função SyncAnywhereUnpackDatabase e UnpackDB para aceitar blocoscom menos de 100 bytes.

· Alteração na função SyncAnywhereDialWireless, aumento do Timeout para 180segundos (era 30 segundos).

· Correção da função SyncAnywhereUnpackDatabase para suportar bancos vazios, com

AppInfo ou SortInfo.

Versão 1.18

Page 12: Sync Anywhere

SyncAnywhere v1.229

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

· Adição da função SyncAnywhereOpenActiveService.· Suporte a NSBasic versão 4.

· Adição da Função SyncAnywhereDialWireless para discar para celulares e modems IR.· Correção de bug na função SyncAnywhereFTPClose.· Adição da função SyncAnywhereSetPackDataBlock.· Correção de bug na função SyncAnywhereUnpackOneDB.

· Correção de Memory Leak em SyncAnywherePackDatabase.· Adicão da função SyncAnywhereSetPackDataBlock.

Versão 1.17

· Comentários nos exemplos atualizados.

· Suporte ao PocketStudio 2.· Adição da função SyncAnywhereGetDBCount.· Adição da função SyncAnywhereGetDBName.· Adição da função SyncAnywhereUnpackOneDB.

· Adição da função GetDBCount.· Adição da função GetDBName.· Adição da função UnpackOneDB.

Versão 1.16 e anteriores foram liberadas antes de 25/10/2004.

1.4 Conteúdo do Pacote

Os diretórios que compõem o SyncAnywhere são:

· CW: Exemplo das rotinas de compactação e FTP para o CodeWarrior. Há umsubdiretório chamado Lib dentro desta pasta com o arquivo header de acesso àSharedLib que deve ser incluído na sua aplicação CodeWarrior.

· Delphi: Aplicação exemplo Delphi para compactação e descompactação dedados. Dentro deste diretório há um subdiretório chamado Lib que contém

subdiretórios D5, D6 e D7 que correspondem às bibliotecas da parte desktop doSyncAnywhere para o Delphi 5, 6 e 7, respectivamente.

· NSBasic: Exemplo das rotinas de compactação e FTP para o NSBasic. O arquivoSyncAnywhere.inf é a declaração das funções da SharedLib do SyncAnywhereque deve ser copiado para o diretório NSBasic\Lib para que seja possível acompilação do projeto no NSBasic.

· PocketStudio: Exemplo das rotinas de compactação e FTP para o PocketStudio.Sob este diretório, há um subdiretório chamado Lib que contém a unitSyaLib.pas que deve ser incluída no seu projeto PocketStudio para uso dasfunções da SharedLib.

· SharedLib: SharedLib do SyncAnywhere que deve ser instalada no Palm paraque sua aplicação possa acessar seus recursos.

· TestDB: Bancos de Dados Palm utilizados pelas aplicações exemplo. Há tambémduas aplicações Palm para utilização dos bancos de dados exemplo. A aplicaçãoClientes.prc é utilizada também pelas aplicações exemplo Palm para recupera-lo

Page 13: Sync Anywhere

Introdução 10

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

através do FTP.

· VB: Aplicação exemplo Visual Basic demonstrando o uso do componente COM doSyncAnywhere. Sob o diretório SyncAnywhereCOM dentro deste diretório, está

localizado o componente COM (SyncAnywhere.dll ) que você deve distribuir comsuas aplicações e registra-lo na máquina do seu cliente.

Page 14: Sync Anywhere

Parte

II

Page 15: Sync Anywhere

Cliente Palm 12

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2 Cliente Palm

2.1 Introdução

O Cliente SyncAnywhere para o Palm é composto de uma SharedLib chamadaSyncAnywhere.prc que é usada pela sua aplicação para compactar e descompactarbancos de dados e para acesso a um servidor FTP. A biblioteca é composta de funçõescom chamadas bem simples e cujo retorno indica o resultado do comando. ResultadoZERO significa que o comando foi executado com sucesso; resultado maior que ZEROindica um erro, cujo código está documentado mais abaixo nesta seção.

Você deve instalar a biblioteca SyncAnywhere.prc nos Palms onde sua aplicaçãofor fazer uso do SyncAnywhere.

2.2 PocketStudio

2.2.1 Instalação

A instalação do suporte do SyncAnywhere ao PocketStudio é muito simples, bastacolocar o diretório onde está localizada a unit SyaLib.pas no campo Units Search do

PocketStudio, no menu Tools, Environment Options, campo Units Search; você deveadicionar o diretório da unit na lista. Para utiliza-la, basta coloca-la na 'uses clause' dasua unit.

Você encontrará a unit SyaLib.pas no pacote do SyncAnywhere, sob o diretórioonde você instalou o SyncAnywhere\PocketStudio\Lib .

2.2.2 Utilização

A aplicação exemplo FTPTest sob o diretório PocketStudio mostra como utilizaras funções da biblioteca para compactar dados e também para acessar um servidor FTP.No formulário da aplicação, serão solicitados todos os dados para que seja possível aconexão com o servidor FTP:

· O número de telefone para discagem ao servidor de comunicação, seja um RASou provedor Internet;

· Tipo de discagem, pulso ou tom;· Nome de usuário e senha de acesso ao servidor RAS ou provedor Internet;· O endereço IP ou nome do servidor FTP;

· O nome do usuário e senha para logon no servidor FTP.

A unit SyaLib deve ser colocada na uses clause da unit onde você precisaráutilizar a biblioteca. Inicialmente, é necessário criar variáveis globais para armazenar areferência à SharedLib e também o contexto de acesso à ela. Fazemos isso na unit EVNpara que as variáveis sejam acessíveis na unit PPR e também na EVN:

var

Page 16: Sync Anywhere

SyncAnywhere v1.2213

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

RefNum: UInt16; // Referência à SharedLib do SyncAnywhere Context: UInt32; // Contexto de acesso à SharedLib

Nas funções StartApplication e StopApplication é necessário colocar códigopara carregar e para descarregar a biblioteca. Se a biblioteca não for carregada, as

funções não podem ser utilizadas ou causará erro na sua execução.

function StartApplication: Boolean;begin Result := CheckROMVersion($3503000); // PalmOS version if not Result then begin FrmCustomAlert(AlertIncompatible, '3.5', nil, nil);

Exit; end;

// Abre a SharedLib do SyncAnywhere if not SyncAnywhereOpenRef(RefNum, Context) then begin Result := False;

ShowMessage('Erro ao abrir SyncAnywhere SharedLib!'); exit; end;

FrmGotoForm(FrmPrincipal);end;

procedure StopApplication;

begin // Fecha a SharedLib do SyncAnywhere SyncAnywhereCloseRef(RefNum, Context);

FrmCloseAllForms;end;

O código no botão Iniciar FTP executa comandos da biblioteca:

var Str, Str2, Telefone, Usuario, Senha, ServidorFTP, UsuarioFTP, SenhaFTP:Array[0..50] of Char; Pulso: UInt16; Erro: UInt16;begin // Verifica se existe um modem conectado ao Palm

// ------------------------------------------------------------------------ // Para conexão por Celulares ou Modem via Infravermelho, NÃO USE a // função SyncAnywhereModemDetect, pois ela não será capaz de

// detectar a comunicação com o Celular. Esta função deve ser usada // somente quando a conexão for feita através de Modem acoplado ao // Palm, ou celular via cabo

// ------------------------------------------------------------------------ PSField.SetText(FldStatus, 'Detectando Modem...');

Page 17: Sync Anywhere

Cliente Palm 14

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Erro := SyncAnywhereModemDetect(RefNum, Context); if Erro>0 then begin PSField.SetText(FldStatus, 'Modem não detectado!'); exit;

end;

// Configura o CreatorID para criação do Arquivo PDB compactado Erro := SyncAnywhereSetCreatorID(RefNum, Context, 'CBCT'); if Erro>0 then begin StrCopy(Str, 'Erro configurando CreatorID: '); StrIToA(Str2, Erro);

StrCat(Str, Str2); PSField.SetText(FldStatus, Str); exit; end;

// Recupera as informações dos campos PSField.Text(FldTelefone, Telefone, PSField.TextLength(FldTelefone) + 1);

PSField.Text(FldUsuario, Usuario, PSField.TextLength(FldUsuario) + 1); PSField.Text(FldSenha, Senha, PSField.TextLength(FldSenha) + 1); PSField.Text(FldServidor, ServidorFTP, PSField.TextLength(FldServidor) + 1); PSField.Text(FldFTPUsuario, UsuarioFTP, PSField.TextLength(FldFTPUsuario) +1); PSField.Text(FldFTPSenha, SenhaFTP, PSField.TextLength(FldFTPSenha) + 1);

if PSCheckBox.Checked(ChkPulso) then

Pulso := 1 else Pulso := 0;

// Apaga o banco PDBPack, necessário para que os bancos não sejam // adicionados aos já existentes PSDatabase.DeleteDatabase('PDBPack');

// Compacta bancos de dados para envio ao Servidor PSField.SetText(FldStatus, 'Compactando ProdutosDB'); Erro := SyncAnywherePackDatabase(RefNum, Context, 'PDBPack','ProdutosDB', 5000); if Erro>0 then begin StrCopy(Str, 'Erro em ProdutosDB: '); StrIToA(Str2, Erro);

StrCat(Str, Str2); PSField.SetText(FldStatus, Str); exit; end;

PSField.SetText(FldStatus, 'Compactando ClientesDB'); Erro := SyncAnywherePackDatabase(RefNum, Context, 'PDBPack', 'ClientesDB',5000);

Page 18: Sync Anywhere

SyncAnywhere v1.2215

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

if Erro>0 then begin StrCopy(Str, 'Erro em ClientesDB: '); StrIToA(Str2, Erro); StrCat(Str, Str2);

PSField.SetText(FldStatus, Str); exit; end;

// Abre a Net.Lib PSField.SetText(FldStatus, 'Abrindo Net.Lib...'); Erro := SyncAnywhereNetLibOpen(RefNum, Context); if Erro>0 then

begin StrCopy(Str, 'Erro de abertura Net.Lib: '); StrIToA(Str2, Erro); StrCat(Str, Str2); PSField.SetText(FldStatus, Str); exit; end;

// Conecta no servidor de comunicação PSField.SetText(FldStatus, 'Discando');

// ------------------------------------------------------------------------ // Para conexão por Celulares ou Modem via Infravermelho, NÃO USE a // função SyncAnywhereModemDial, pois ela não fará a discagem. Ao

// invés de usar esta // função, crie a conexão com o celular na

// aplicação Prefs do Palm, opção Network e configure lá o telefone, o // modo de conexão, usuário e senha, e utilize a função // SyncAnywhereOpenService(NomeDaConexão) para efetuar

// a discagem. O nome no parâmetro deve ser exatamente igual ao // nome do serviço criado, respeitando-se as letras maiúsculas e // minúsculas.

// Caso tenha alguma dúvida, consulte o manual do SyncAnywhere. // ------------------------------------------------------------------------

Erro := SyncAnywhereDial(RefNum, Context, Telefone, Pulso, Usuario, Senha); if Erro>0 then begin StrCopy(Str, 'Erro de Discagem: '); StrIToA(Str2, Erro); StrCat(Str, Str2); PSField.SetText(FldStatus, Str);

// Fecha a biblioteca de comunicação SyncAnywhereNetLibClose(RefNum, Context); exit; end;

// Conecta no Servidor FTP PSField.SetText(FldStatus, 'Conectando no Servidor FTP...'); Erro := SyncAnywhereFTPOpen(RefNum, Context, ServidorFTP, 0, UsuarioFTP,

Page 19: Sync Anywhere

Cliente Palm 16

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

SenhaFTP, 10); if Erro>0 then begin StrCopy(Str, 'Erro de Conexão: '); StrIToA(Str2, Erro);

StrCat(Str, Str2); PSField.SetText(FldStatus, Str);

// Desconecta do Servidor de comunicação SyncAnywhereHangup(RefNum, Context);

// Fecha Net.Lib SyncAnywhereNetLibClose(RefNum, Context);

exit; end;

// Comando GET de uma aplicação PSField.SetText(FldStatus, 'Recebendo Clientes.prc'); Erro := SyncAnywhereFTPGet(RefNum, Context, 'Clientes.prc');

if Erro>0 then begin StrCopy(Str, 'Erro de recepção: '); StrIToA(Str2, Erro); StrCat(Str, Str2); ShowMessage(Str); end;

// Comando PUT do Banco compactado PSField.SetText(FldStatus, 'Enviando PDBPack...'); Erro := SyncAnywhereFTPPut(RefNum, Context, 'PDBPack'); if Erro>0 then begin StrCopy(Str, 'Erro de envio: '); StrIToA(Str2, Erro); StrCat(Str, Str2);

ShowMessage(Str); end else begin // Fecha Conexão FTP, se o envio teve sucesso Erro := SyncAnywhereFTPClose(RefNum, Context); end;

// Desconecta do Servidor de comunicação SyncAnywhereHangup(RefNum, Context);

// Fecha Net.Lib SyncAnywhereNetLibClose(RefNum, Context);

PSField.SetText(FldStatus, 'Comunicação realizada com sucesso!');end;

Page 20: Sync Anywhere

SyncAnywhere v1.2217

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Já o botão Analisar PDBPack, mostra os bancos de dados compactados emPDBPack:

var dbID: LocalID;

NumDBs, Erro, x: UInt16; Str, Str2: Array[0..60] of Char;begin Handled := True;

// Procura pelo banco PDBPack no Palm dbID := DmFindDatabase(0, 'PDBPack'); if dbID=0 then

begin ShowMessage('Banco PDBPack não foi encontrado, comande o Início do FTPou carregue o banco de dados PDBPack.pdb do diretório TestDB no palm ouEmulador'); exit; end;

// Verifica o número de bancos de dados Compactados em PDBPack Erro := SyncAnywhereGetDBCount(RefNum, Context, 'PDBPack', NumDBs); if Erro>0 then begin StrCopy(Str, 'Erro ao recuperar número de bancos: '); StrIToA(Str2, Erro); StrCat(Str, Str2); ShowMessage(Str);

exit; end;

// Apresenta número de Bancos StrIToA(Str2, NumDBs); StrCopy(Str, 'Número de bancos de dados em PDBPack: '); StrCat(Str, Str2); ShowMessage(Str);

// Apresenta o nome dos Bancos em PDBPack for x:=0 to NumDBs-1 do begin Erro := SyncAnywhereGetDBName(RefNum, Context, 'PDBPack', x, Str2); if Erro>0 then begin StrCopy(Str, 'Erro ao recuperar nome do banco: ');

StrIToA(Str2, Erro); StrCat(Str, Str2); ShowMessage(Str); exit; end;

// Apresenta o nome StrCopy(Str, 'Banco armazenado em PDBPack: ');

Page 21: Sync Anywhere

Cliente Palm 18

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

StrCat(Str, Str2); ShowMessage(Str); end;

// Descompacta apenas um banco de dados de PDBPack

Erro := SyncAnywhereUnpackOneDB(RefNum, Context, 'PDBPack','ProdutosDB'); if Erro>0 then begin StrCopy(Str, 'Erro ao recuperar descompactar banco ProdutosDB de PDBPack:'); StrIToA(Str2, Erro); StrCat(Str, Str2);

ShowMessage(Str); exit; end;

// Teste efetuado com sucesso! ShowMessage('Banco de dados ProdutosDB descompactado!');end;

2.2.3 Funções do SyncAnywhere

2.2.3.1 SyncAnywhereOpenRef

function SyncAnywhereOpenRef(var RefNum: UInt16; var Context: UInt32):Boolean;

Comentário

Abre a referência à SharedLib.

Parâmetros

RefNum: A referência à SharedLib será retornada neste parâmetroContext: O contexto de acesso à SharedLib será retornado neste parâmetro

Você deve armazenar os dois parâmetros em variáveis globais pois seránecessário utiliza-los em todas as chamadas às funções do SyncAnywhere.

Retorno

Boolean indicando se a biblioteca foi aberta corretamente.

2.2.3.2 SyncAnywhereCloseRef

function SyncAnywhereCloseRef(var RefNum: UInt16; var Context: UInt32):Boolean;

Comentário

Page 22: Sync Anywhere

SyncAnywhere v1.2219

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Fecha a referência à SharedLib.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhere

Context: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

Boolean indicando se a biblioteca foi fechada corretamente.

2.2.3.3 SyncAnywhereGetVersion

function SyncAnywhereGetVersion(RefNum: UInt16): UInt16;

Comentários

Recupera a versão da biblioteca. A versão é retornada como um número inteiro,

onde a centena representa a versão e a dezena, a correção da versão, exemplo: a versão113 representa a versão 1 da biblioteca, com a correção 13.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhere, recuperado na funçãoSyncAnywhereOpenRef .

Retorno

Inteiro representando a versão da biblioteca.

2.2.3.4 SyncAnywhereCheckSumOn

function SyncAnywhereCheckSumOn(RefNum: UInt16; ClientContext: UInt32):UInt32;

Comentários

Habilita a gravação de bytes de verificação de integridade nos registros do bancode dados compactado, para auxiliar na garantia da integridade dos dados transmitidos.Por default, a gravação dos bytes de verificação está desabilitada . O número de bytesde verificação de integridade gravados por registro é 10.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na função

Page 23: Sync Anywhere

Cliente Palm 20

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

SyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

2.2.3.5 SyncAnywhereCheckSumOff

function SyncAnywhereCheckSumOff(RefNum: UInt16; ClientContext: UInt32):UInt32;

Comentários

Desabilita a gravação de bytes de verificação de integridade nos registros dobanco de dados compactado (default).

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.6 SyncAnywhereUIDSupportOn

function SyncAnywhereUIDSupportOn(RefNum: UInt16; ClientContext: UInt32):UInt32;

Comentários

Habilita a gravação do UniqueID de cada registro do banco de dados. O UniqueID

é uma informação não utilizada pela maioria das ferramentas, mas se por algum motivosua aplicação usa esta informação, você precisa habilitar o uso com esta função. Pordefault, a gravação do UniqueID está desabilitada para economizar espaço no banco dedados compactado gerado.

Atenção:

- O uso desta função torna o SyncAnywhereincompatível com bancos de dados compactados sem o uso destafunção. Para que o SyncAnywhere seja compatível com bancos dedados compactados sem o UniqueID, é necessário utilizar a função

Page 24: Sync Anywhere

SyncAnywhere v1.2221

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

SyncAnywhereUIDSupportOff.

- É necessário também habilitar a gravação do UniqueIDna sua aplicação que compacta e descompacta dados no servidor.

- Quando quiser habilitar o suporte ao UniqueID, utilizeesta função logo após abrir a biblioteca pois ela é necessária paracompactar e descompactar bancos de dados com UniqueID.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na função

SyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.7 SyncAnywhereUIDSupportOff

function SyncAnywhereUIDSupportOff(RefNum: UInt16; ClientContext:UInt32): UInt32;

Comentários

Desabilita a gravação do UniqueID de cada registro do banco de dados. OUniqueID é uma informação não utilizada pela maioria das ferramentas, mas se por

algum motivo sua aplicação usa esta informação, você precisa habilitar o uso com afunção SyncAnywhereUIDSupportOn . Por default, a gravação do UniqueID estádesabilitada para economizar espaço no banco de dados compactado gerado.

Atenção: o uso do UniqueID torna o SyncAnywhereincompatível com bancos de dados compactados sem o uso dafunção SyncAnywhereUIDSupportOn.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

Page 25: Sync Anywhere

Cliente Palm 22

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.8 SyncAnywhereSetPackDataBlock

function SyncAnywhereSetPackDataBlock(RefNum: UInt16; ClientContext:UInt32; MaxDataBlock: UInt16): UInt32;

Comentários

Esta função é de extrema importância se o arquivo tiver que ser descompactadoem equipamentos com pouca memória como o Zire, M100, M105 ou qualquer outro que

tenha 2MB de memória ou menos. Esses equipamentos tem muito pouca memóriadinâmica para alocação, assim, a quantidade de memória disponível depende dotamanho da aplicação. O tamanho máximo do bloco compactado de dados deve serconfigurado segundo sua necessidade em equipamentos com pouca memória e nestecaso um valor de 500 bytes é geralmente adequado à aplicações grandes.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à bibliotecaMaxDataBlock: Tamanho máximo (em bytes) do bloco de dados que será

compactado. O default é 30000 bytes, mas para equipamentos com pouca memória estevalor deve ser muito mais baixo, em torno de 500 bytes quando a aplicação executada égrande ou até 2500 bytes se a aplicação for pequena.

Os parâmetros RefNum e ClientContext devem ter sido recuperados na função

SyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.9 SyncAnywhereSetSendUpdateProc

function SyncAnywhereSetSendUpdateProc(RefNum: UInt16; ClientContext:UInt32; UpdateProc: TUpdateProcedure): UInt32;

Comentários

Configura uma procedure na sua aplicação que será chamada pelo SyncAnywherecom o percentual do andamento do envio de dados ao servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à bibliotecaUpdateProc: Procedure com apenas um parâmetro UInt16 para receber o

Page 26: Sync Anywhere

SyncAnywhere v1.2223

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

percentual do andamento do envio de dados ao servidor FTP.

Os parâmetros RefNum e ClientContext devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo

procedure ShowStatus(Status: UInt16);

var Str, Str2: Array[0..20] of Char;begin StrIToA(Str2, Status); StrCopy(Str, 'Status: '); StrCat(Str, Str2); StrCat(Str, '%');

PSField.SetText(FldStatus, Str);end;

procedure XXXX;......

// Configura a função ShowStatus para receber o percentual de// envio de dados ao Servidor FTPSyncAnywhereSetSendUpdateProc(RefNum, Context, ShowStatus);

...

...end;

2.2.3.10 SyncAnywhereSetReceiveUpdateProc

function SyncAnywhereSetReceiveUpdateProc(RefNum: UInt16; ClientContext:UInt32; UpdateProc: TUpdateProcedure): UInt32;

Comentários

Configura uma procedure na sua aplicação que será chamada pelo SyncAnywhere

com o percentual do andamento do recebimento de dados ao servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à bibliotecaUpdateProc: Procedure com apenas um parâmetro UInt16 para receber o

Page 27: Sync Anywhere

Cliente Palm 24

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

percentual do andamento do recebimento de dados ao servidor FTP.

Os parâmetros RefNum e ClientContext devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo

procedure ShowStatus(Status: UInt16);

var Str, Str2: Array[0..20] of Char;begin StrIToA(Str2, Status); StrCopy(Str, 'Status: '); StrCat(Str, Str2); StrCat(Str, '%');

PSField.SetText(FldStatus, Str);end;

procedure XXXX;......

// Configura a função ShowStatus para receber o percentual de// recebimento de dados do Servidor FTPSyncAnywhereSetReceiveUpdateProc(RefNum, Context, ShowStatus);

...

...end;

2.2.3.11 SyncAnywhereSetPackUpdateProc

function SyncAnywhereSetPackUpdateProc(RefNum: UInt16; ClientContext:UInt32; UpdateProc: TUpdateProcedure): UInt32;

Comentários

Configura uma procedure na sua aplicação que será chamada pelo SyncAnywhere

com o percentual do andamento da compactação do banco de dados.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à bibliotecaUpdateProc: Procedure com apenas um parâmetro UInt16 para receber o

Page 28: Sync Anywhere

SyncAnywhere v1.2225

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

percentual do andamento da compactação do banco de dados.

Os parâmetros RefNum e ClientContext devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo

procedure ShowStatus(Status: UInt16);

var Str, Str2: Array[0..20] of Char;begin StrIToA(Str2, Status); StrCopy(Str, 'Status: '); StrCat(Str, Str2); StrCat(Str, '%');

PSField.SetText(FldStatus, Str);end;

procedure XXXX;......

// Configura a função ShowStatus para receber o percentual da// compactação do banco de dadosSyncAnywhereSetPackUpdateProc(RefNum, Context, ShowStatus);

...

...end;

2.2.3.12 SyncAnywhereSetUnpackUpdateProc

function SyncAnywhereSetUnpackUpdateProc(RefNum: UInt16; ClientContext:UInt32; UpdateProc: TUpdateProcedure): UInt32;

Comentários

Configura uma procedure na sua aplicação que será chamada pelo SyncAnywhere

com o percentual do andamento da descompactação do banco de dados.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à bibliotecaUpdateProc: Procedure com apenas um parâmetro UInt16 para receber o

Page 29: Sync Anywhere

Cliente Palm 26

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

percentual do andamento da descompactação do banco de dados.

Os parâmetros RefNum e ClientContext devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo

procedure ShowStatus(Status: UInt16);

var Str, Str2: Array[0..20] of Char;begin StrIToA(Str2, Status); StrCopy(Str, 'Status: '); StrCat(Str, Str2); StrCat(Str, '%');

PSField.SetText(FldStatus, Str);end;

procedure XXXX;......

// Configura a função ShowStatus para receber o percentual da// descompactação do banco de dadosSyncAnywhereSetUnpackUpdateProc(RefNum, Context, ShowStatus);

...

...end;

2.2.3.13 SyncAnywhereSetCreatorID

function SyncAnywhereSetCreatorID(RefNum: UInt16; ClientContext: UInt32;CreatorID: PChar): UInt32;

Comentários

Configura o CreatorID que será usado para os arquivos compactados.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na função

Page 30: Sync Anywhere

SyncAnywhere v1.2227

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

SyncAnywhereOpenRef .

CreatorID: O CreatorID, com exatamente quatro caracteres.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.14 SyncAnywherePackDatabase

function SyncAnywherePackDatabase(RefNum: UInt16; ClientContext: UInt32;DBDest: PChar; DBSource: PChar; MaxBlockSize: UInt16): UInt32;

Comentários

Compacta o banco de dados informado em DBSource, no banco de dadosinformado em DBDest.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBDest: Nome do banco de dados destino, onde será compactado o banco dedados de origem. Atenção: O banco de dados destino deve ser apagado antes de

chamar esta função pela primeira vez. As chamadas sucessivas à esta funçãoadicionam bancos de dados compactados à DBDest, portanto na primeira vez que usaresta função, certifique-se que ele não exista, para que a compactação inicie em umbanco de dados novo.

DBSource: Banco de dados origem, que será compactado dentro de DBDest.MaxBlockSize: Tamanho máximo do registro que será gerado no banco de dados

DBDest. Este valor normalmente deve ser em torno de 5000, que representa 5000 bytesem cada registro e pode ser configurado em função da qualidade de transmissão da linha

telefônica ou celular. Há locais onde é melhor que este valor seja menor, em torno de1000, para minimizar erros na transmissão. O tamanho mínimo é 50 bytes e o máximo30000.

Observação importante: para os modelos M100, Zire e outros que temmemória igual ou inferior a 2MB, este parâmetro não poderá ser maior que2500 bytes, ou retornará o erro appErrInvalidBlockSize. Estes modelos temmemória "Heap" (memória dinâmica liberada pelo PalmOS) extremamente

limitada e as alocações de memória internas necessárias para compactaçãopodem falhar se o valor for maior que 2500 bytes. Se o Banco de Dados tiverque ser descompactado em equipamentos deste tipo, não se esqueça deconfigurar o tamanho do bloco de compactação com as funçõesSyncAnywhereSetPackDataBlock no Palm e PackSetMaxDataBlock no Servidor.

Page 31: Sync Anywhere

Cliente Palm 28

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.15 SyncAnywhereGetDBCount

function SyncAnywhereGetDBCount(RefNum: UInt16; ClientContext: UInt32;DBSource: PChar; var DBCount: UInt16): UInt32;

Comentários

Recupera o número de bancos de dados compactados dentro do banco

especificado no parâmetro DBSource, na variável informada no parâmetro DBCount. Onúmero de bancos de dados compactados só pode ser recuperado dos PDBsgerados pelo SyncAnywhere a partir da versão 1.17.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.DBCount: Variável do tipo UInt16 para receber o número de bancos de dados

compactados.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.16 SyncAnywhereGetDBName

function SyncAnywhereGetDBName(RefNum: UInt16; ClientContext: UInt32;

DBSource: PChar; Indx: UInt16; DBName: PChar): UInt32;

Comentários

Recupera o nome de bancos de dados compactado dentro do banco especificadono parâmetro DBSource, na variável informada no parâmetro DBName , de acordo como índice do banco informado no parâmetro Indx. O nome dos bancos de dadoscompactados só podem ser recuperados dos PDBs gerados pelo SyncAnywhere

a partir da versão 1.17.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Page 32: Sync Anywhere

SyncAnywhere v1.2229

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.Indx: O índice do banco de dados. O primeiro banco de dados compactado tem

índice ZERO. Para saber o número de bancos de dados compactados, utilize a funçãoSyncAnywhereGetDBCount .

DBName: O nome do banco de dados compactado é retornado neste parâmetro.Atenção: Este parâmetro DEVE SER uma variável PChar ou Array de Charalocada com no mínimo 32 caracteres. A biblioteca irá copiar o nome nesteparâmetro, não fará alocação de memória para o retorno da mensagem. Se vocênão alocar espaço, poderá causar um erro na sua aplicação e Reset no Palm .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.17 SyncAnywhereCheckDatabase

function SyncAnywhereCheckDatabase(RefNum: UInt16; ClientContext: UInt32;

DBSource: PChar): UInt32;

Comentários

Verifica a estrutura de um banco compactado gerado pelo SyncAnywhere. Afunção verifica a integridade do número de registros no banco e CheckSum (sehabilitado).

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.

Retorno

ZERO indica que o PDB está íntegro na sua estrutura.

UM indica que o PDB está íntegro na sua estrutura, mas o CheckSum está

desabilitado, portanto ainda pode haver erro nos registros transferidos.

> UM é o código de erro da verificação do PDB.

Page 33: Sync Anywhere

Cliente Palm 30

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.2.3.18 SyncAnywhereUnpackDatabase

function SyncAnywhereUnpackDatabase(RefNum: UInt16; ClientContext:UInt32; DBSource: PChar): UInt32;

Comentários

Descompacta os bancos de dados para a memória do Palm. Atenção: Você deveapagar os bancos de dados que serão descompactados antes que eles sejamdescompactados por esta função ou os registros serão adicionados aos

registros dos bancos de dados se já existirem.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na função

SyncAnywhereOpenRef .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

2.2.3.19 SyncAnywhereUnpackOneDB

function SyncAnywhereUnpackOneDB(RefNum: UInt16; ClientContext: UInt32;DBSource: PChar; DBName: PChar): UInt32;

Comentários

Descompacta um único banco de dados para a memória do Palm. Atenção: Vocêdeve apagar o banco de dados que será descompactado antes que eles sejadescompactado por esta função ou os registros serão adicionados aos registrosdo banco de dados.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhere

ClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.DBName: O nome do banco de dados que será extraído do banco compactado.

Retorno

Page 34: Sync Anywhere

SyncAnywhere v1.2231

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.20 SyncAnywhereUnpackApplication

function SyncAnywhereUnpackApplication(RefNum: UInt16; ClientContext:UInt32; DBSource: PChar): UInt32;

Comentários

Descompacta a aplicação compactada em um Banco de Dados Palm (PDB) para amemória do Palm. Atenção: Você deve apagar a aplicação que serádescompactada antes que ela seja descompactada por esta função ou será

retornado um código de erro.

É possível utilizar SyncAnywhereSetUnpackUpdateProc para configurar umafunção da sua aplicação para mostrar o andamento da descompactação da aplicação.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhere

ClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBSource: O nome do banco de dados que contém a aplicação compactada como SyncAnywhere.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.21 SyncAnywhereSetNetLib

function SyncAnywhereSetNetLib(RefNum: UInt16; ClientContext: UInt32;

NetLibRef: UInt16): UInt32;

Comentários

Se você iniciar a comunicação sem utilizar a função SyncAnywhereDial , vocêdeve usar esta função para informar a referência à Net.Lib aberta antes de usar asfunções de comunicação do SyncAnywhere.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na função

Page 35: Sync Anywhere

Cliente Palm 32

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

SyncAnywhereOpenRef .

NetLibRef: A referência à Net.Lib.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.22 SyncAnywhereNetLibOpen

function SyncAnywhereNetLibOpen(RefNum: UInt16; ClientContext: UInt32):UInt32;

Comentários

Abre a biblioteca de comunicação do Palm. Esta função deve ser chamada antesde qualquer outra função de comunicação.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.23 SyncAnywhereNetLibClose

function SyncAnywhereNetLibClose(RefNum: UInt16; ClientContext: UInt32):UInt32;

Comentários

Fecha a biblioteca de comunicação do Palm. Esta função deve ser chamadaquando a comunicação não for mais necessária, geralmente a última função a serchamada no processo de comunicação.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Page 36: Sync Anywhere

SyncAnywhere v1.2233

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.24 SyncAnywhereModemDetect

function SyncAnywhereModemDetect(RefNum: UInt16; ClientContext: UInt32):UInt32;

Comentários

Detecta se um Modem ou Celular (via cabo serial) está conectado ao Palm.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.25 SyncAnywhereDial

function SyncAnywhereDial(RefNum: UInt16; ClientContext: UInt32; Phone:

PChar; Pulse: UInt16; Username: PChar; Password: PChar): UInt32;

Comentários

Disca para um servidor de comunicação usando o modem acoplado ao Palm(PalmModem ou Celular via cabo serial).

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Phone: Número do telefone.Pulse: 1 para discagem de Pulso e ZERO para discagem por Tom.Username: Nome do usuário para validação no servidor de comunicação

(RAS/Internet).Password: Senha de acesso do usuário.

Page 37: Sync Anywhere

Cliente Palm 34

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.26 SyncAnywhereDialWireless

function SyncAnywhereDialWireless(RefNum: UInt16; ClientContext: UInt32;Connection: PChar; Phone: PChar; Username: PChar; Password: PChar;DNSServer: PChar; Script: PChar): UInt32;

Comentários

Disca para um servidor de comunicação usando uma Conexão predeterminada.Esta função pode ser usada para discagem por modem ou celular infravermelho ouBluetooth.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Connection: Nome da Conexão preconfigurada na aplicação Prefs , opçãoConnection (Conexões).

Phone: Número do telefone.Username: Nome do usuário para validação no servidor de comunicação

(RAS/Internet).Password: Senha de acesso do usuário.DNSServer: Endereço IP do Servidor DNS, exemplo '222.111.22.11'.Script: Texto do Script para conexão. Caso um Script não seja necessário, use nil

ou uma String vazia. Para informar um Script neste parâmetro, veja os comentários maisabaixo.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Script para conexão

Segundo a documentação da API do PalmOS, o Script é muito rígido, se um Script com

sintaxe incorreta for informado, os resultados serão imprevisíveis. O formato do Script éuma sequência de Strings terminadas em ZERO, com um ZERO extra no final detodas as Strings, exemplo:

's go PPP'#0's ^N'#0#0

No exemplo acima temos um comando Send, terminado em ZERO, outro comando Send,

Page 38: Sync Anywhere

SyncAnywhere v1.2235

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

terminado em ZERO e um ZERO indicando o final do Script.

Comandos aceitos no Script

Função Comando Parâmetro Exemplo

Send s String s go PPP

Wait For w String s password:

Delay d Número de segundos s 1

Get IP g g

Prompt a String a Digite Nome:

Wait for Prompt f String f ID:

Send CR s String s ^N

Send UserID s String s nomeusuario

Send Password s String s senha

OBS: DEVE HAVER APENAS UM ÚNICO ESPAÇO ENTRE O COMANDO E OPARÂMETRO.

2.2.3.27 SyncAnywhereOpenActiveService

function SyncAnywhereOpenActiveService(RefNum: UInt16; ClientContext:UInt32): UInt32;

Comentários

Inicia o serviço selecionado no Prefs/Network. Esta função é útil quando você játem o serviço configurado ou quando o serviço requer configurações especiais comocomunicação IR (Celular IR), Bluetooth, WiFi, ou necessita configurar scripts.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na função

SyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.28 SyncAnywhereOpenService

function SyncAnywhereOpenService(RefNum: UInt16; ClientContext: UInt32;ServiceName: PChar): UInt32;

Page 39: Sync Anywhere

Cliente Palm 36

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Comentários

Inicia um serviço já configurado no Prefs/Network. Esta função é útil quando vocêjá tem o serviço configurado ou quando o serviço requer configurações especiais comocomunicação IR (Celular IR), Bluetooth, WiFi, ou necessita configurar scripts.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

ServiceName: Nome do Serviço criado no Prefs/Network.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.29 SyncAnywhereHangup

function SyncAnywhereHangup(RefNum: UInt16; ClientContext: UInt32):UInt32;

Comentários

Desconecta do servidor de comunicação, conectado pela função

SyncAnywhereDial ou pela função SyncAnywhereOpenService .

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na função

SyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.30 SyncAnywhereFTPPassiveModeOn

function SyncAnywhereFTPPassiveModeOn(RefNum: UInt16; ClientContext:UInt32): UInt32;

Comentários

Page 40: Sync Anywhere

SyncAnywhere v1.2237

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Configura o modo "PASV" (FTP PASSIVO) na conexão FTP (default noSyncAnywhere).

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.31 SyncAnywhereFTPPassiveModeOff

function SyncAnywhereFTPPassiveModeOff(RefNum: UInt16; ClientContext:UInt32): UInt32;

Comentários

Configura o modo não passivo (FTP ATIVO) na conexão FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.32 SyncAnywhereSetTCPDelay

function SyncAnywhereSetTCPDelay(RefNum: UInt16; ClientContext: UInt32;Delay: UInt16): UInt32;

Comentários

Configura um tempo de espera entre os envios e recebimentos de blocos de dadosde/para o Servidor FTP. Esta função é importante quando as conexões são notoriamentelentas, sensíveis e suscetíveis à quedas como conexões via celular e principalmente porinfravermelho.

Como regra, quanto maior o tamanho do bloco utilizado para compactar o banco

Page 41: Sync Anywhere

Cliente Palm 38

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

de dados através da função SyncAnywherePackDatabase, maior deve ser o tempo deespera passado nesta função em conexões lentas, principalmente infravermelho. Comoparâmetro, em testes realizados em conexões IR com média qualidade, blocos de 500bytes compactados podem ser utilizados com o parâmetro Delay nesta funçãoconfigurado para 3 (300ms). Em conexões com pior qualidade, o tempo deve ser

aumentado e o tamanho do bloco diminuído.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à bibliotecaDelay: Número de "décimos de segundo" para a espera. DEZ décimos de

segundo equivalem a UM segundo de atraso, portanto, para atrasar TRÊS décimos de

segundo (300 ms) use SyncAnywhereSetTCPDelay(RefNum, ClientContext, 3).

Os parâmetros RefNum e ClientContext devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.33 SyncAnywhereFTPOpen

function SyncAnywhereFTPOpen(RefNum: UInt16; ClientContext: UInt32;Hostname: PChar; Port: UInt16; Username: PChar; Password: PChar; Timeout:UInt16): UInt32;

Comentários

Conecta-se a um servidor FTP. A conexão com um servidor de comunicação(RAS/Internet) já deve ter sido iniciada pela função SyncAnywhereDial ou por outromeio.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

HostName: O nome ou endereço IP do servidor FTP.

Port: A porta do serviço FTP no servidor. Se a porta for a padrão, utilize ZEROneste parâmetro.

Username: O nome do usuário para logon no servidor FTP.Password: A senha de acesso do usuário.Timeout: Número de segundos para timeout no acesso ao servidor FTP.

Retorno

Page 42: Sync Anywhere

SyncAnywhere v1.2239

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.34 SyncAnywhereFTPClose

function SyncAnywhereFTPClose(RefNum: UInt16; ClientContext: UInt32):UInt32;

Comentários

Fecha a conexão com o servidor FTP. A conexão deve ter sido aberta pela funçãoSyncAnywhereFTPOpen .

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.35 SyncAnywhereFTPCd

function SyncAnywhereFTPCd(RefNum: UInt16; ClientContext: UInt32; Path:PChar): UInt32;

Comentários

Muda o diretório no servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Path: Caminho para o diretório no servidor FTP

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 43: Sync Anywhere

Cliente Palm 40

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.2.3.36 SyncAnywhereFTPMkd

function SyncAnywhereFTPMkd(RefNum: UInt16; ClientContext: UInt32; Name:PChar): UInt32;

Comentários

Cria o diretório no servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Name: Nome do diretório a ser criado no servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.37 SyncAnywhereFTPRmd

function SyncAnywhereFTPRmd(RefNum: UInt16; ClientContext: UInt32; Name:PChar): UInt32;

Comentários

Remove o diretório do servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Name: Nome do diretório a ser removido no servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 44: Sync Anywhere

SyncAnywhere v1.2241

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.2.3.38 SyncAnywhereFTPDel

function SyncAnywhereFTPDel(RefNum: UInt16; ClientContext: UInt32; Name:PChar): UInt32;

Comentários

Remove o arquivo do servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Name: Nome do arquivo a ser removido no servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.39 SyncAnywhereFTPPut

function SyncAnywhereFTPPut(RefNum: UInt16; ClientContext: UInt32;DBName: PChar): UInt32;

Comentários

Envia um banco de dados ou aplicação do Palm para o servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBName: Nome do banco de dados ou aplicação para ser enviada ao servidor. O

nome não deve conter extensão pois ela será colocada automaticamente (.PDB/.PRC)dependendo do que estiver sendo enviado. Atenção: o nome do banco de dados écase-sensitive.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 45: Sync Anywhere

Cliente Palm 42

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.2.3.40 SyncAnywhereFTPGet

function SyncAnywhereFTPGet(RefNum: UInt16; ClientContext: UInt32; Name:PChar): UInt32;

Comentários

Recebe um banco de dados ou aplicação do servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Name: Nome do banco de dados ou aplicação para ser recebida do servidor. O

nome deve conter a extensão (.PDB/.PRC) dependendo do que estiver sendo recuperado.Atenção: alguns servidores FTP exigem que os nomes de arquivo sejamexatamente como estão armazenados (case-sensitive) .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

2.2.3.41 SyncAnywhereFTPRename

function SyncAnywhereFTPRename(RefNum: UInt16; ClientContext: UInt32;OldName: PChar; NewName: PChar): UInt32;

Comentários

Renomeia um banco de dados ou aplicação no servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na função

SyncAnywhereOpenRef .

OldName: Nome do banco de dados ou aplicação para ser renomeada noservidor. O nome deve conter a extensão (.PDB/.PRC) dependendo do que estiver sendorenomeado. Atenção: alguns servidores FTP exigem que os nomes de arquivosejam exatamente como estão armazenados (case-sensitive).

NewName: Novo nome do arquivo no servidor.

Retorno

Page 46: Sync Anywhere

SyncAnywhere v1.2243

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.42 SyncAnywhereFTPGetLastResponse

function SyncAnywhereFTPGetLastResponse(RefNum: UInt16; ClientContext:UInt32; Response: PChar): UInt32;

Comentários

Obtém o texto da última resposta do servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Response: Última mensagem de resposta do servidor FTP. Este texto é

recuperado diretamente o servidor FTP, portanto a mensagem é do próprio servidor.Atenção: Este parâmetro DEVE SER uma variável PChar ou Array de Charalocada com 255 caracteres. A biblioteca irá copiar a mensagem nesteparâmetro, não fará alocação de memória para o retorno da mensagem. Se vocênão alocar espaço, poderá causar um erro na sua aplicação e Reset no Palm .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.2.3.43 SyncAnywhereFTPSetServerType

function SyncAnywhereFTPSetServerType(RefNum: UInt16; ClientContext:UInt32; ServerType: UInt16): UInt32;

Comentários

Configura o tipo de listagem de diretório (comando DIR) retornada pelo servidorFTP. O parâmetro ServerType pode ser configurado como ZERO para retorno padrãoUnix/Linux e UM para retorno padrão Windows 2000.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à bibliotecaServerType: ZERO para retorno padrão Unix/Linux e UM para

retorno padrão Windows 2000.

Os dois parâmetros devem ter sido recuperados na função

Page 47: Sync Anywhere

Cliente Palm 44

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

SyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

2.2.3.44 SyncAnywhereFTPDir

function SyncAnywhereFTPDir(RefNum: UInt16; ClientContext: UInt32):UInt32;

Comentários

Obtém a listagem dos arquivos do diretório corrente no Servidor FTP. Estaoperação não apresenta os arquivos no formulário, obtém a lista para uso posterior pelasfunções SyncAnywhereFTPGetFileCount, SyncAnywhereFTPGetFileName,SyncAnywhereFTPFileExists e SyncAnywhereFTPDirectoryExists.

SyncAnywhereFTPDir não é chamada automaticamente ao se conectar ao ServidorFTP e na mudança de diretório no Servidor para otimizar a transmissão. Fica a critério do

desenvolvedor obter ou não a lista de arquivos, através da utilização ou não destafunção.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

// Obtém a listagem dos arquivos do diretório // corrente no Servidor Erro := SyncAnywhereFTPDir(RefNum, Context); if Erro>0 then begin // Erro no comando SyncAnywhereFTPDIR

Exit; end;

// Recupera o número de arquivos no diretório // corrente no Servidor Erro := SyncAnywhereFTPGetFileCount(RefNum, Context, FileCount);

Page 48: Sync Anywhere

SyncAnywhere v1.2245

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

if Erro>0 then begin // Erro no comando SyncAnywhereFTPGetFileCount Exit; end;

// Mostra o número de arquivos StrCopy(Str, 'Número de Arquivos no Servidor: '); StrIToA(Str2, FileCount); StrCat(Str, Str2); ShowMessage(Str);

// Mostra os nomes dos arquivos

for x:=0 to FileCount-1 do begin Erro := SyncAnywhereFTPGetFileName(RefNum, Context, x, Nome);

if Erro=0 then ShowMessage(Nome); end;

// Verifica se o arquivo existe no Servidor Erro := SyncAnywhereFTPFileExists(RefNum, Context, 'Test.pdb', Exists); if Erro>0 then begin // Erro no comando SyncAnywhereFTPFileExists Exit; end;

// Indica se o arquivo existe if Exists>0 then ShowMessage('Arquivo existe no Servidor!') else ShowMessage('Arquivo não existe no Servidor!');

// Verifica se o diretório existe no Servidor

Erro := SyncAnywhereFTPDirectoryExists(RefNum, Context, 'dados', Exists); if Erro>0 then begin // Erro no comando SyncAnywhereFTPDirectoryExists Exit; end;

// Indica se o diretório existe

if Exists>0 then ShowMessage('Diretório existe no Servidor!') else ShowMessage('Diretório não existe no Servidor!');

Page 49: Sync Anywhere

Cliente Palm 46

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.2.3.45 SyncAnywhereFTPGetFileCount

function SyncAnywhereFTPGetFileCount(RefNum: UInt16; ClientContext:UInt32; var FileCount: UInt16): UInt32;

Comentários

Recupera o número de arquivos no diretório corrente do Servidor FTP. Atenção:esta função só funciona se o comando SyncAnywhereFTPDir for chamado antes pararecuperar a lista de arquivos do Servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

FileCount: Variável do tipo UInt16 para receber o número de arquivos nodiretório corrente do Servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

Consulte a função SyncAnywhereFTPDir para exemplo de utilização desta função.

2.2.3.46 SyncAnywhereFTPFileExists

function SyncAnywhereFTPFileExists(RefNum: UInt16; ClientContext: UInt32;

FileName: PChar; var FileExists: UInt16): UInt32;

Comentários

Verifica se o arquivo existe no diretório corrente do Servidor FTP. Atenção: estafunção só funciona se o comando SyncAnywhereFTPDir for chamado antes pararecuperar a lista de arquivos do Servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

FileName: Nome do arquivo.

Page 50: Sync Anywhere

SyncAnywhere v1.2247

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

FileExists: Variável do tipo UInt16 para receber o resultado da verificação. ZEROindica que o arquivo não existe no diretório corrente do Servidor; UM indica que oarquivo existe.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

Consulte a função SyncAnywhereFTPDir para exemplo de utilização desta função.

2.2.3.47 SyncAnywhereFTPDirectoryExists

function SyncAnywhereFTPDirectoryExists(RefNum: UInt16; ClientContext:UInt32; DirName: PChar; var DirExists: UInt16): UInt32;

Comentários

Verifica se o diretório existe no diretório corrente do Servidor FTP. Atenção: esta

função só funciona se o comando SyncAnywhereFTPDir for chamado antes pararecuperar a lista de arquivos do Servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DirName: Nome do diretório.DirExists: Variável do tipo UInt16 para receber o resultado da verificação. ZERO

indica que o diretório não existe no diretório corrente do Servidor; UM indica que odiretório existe.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

Consulte a função SyncAnywhereFTPDir para exemplo de utilização desta função.

2.2.3.48 SyncAnywhereFTPGetFileName

function SyncAnywhereFTPGetFileName(RefNum: UInt16; ClientContext:UInt32; FileIndex: UInt16; FileName: PChar): UInt32;

Page 51: Sync Anywhere

Cliente Palm 48

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Comentários

Recupera o nome do arquivo no diretório do Servidor FTP segundo o índiceespecificado. Atenção: esta função só funciona se o comando SyncAnywhereFTPDir forchamado antes para recuperar a lista de arquivos do Servidor FTP.

Parâmetros

RefNum: Referência à biblioteca SyncAnywhereClientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

FileIndex: Índice do arquivo na lista. O primeiro índice é ZERO.FileName: O nome do arquivo será retornado neste parâmetro. Atenção: Este

parâmetro DEVE SER uma variável PChar ou Array de Char alocada com nomínimo 100 caracteres. A biblioteca irá copiar o nome neste parâmetro, nãofará alocação de memória para o retorno da mensagem. Se você não alocarespaço, poderá causar um erro na sua aplicação e Reset no Palm.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

Consulte a função SyncAnywhereFTPDir para exemplo de utilização desta função.

2.3 NSBasic

2.3.1 Instalação

No diretório do SyncAnywhere\NSBasic , há um arquivo chamadoSyncAnywhere.inf que deve ser copiado para o diretório Lib do NSBasic. Este arquivocontém as informações de acesso à SharedLib do SyncAnywhere, necessário para que o

NSBasic possa compilar sua aplicação.

2.3.2 Utilização

A aplicação exemplo FTPTest sob o diretório NSBasic mostra como utilizar asfunções da biblioteca para compactar dados e também para acessar um servidor FTP. Noformulário da aplicação, serão solicitados todos os dados para que seja possível a

conexão com o servidor FTP:

· O número de telefone para discagem ao servidor de comunicação, seja um RASou provedor Internet;

· Tipo de discagem, pulso ou tom;

Page 52: Sync Anywhere

SyncAnywhere v1.2249

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

· Nome de usuário e senha de acesso ao servidor RAS ou provedor Internet;· O endereço IP ou nome do servidor FTP;

· O nome do usuário e senha para logon no servidor FTP.

O primeiro passo é criar a variável global que irá armazenar o contexto de acessoà biblioteca, carregar a biblioteca e criar o contexto. Este é um procedimento básico quedeve ser executado em todas as suas aplicações que forem utilizar os recursos doSyncAnywhere. O local ideal para colocar este código é no Startup Code da aplicação:

Sub Project_Startup()

Global Context as Integer

' Carrega a biblioteca SyncAnywhere LoadLibrary "SyncAnywhere", "Sya"

' Obtém uma referência ao Contexto da biblioteca Context = Sya.SyncAnywhereCreateContext()

If Context=0 Then MsgBox "Não foi possível obter contexto da biblioteca SyncAnywhere!" End If

End Sub

É importante também que o contexto de acesso à biblioteca seja destruído antes

que a aplicação termine, para que a memória alocada para ele seja liberada. O melhorlocal para colocar este código é no Termination Code da aplicação:

Sub Project_Termination()

' Destrói o contexto de acesso à biblioteca do SyncAnywhere Sya.SyncAnywhereDestroyContext Context

End Sub

O código no botão Iniciar FTP executa comandos da biblioteca:

Sub object1028()

Dim TmpStr as String Dim Telefone as String

Dim Usuario as String Dim Senha as String Dim ServidorFTP as String Dim UsuarioFTP as String Dim SenhaFTP as String Dim Pulso as Short Dim Erro as Integer Dim BlockSize as Short

Dim DBPack as Database Dim Porta as Short Dim Timeout as Short

Page 53: Sync Anywhere

Cliente Palm 50

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

' Verifica se existe um Contexto de acesso à biblioteca If Context=0 Then Exit Sub End If

' Verifica se existe um modem conectado ao Palm ' ------------------------------------------------------------------------ ' Para conexão por Celulares ou Modem via Infravermelho, NÃO USE a ' função SyncAnywhereModemDetect, pois ela não será capaz de ' detectar a comunicação com o Celular. Esta função deve ser usada ' somente quando a conexão For feita através de Modem acoplado ao ' Palm, ou celular via cabo ' ------------------------------------------------------------------------

FldStatus.Text = "Detectando Modem..." Erro = Sya.SyncAnywhereModemDetect(Context) If Erro>0 Then FldStatus.Text = "Modem não detectado!" Exit Sub End If

' Configura o CreatorID para os PDBs compactados Erro = Sya.SyncAnywhereSetCreatorID(Context, "CBCT") If Erro>0 Then MsgBox "Erro de Configuração do CreatorID" Exit Sub End If

' Recupera as informações dos campos

Telefone = FldTelefone.Text Usuario = FldUsuario.Text Senha = FldSenha.Text ServidorFTP = FldServidor.Text UsuarioFTP = FldUsuarioFTP.Text SenhaFTP = FldSenhaFTP.Text

' Pulso/Tom

If ChkPulso.Status=nsbChecked Then Pulso = 1 Else Pulso = 0 End If

' Apaga o banco de dados compactado, se estiver no Palm Erro = DBOpen(DBPack, "PDBPack", 0)

If Erro=0 Then DBClose(DBPack) DBErase(DBPack) End If

' Compacta bancos de dados para envio ao Servidor ' Determina o tamanho do BlockSize ' ATENÇÃO: para chamadas à bibliotecas, o parâmetro to tipo

Page 54: Sync Anywhere

SyncAnywhere v1.2251

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

' número deve ser uma variável ou vai causar erro ' na execução da aplicação. Neste caso, o tipo da ' variável deve ser Short BlockSize = 5000

' Compacta o banco de Dados ' Parâmetros: ' Context: é o Contexto para a biblioteca, adquirido logo ' depois de abrir a biblioteca no Startup Code do projeto ' PDBPack: é o nome do banco de dados onde todos os outros bancos ' serão compactados ' ClientesDB e ProdutosDB: são os bancos que serão compactadosdentro

' de PDBPack ' BlockSize: é o tamanho máximo do registro compactado dentro dePDBPack. ' Este valor deve estar na faixa de 50 bytes a 30000 bytes e você ' pode fazer testes com valores intermediários na faixa de 5000, ' dependendo da qualidade de transmissão na sua região FldStatus.Text = "Compactando ClientesDB"

Erro = Sya.SyncAnywherePackDatabase(Context, "PDBPack", "ClientesDB",BlockSize) If Erro>0 Then MsgBox "Erro de Compactação de Dados de ClientesDB" Exit Sub End If

FldStatus.Text = "Compactando ProdutosDB"

Erro = Sya.SyncAnywherePackDatabase(Context, "PDBPack", "ProdutosDB",BlockSize) If Erro>0 Then MsgBox "Erro de Compactação de Dados de ProdutosDB" Exit Sub End If

' Abre a Net.Lib

FldStatus.Text = "Abrindo Net.Lib..." Erro = Sya.SyncAnywhereNetLibOpen(Context) If Erro>0 Then TmpStr = "Erro de abertura Net.Lib: " + Str(Erro) FldStatus.Text = TmpStr Exit Sub End If

' Configura as propriedades de discagem Sya.SyncAnywhereSetDialProperties Context, Telefone, Porta

' Conecta no servidor de comunicação FldStatus.Text = "Discando"

' ------------------------------------------------------------------------ ' Para conexão por Celulares ou Modem via Infravermelho, NÃO USE a

Page 55: Sync Anywhere

Cliente Palm 52

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

' função SyncAnywhereModemDial, pois ela não fará a discagem. Ao ' invés de usar esta // função, crie a conexão com o celular na ' aplicação Prefs Do Palm, opção Network e configure lá o telefone, o ' modo de conexão, usuário e senha, e utilize a função ' SyncAnywhereOpenService(NomeDaConexão) para efetuar

' a discagem. O nome no parâmetro deve ser exatamente igual ao ' nome Do serviço criado, respeitando-se as letras maiúsculas e ' minúsculas. ' Caso tenha alguma dúvida, consulte o manual Do SyncAnywhere. ' ------------------------------------------------------------------------ Erro = Sya.SyncAnywhereDial(Context, Usuario, Senha) If Erro>0 Then TmpStr = "Erro de Discagem: " + Str(Erro)

FldStatus.Text = TmpStr

' Fecha Net.Lib Erro = Sya.SyncAnywhereNetLibClose(Context)

Exit Sub End If

' Configura as propriedades de de acesso ao Servidor FTP Porta = 0 ' Porta default Timeout = 10 ' 10 segundos Sya.SyncAnywhereSetFTPProperties Context, Porta, Timeout

' Conecta no Servidor FTP FldStatus.Text = "Conectando no Servidor FTP..."

Erro = Sya.SyncAnywhereFTPOpen(Context, ServidorFTP, UsuarioFTP,SenhaFTP) If Erro>0 Then TmpStr = "Erro de Conexão: " + Str(Erro) FldStatus.Text = TmpStr

' Desconecta Do Servidor de comunicação Erro = Sya.SyncAnywhereHangup(Context)

' Fecha Net.Lib Erro = Sya.SyncAnywhereNetLibClose(Context)

Exit Sub End If

' Comando GET de uma aplicação

FldStatus.Text = "Recebendo Clientes.prc" Erro = Sya.SyncAnywhereFTPGet(Context, "Clientes.prc") If Erro>0 Then TmpStr = "Erro de recepção: " + Str(Erro) MsgBox TmpStr End If

' Comando PUT Do Banco compactado

Page 56: Sync Anywhere

SyncAnywhere v1.2253

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

FldStatus.Text = "Enviando PDBPack..." Erro = Sya.SyncAnywhereFTPPut(Context, "PDBPack") If Erro>0 Then TmpStr = "Erro de envio: " + Str(Erro) MsgBox TmpStr

Else ' Fecha Conexão FTP, somente se o envio foi ' concluído Erro = Sya.SyncAnywhereFTPClose(Context) End If

' Desconecta Do Servidor de comunicação Erro = Sya.SyncAnywhereHangup(Context)

' Fecha Net.Lib Erro = Sya.SyncAnywhereNetLibClose(Context)

FldStatus.Text = "Comunicação realizada com sucesso!"

End Sub

O código no botão Analisar PDBPack executa comandos da biblioteca:

Sub object1032()

Dim NumDBs as Integer Dim x as Short Dim Erro as Integer

Dim TmpStr as String Dim DBPack as Database

' Procura pelo banco PDBPack no Palm Erro = DBOpen(DBPack, "PDBPack", 0) If Erro>0 Then MsgBox "Banco PDBPack não foi encontrado, comande o Início do FTP oucarregue o banco de dados PDBPack.pdb do diretório TestDB no palm ou

Emulador" Exit Sub End If DBClose(DBPack)

' Verifica o número de bancos de dados Compactados em PDBPack NumDBs = Sya.SyncAnywhereGetDBCount(Context, "PDBPack") If NumDBs=0 Then

MsgBox "Erro ao recuperar número de bancos ou banco de dados não foigerado pelo SyncAnywhere versão 1.17 ou superior" Exit Sub End If

' Apresenta número de Bancos MsgBox "Número de bancos de dados em PDBPack: " + Str(NumDBs)

Page 57: Sync Anywhere

Cliente Palm 54

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

' Apresenta o nome dos Bancos em PDBPack For x=0 to NumDBs-1 TmpStr = RightPad(" ", 32) Erro = Sya.SyncAnywhereGetDBName(Context, "PDBPack", x, TmpStr) If Erro>0 Then

MsgBox "Erro ao recuperar nome do banco: " + Str(Erro) Exit Sub End If

' Apresenta o nome MsgBox "Banco armazenado em PDBPack: " + TmpStr Next

' Descompacta apenas um banco de dados de PDBPack Erro = Sya.SyncAnywhereUnpackOneDB(Context, "PDBPack", "ProdutosDB") If Erro>0 Then MsgBox "Erro ao descompactar banco ProdutosDB de PDBPack: " + Str(Erro) Exit Sub End If

' Teste efetuado com sucesso! MsgBox "Banco de dados ProdutosDB descompactado!"

End Sub

2.3.3 Funções do SyncAnywhere

2.3.3.1 SyncAnywhereCreateContext

Function SyncAnywhereCreateContext() As Integer

Comentário

Cria o contexto de acesso à biblioteca. O retorno desta função deve ser usado emtodas as funções da biblioteca, portanto deve ser salvo em uma variável global.

Parâmetros

Nenhum

Retorno

O contexto de acesso à biblioteca do SyncAnywhere.

2.3.3.2 SyncAnywhereDestroyContext

Sub SyncAnywhereDestroyContext(ClientContext As Integer)

Comentário

Page 58: Sync Anywhere

SyncAnywhere v1.2255

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Destrói o contexto de acesso à biblioteca. Deve ser chamado antes da aplicaçãoterminar para liberar a memória alocada para o contexto.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

2.3.3.3 SyncAnywhereGetVersion

Function SyncAnywhereGetVersion() As Integer

Comentários

Recupera a versão da biblioteca. A versão é retornada como um número inteiro,onde a centena representa a versão e a dezena, a correção da versão, exemplo: a versão113 representa a versão 1 da biblioteca, com a correção 13.

Parâmetros

Nenhum

Retorno

Inteiro representando a versão da biblioteca.

2.3.3.4 SyncAnywhereCheckSumOn

Sub SyncAnywhereCheckSumOn(Context As Integer)

Comentários

Habilita a gravação de bytes de verificação de integridade nos registros do bancode dados compactado, para auxiliar na garantia da integridade dos dados transmitidos.Por default, a gravação dos bytes de verificação está desabilitada . O número de bytesde verificação de integridade gravados por registro é 10.

Parâmetros

ClientContext: Contexto de acesso à biblioteca

2.3.3.5 SyncAnywhereCheckSumOff

Sub SyncAnywhereCheckSumOff(Context As Integer)

Comentários

Desabilita a gravação de bytes de verificação de integridade nos registros dobanco de dados compactado (default).

Page 59: Sync Anywhere

Cliente Palm 56

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Parâmetros

ClientContext: Contexto de acesso à biblioteca

2.3.3.6 SyncAnywhereUIDSupportOn

Sub SyncAnywhereUIDSupportOn(Context As Integer)

Comentários

Habilita a gravação do UniqueID de cada registro do banco de dados. O UniqueIDé uma informação não utilizada pela maioria das ferramentas, mas se por algum motivosua aplicação usa esta informação, você precisa habilitar o uso com esta função. Por

default, a gravação do UniqueID está desabilitada para economizar espaço no banco dedados compactado gerado.

Atenção:

- O uso desta função torna o SyncAnywhereincompatível com bancos de dados compactados sem o uso destafunção. Para que o SyncAnywhere seja compatível com bancos dedados compactados sem o UniqueID, é necessário utilizar a funçãoSyncAnywhereUIDSupportOff.

- É necessário também habilitar a gravação do UniqueIDna sua aplicação que compacta e descompacta dados no servidor.

- Quando quiser habilitar o suporte ao UniqueID, utilizeesta função logo após abrir a biblioteca pois ela é necessária paracompactar e descompactar bancos de dados com UniqueID.

Parâmetros

ClientContext: Contexto de acesso à biblioteca

2.3.3.7 SyncAnywhereUIDSupportOff

Sub SyncAnywhereUIDSupportOff(Context As Integer)

Comentários

Desabilita a gravação do UniqueID de cada registro do banco de dados. OUniqueID é uma informação não utilizada pela maioria das ferramentas, mas se poralgum motivo sua aplicação usa esta informação, você precisa habilitar o uso com afunção SyncAnywhereUIDSupportOn . Por default, a gravação do UniqueID estádesabilitada para economizar espaço no banco de dados compactado gerado.

Atenção: o uso do UniqueID torna o SyncAnywhere

Page 60: Sync Anywhere

SyncAnywhere v1.2257

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

incompatível com bancos de dados compactados sem o uso dafunção SyncAnywhereUIDSupportOn.

Parâmetros

ClientContext: Contexto de acesso à biblioteca

2.3.3.8 SyncAnywhereSetPackDataBlock

Sub SyncAnywhereSetPackDataBlock(ClientContext As Integer, MaxDataBlockAs Integer)

Comentários

Esta função é de extrema importância se o arquivo tiver que ser descompactado

em equipamentos com pouca memória como o Zire, M100, M105 ou qualquer outro quetenha 2MB de memória ou menos. Esses equipamentos tem muito pouca memóriadinâmica para alocação, assim, a quantidade de memória disponível depende dotamanho da aplicação. O tamanho máximo do bloco compactado de dados deve serconfigurado segundo sua necessidade em equipamentos com pouca memória e nestecaso um valor de 500 bytes é geralmente adequado à aplicações grandes.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

MaxDataBlock: Tamanho máximo (em bytes) do bloco de dados que serácompactado. O default é 30000 bytes, mas para equipamentos com pouca memória estevalor deve ser muito mais baixo, em torno de 500 bytes quando a aplicação executada égrande ou até 5000 bytes se a aplicação for pequena.

2.3.3.9 SyncAnywhereSetCreatorID

Function SyncAnywhereSetCreatorID(Context As Integer, CreatorID As String)As Integer

Comentários

Configura o CreatorID que será usado para os arquivos compactados.

Parâmetros

Context: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

CreatorID: O CreatorID, com exatamente quatro caracteres.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 61: Sync Anywhere

Cliente Palm 58

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.3.3.10 SyncAnywherePackDatabase

Function SyncAnywherePackDatabase(ClientContext As Integer, DBDest AsString, DBSource As String, MaxBlockSize As Short) As Integer

Comentários

Compacta o banco de dados informado em DBSource, no banco de dadosinformado em DBDest.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

DBDest: Nome do banco de dados destino, onde será compactado o banco dedados de origem. Atenção: O banco de dados destino deve ser apagado antes dechamar esta função pela primeira vez. As chamadas sucessivas à esta função

adicionam bancos de dados compactados à DBDest, portanto na primeira vez que usaresta função, certifique-se que ele não exista, para que a compactação inicie em umbanco de dados novo.

DBSource: Banco de dados origem, que será compactado dentro de DBDest.MaxBlockSize: Tamanho máximo do registro que será gerado no banco de dados

DBDest. Este valor normalmente deve ser em torno de 5000, que representa 5000 bytesem cada registro e pode ser configurado em função da qualidade de transmissão da linha

telefônica ou celular. Há locais onde é melhor que este valor seja menor, em torno de1000, para minimizar erros na transmissão. O tamanho mínimo é 50 bytes e o máximo30000. Atenção: No NSBasic, este parâmetro deve ser passado através de umavariável do tipo Short. Atribua o tamanho do bloco à esta variável e passe-a noparâmetro.

Observação importante: para os modelos M100, Zire e outros que temmemória igual ou inferior a 2MB, este parâmetro não poderá ser maior que

2500 bytes, ou retornará o erro appErrInvalidBlockSize. Estes modelos temmemória "Heap" (memória dinâmica liberada pelo PalmOS) extremamentelimitada e as alocações de memória internas necessárias para compactaçãopodem falhar se o valor for maior que 2500 bytes. Se o Banco de Dados tiverque ser descompactado em equipamentos deste tipo, não se esqueça deconfigurar o tamanho do bloco de compactação com as funçõesSyncAnywhereSetPackDataBlock no Palm e PackSetMaxDataBlock no Servidor.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.11 SyncAnywhereGetDBCount

Function SyncAnywhereGetDBCount(ClientContext As Integer, DBSource AsString) As Integer

Page 62: Sync Anywhere

SyncAnywhere v1.2259

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Comentários

Recupera o número de bancos de dados compactados dentro do bancoespecificado no parâmetro DBSource, na variável informada no parâmetro DBCount. Onúmero de bancos de dados compactados só pode ser recuperado dos PDBs

gerados pelo SyncAnywhere a partir da versão 1.17.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.

Retorno

ZERO indica que houve um erro na recuperação do número de bancos de dadoscompactados ou que o banco de dados não foi gerado com o SyncAnywhere versão 1.17ou superior. Maior que ZERO indica o número de bancos compactados dentro do bancoinformado.

2.3.3.12 SyncAnywhereGetDBName

Function SyncAnywhereGetDBName(ClientContext As Integer, DBSource AsString, Indx as Short, DBName As String) As Integer

Comentários

Recupera o nome de bancos de dados compactado dentro do banco especificadono parâmetro DBSource, na variável informada no parâmetro DBName , de acordo com

o índice do banco informado no parâmetro Indx. O nome dos bancos de dadoscompactados só podem ser recuperados dos PDBs gerados pelo SyncAnywherea partir da versão 1.17.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.Indx: O índice do banco de dados. O primeiro banco de dados compactado tem

índice ZERO. Para saber o número de bancos de dados compactados, utilize a funçãoSyncAnywhereGetDBCount .

DBName: O nome do banco de dados compactado é retornado neste parâmetro.Atenção: Este parâmetro DEVE SER uma variável String previamente preenchidacom no mínimo 32 espaços. Se você não preparar a variável com os 32 espaços,

poderá causar um erro na sua aplicação e Reset no Palm.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 63: Sync Anywhere

Cliente Palm 60

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.3.3.13 SyncAnywhereCheckDatabase

Function SyncAnywhereCheckDatabase(ClientContext As Integer, DBSource AsString) As Integer

Comentários

Verifica a estrutura de um banco compactado gerado pelo SyncAnywhere. Afunção verifica a integridade do número de registros no banco e CheckSum (sehabilitado).

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.

Retorno

ZERO indica que o PDB está íntegro na sua estrutura.

UM indica que o PDB está íntegro na sua estrutura, mas o CheckSum estádesabilitado, portanto ainda pode haver erro nos registros transferidos.

> UM é o código de erro da verificação do PDB.

2.3.3.14 SyncAnywhereUnpackDatabase

Function SyncAnywhereUnpackDatabase(ClientContext As Integer, DBSource AsString) As Integer

Comentários

Descompacta os bancos de dados para a memória do Palm. Atenção: Você deve

apagar os bancos de dados que serão descompactados antes que eles sejamdescompactados por esta função ou os registros serão adicionados aosregistros dos bancos de dados se já existirem.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 64: Sync Anywhere

SyncAnywhere v1.2261

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.3.3.15 SyncAnywhereUnpackOneDB

Function SyncAnywhereUnpackOneDB(ClientContext As Integer, DBSource AsString, DBName As String) As Integer

Comentários

Descompacta um único banco de dados para a memória do Palm. Atenção: Vocêdeve apagar o banco de dados que será descompactado antes que eles sejadescompactado por esta função ou os registros serão adicionados aos registros

do banco de dados.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.DBName: O nome do banco de dados que será extraído do banco compactado.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.16 SyncAnywhereUnpackApplication

Function SyncAnywhereUnpackApplication(ClientContext As Integer, DBSourceAs String) As Integer

Comentários

Descompacta a aplicação compactada em um Banco de Dados Palm (PDB) para amemória do Palm. Atenção: Você deve apagar a aplicação que serádescompactada antes que ela seja descompactada por esta função ou será

retornado um código de erro.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

DBSource: O nome do banco de dados que contém a aplicação compactada como SyncAnywhere.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 65: Sync Anywhere

Cliente Palm 62

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.3.3.17 SyncAnywhereNetLibOpen

Function SyncAnywhereNetLibOpen(ClientContext As Integer) As Integer

Comentários

Abre a biblioteca de comunicação do Palm. Esta função deve ser chamada antesde qualquer outra função de comunicação.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.18 SyncAnywhereNetLibClose

Function SyncAnywhereNetLibClose(ClientContext As Integer) As Integer

Comentários

Fecha a biblioteca de comunicação do Palm. Esta função deve ser chamada

quando a comunicação não for mais necessária, geralmente a última função a serchamada no processo de comunicação.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.19 SyncAnywhereModemDetect

Function SyncAnywhereModemDetect(ClientContext As Integer) As Integer

Comentários

Detecta se um Modem ou Celular (via cabo serial) está conectado ao Palm.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada à

Page 66: Sync Anywhere

SyncAnywhere v1.2263

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

SyncAnywhereCreateContext .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

2.3.3.20 SyncAnywhereSetDialProperties

Sub SyncAnywhereSetDialProperties(ClientContext As Integer, Phone As String,Pulse As Short)

Comentários

Configura os parâmetros de discagem para o servidor de comunicação(RAS/Internet).

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Phone: Número do telefone para discagemPulse: 1 para discagem por Pulso ou ZERO para discagem por Tom. Atenção: No

NSBasic, este parâmetro deve ser passado através de uma variável do tipoShort. Atribua a configuração Pulso/Tom à esta variável e passe-a noparâmetro.

2.3.3.21 SyncAnywhereDial

Function SyncAnywhereDial(ClientContext As Integer, Username As String,

Password As String) As String

Comentários

Disca para um servidor de comunicação usando o modem acoplado ao Palm(PalmModem ou Celular via cabo serial).

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Username: Nome do usuário para validação no servidor de comunicação(RAS/Internet).

Password: Senha de acesso do usuário.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 67: Sync Anywhere

Cliente Palm 64

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.3.3.22 SyncAnywhereOpenActiveService

Function SyncAnywhereOpenActiveService(ClientContext As Integer) AsInteger

Comentários

Inicia o serviço selecionado no Prefs/Network. Esta função é útil quando você játem o serviço configurado ou quando o serviço requer configurações especiais comocomunicação IR (Celular IR), Bluetooth, WiFi, ou necessita configurar scripts.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.23 SyncAnywhereOpenService

Function SyncAnywhereOpenService(ClientContext As Integer, ServiceName AsString) As Integer

Comentários

Inicia um serviço já configurado no Prefs/Network. Esta função é útil quando vocêjá tem o serviço configurado ou quando o serviço requer configurações especiais comocomunicação IR (Celular IR), Bluetooth, WiFi, ou necessita configurar scripts.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

ServiceName: Nome do Serviço criado no Prefs/Network.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.24 SyncAnywhereHangup

Function SyncAnywhereHangup(ClientContext As Integer) As Integer

Comentários

Page 68: Sync Anywhere

SyncAnywhere v1.2265

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Desconecta do servidor de comunicação, conectado pela funçãoSyncAnywhereDial ou pela função SyncAnywhereOpenService .

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.25 SyncAnywhereSetFTPProperties

Sub SyncAnywhereSetFTPProperties(ClientContext As Integer, Port As Short,Timeout As Short)

Comentários

Configura os parâmetros de conexão ao servidor FTP.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Port: Porta para conexão no Servidor FTP. Se a porta for padrão, passe ZEROneste parâmetro. Atenção: No NSBasic, este parâmetro deve ser passado atravésde uma variável do tipo Short. Atribua a configuração da Porta à esta variável e

passe-a no parâmetro.Timeout: Tempo (em segundos) para que as funções de comunicação utilizem

como tempo limite de conexão. O default é 10 segundos. Há servidores que necessitamde um tempo maior devido à sua lentidão ou quantidade maior de usuários conectados.Atenção: No NSBasic, este parâmetro deve ser passado através de uma variáveldo tipo Short. Atribua a configuração do Timeout à esta variável e passe-a noparâmetro.

2.3.3.26 SyncAnywhereFTPPassiveModeOn

Sub SyncAnywhereFTPPassiveModeOn(ClientContext As Integer)

Comentários

Configura o modo "PASV" (FTP PASSIVO) na conexão FTP (default noSyncAnywhere).

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Page 69: Sync Anywhere

Cliente Palm 66

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.3.3.27 SyncAnywhereFTPPassiveModeOff

Sub SyncAnywhereFTPPassiveModeOff(ClientContext As Integer)

Comentários

Configura o modo não passivo (FTP ATIVO) na conexão FTP.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

2.3.3.28 SyncAnywhereSetTCPDelay

Sub SyncAnywhereSetTCPDelay(ClientContext As Integer, Delay As Integer)

Comentários

Configura um tempo de espera entre os envios e recebimentos de blocos de dadosde/para o Servidor FTP. Esta função é importante quando as conexões são notoriamentelentas, sensíveis e suscetíveis à quedas como conexões via celular e principalmente porinfravermelho.

Como regra, quanto maior o tamanho do bloco utilizado para compactar o bancode dados através da função SyncAnywherePackDatabase, maior deve ser o tempo de

espera passado nesta função em conexões lentas, principalmente infravermelho. Comoparâmetro, em testes realizados em conexões IR com média qualidade, blocos de 500bytes compactados podem ser utilizados com o parâmetro Delay nesta funçãoconfigurado para 3 (300ms). Em conexões com pior qualidade, o tempo deve seraumentado e o tamanho do bloco diminuído.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Delay: Número de "décimos de segundo" para a espera. DEZ décimos desegundo equivalem a UM segundo de atraso, portanto, para atrasar TRÊS décimos desegundo (300 ms) use SyncAnywhereSetTCPDelay(Context, 3).

2.3.3.29 SyncAnywhereFTPOpen

Function SyncAnywhereFTPOpen(ClientContext As Integer, Hostname As String,Username As String, Password As String) As Integer

Comentários

Conecta-se a um servidor FTP. A conexão com um servidor de comunicação(RAS/Internet) já deve ter sido iniciada pela função SyncAnywhereDial ou por outromeio.

Page 70: Sync Anywhere

SyncAnywhere v1.2267

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

HostName: O nome ou endereço IP do servidor FTP.

Username: O nome do usuário para logon no servidor FTP.Password: A senha de acesso do usuário.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.30 SyncAnywhereFTPClose

Function SyncAnywhereFTPClose(ClientContext As Integer) As Integer

Comentários

Fecha a conexão com o servidor FTP. A conexão deve ter sido aberta pela funçãoSyncAnywhereFTPOpen .

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.31 SyncAnywhereFTPCd

Function SyncAnywhereFTPCd(ClientContext As Integer, Path As String) AsInteger

Comentários

Muda o diretório no servidor FTP.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Path: Caminho para o diretório no servidor FTP

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 71: Sync Anywhere

Cliente Palm 68

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.3.3.32 SyncAnywhereFTPMkd

Function SyncAnywhereFTPMkd(ClientContext As Integer, Name As String) AsInteger

Comentários

Cria o diretório no servidor FTP.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Name: Nome do diretório a ser criado no servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

2.3.3.33 SyncAnywhereFTPRmd

Function SyncAnywhereFTPRmd(ClientContext As Integer, Name As String) AsInteger

Comentários

Remove o diretório do servidor FTP.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Name: Nome do diretório a ser removido no servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.34 SyncAnywhereFTPDel

Function SyncAnywhereFTPDel(ClientContext As Integer, Name As String) AsInteger

Comentários

Remove o arquivo do servidor FTP.

Parâmetros

Page 72: Sync Anywhere

SyncAnywhere v1.2269

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Name: Nome do arquivo a ser removido no servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.35 SyncAnywhereFTPPut

Function SyncAnywhereFTPPut(ClientContext As Integer, DBName As String) AsInteger

Comentários

Envia um banco de dados ou aplicação do Palm para o servidor FTP.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada à

SyncAnywhereCreateContext .DBName: Nome do banco de dados ou aplicação para ser enviada ao servidor. O

nome não deve conter extensão pois ela será colocada automaticamente (.PDB/.PRC)dependendo do que estiver sendo enviado. Atenção: o nome do banco de dados écase-sensitive.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.36 SyncAnywhereFTPGet

Function SyncAnywhereFTPGet(ClientContext As Integer, Name As String) AsInteger

Comentários

Recebe um banco de dados ou aplicação do servidor FTP.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Name: Nome do banco de dados ou aplicação para ser recebida do servidor. Onome deve conter a extensão (.PDB/.PRC) dependendo do que estiver sendo recuperado.Atenção: alguns servidores FTP exigem que os nomes de arquivo sejamexatamente como estão armazenados (case-sensitive) .

Retorno

Page 73: Sync Anywhere

Cliente Palm 70

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.37 SyncAnywhereFTPRename

Function SyncAnywhereFTPRename(Context As Integer, OldName As String,NewName As String) As Integer

Comentários

Renomeia um banco de dados ou aplicação no servidor FTP.

Parâmetros

ClientContext: Contexto de acesso à bibliotecaOldName: Nome do banco de dados ou aplicação para ser renomeada no

servidor. O nome deve conter a extensão (.PDB/.PRC) dependendo do que estiver sendorenomeado. Atenção: alguns servidores FTP exigem que os nomes de arquivosejam exatamente como estão armazenados (case-sensitive).

NewName: Novo nome do arquivo no servidor.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.38 SyncAnywhereFTPGetLastResponse

Sub SyncAnywhereFTPGetLastResponse(ClientContext As Integer, Response AsString)

Comentários

Obtém o texto da última resposta do servidor FTP.

Parâmetros

ClientContext: Contexto de acesso à biblioteca, adquirido pela chamada àSyncAnywhereCreateContext .

Response: Última mensagem de resposta do servidor FTP. Este texto érecuperado diretamente o servidor FTP, portanto a mensagem é do próprio servidor.Atenção: Este parâmetro DEVE SER uma variável String previamente preenchidacom 255 espaços. Se você não preparar a variável com os 255 espaços, poderácausar um erro na sua aplicação e Reset no Palm.

2.3.3.39 SyncAnywhereFTPSetServerType

Function SyncAnywhereFTPSetServerType(ClientContext As Integer,ServerType As Short) As Integer

Page 74: Sync Anywhere

SyncAnywhere v1.2271

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Comentários

Configura o tipo de listagem de diretório (comando DIR) retornada pelo servidorFTP. O parâmetro ServerType pode ser configurado como ZERO para retorno padrãoUnix/Linux e UM para retorno padrão Windows 2000.

Parâmetros

ClientContext: Contexto de acesso à bibliotecaServerType: ZERO para retorno padrão Unix/Linux e UM para

retorno padrão Windows 2000.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.3.3.40 SyncAnywhereFTPDir

Function SyncAnywhereFTPDir(Context As Integer) As Integer

Comentários

Obtém a listagem dos arquivos do diretório corrente no Servidor FTP. Estaoperação não apresenta os arquivos no formulário, obtém a lista para uso posterior pelasfunções SyncAnywhereFTPGetFileCount, SyncAnywhereFTPGetFileName,SyncAnywhereFTPFileExists e SyncAnywhereFTPDirectoryExists.

SyncAnywhereFTPDir não é chamada automaticamente ao se conectar ao Servidor

FTP e na mudança de diretório no Servidor para otimizar a transmissão. Fica a critério dodesenvolvedor obter ou não a lista de arquivos, através da utilização ou não destafunção.

Parâmetros

ClientContext: Contexto de acesso à biblioteca

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

' Obtém a listagem dos arquivos Do diretório

' corrente no Servidor Erro = Sya.SyncAnywhereFTPDir(Context) If Erro>0 Then ' Erro no comando SyncAnywhereFTPDIR Exit Sub End If

Page 75: Sync Anywhere

Cliente Palm 72

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

' Recupera o número de arquivos no diretório ' corrente no Servidor FileCount = Sya.SyncAnywhereFTPGetFileCount(Context)

' Mostra o número de arquivos

MsgBox "Número de Arquivos no Servidor: " + Str(FileCount)

' Mostra os nomes dos arquivos For x=0 to FileCount-1 Nome = " " Erro = Sya.SyncAnywhereFTPGetFileName(Context, x, Nome)

If Erro=0 Then

MsgBox Nome End If Next

' Verifica se o arquivo existe no Servidor Exists = Sya.SyncAnywhereFTPFileExists(Context, "Test.pdb")

' Indica se o arquivo existe If Exists>0 Then MsgBox "Arquivo existe no Servidor!" Else MsgBox "Arquivo não existe no Servidor!" End If

' Verifica se o diretório existe no Servidor

Exists = Sya.SyncAnywhereFTPDirectoryExists(Context, "dados")

' Indica se o diretório existe If Exists>0 Then MsgBox "Diretório existe no Servidor!" Else MsgBox "Diretório não existe no Servidor!" End If

2.3.3.41 SyncAnywhereFTPGetFileCount

Function SyncAnywhereFTPGetFileCount(Context As Integer) As Integer

Comentários

Recupera o número de arquivos no diretório corrente do Servidor FTP. Atenção:esta função só funciona se o comando SyncAnywhereFTPDir for chamado antes para

recuperar a lista de arquivos do Servidor FTP.

Parâmetros

ClientContext: Contexto de acesso à biblioteca

Page 76: Sync Anywhere

SyncAnywhere v1.2273

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Retorno

Número de arquivos no diretório corrente do Servidor FTP.

Exemplo de utilização

Consulte a função SyncAnywhereFTPDir para exemplo de utilização desta função.

2.3.3.42 SyncAnywhereFTPFileExists

Function SyncAnywhereFTPFileExists(Context As Integer, FileName As String)As Integer

Comentários

Verifica se o arquivo existe no diretório corrente do Servidor FTP. Atenção: estafunção só funciona se o comando SyncAnywhereFTPDir for chamado antes pararecuperar a lista de arquivos do Servidor FTP.

Parâmetros

ClientContext: Contexto de acesso à bibliotecaFileName: Nome do arquivo.

Retorno

ZERO indica que o arquivo não existe no diretório corrente do Servidor; UM indicaque o arquivo existe.

Exemplo de utilização

Consulte a função SyncAnywhereFTPDir para exemplo de utilização desta função.

2.3.3.43 SyncAnywhereFTPDirectoryExists

Function SyncAnywhereFTPDirectoryExists(Context As Integer, DirectoryNameAs String) As Integer

Comentários

Verifica se o diretório existe no diretório corrente do Servidor FTP. Atenção: estafunção só funciona se o comando SyncAnywhereFTPDir for chamado antes pararecuperar a lista de arquivos do Servidor FTP.

Parâmetros

ClientContext: Contexto de acesso à bibliotecaDirName: Nome do diretório.

Retorno

Page 77: Sync Anywhere

Cliente Palm 74

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

ZERO indica que o diretório não existe no diretório corrente do Servidor; UMindica que o diretório existe.

Exemplo de utilização

Consulte a função SyncAnywhereFTPDir para exemplo de utilização desta função.

2.3.3.44 SyncAnywhereFTPGetFileName

Function SyncAnywhereFTPGetFileName(Context As Integer, FileIndex AsShort, FileName As String) As Integer

Comentários

Recupera o nome do arquivo no diretório do Servidor FTP segundo o índiceespecificado. Atenção: esta função só funciona se o comando SyncAnywhereFTPDir forchamado antes para recuperar a lista de arquivos do Servidor FTP.

Parâmetros

ClientContext: Contexto de acesso à biblioteca

FileIndex: Variável do tipo Short para indicar o índice do arquivo na lista. Oprimeiro índice é ZERO.

FileName: O nome do arquivo será retornado neste parâmetro. Atenção: Esteparâmetro DEVE SER uma variável String previamente preenchida com nomínimo 100 espaços. Se você não preparar a variável com os 100 espaços,poderá causar um erro na sua aplicação e Reset no Palm.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

Consulte a função SyncAnywhereFTPDir para exemplo de utilização desta função.

2.4 CodeWarrior

2.4.1 Instalação

No diretório do SyncAnywhere\CW\Lib , há um arquivo header chamadoSyncAnywhere.h, este é o ponto de acesso à SharedLib do SyncAnywhere. Para poderutiliza-lo em suas aplicações, coloque o diretório onde está este arquivo header noAccess Paths do seu projeto CodeWarrior, assim será possível utilizar a cláusula#include no arquivo header.

Page 78: Sync Anywhere

SyncAnywhere v1.2275

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.4.2 Utilização

A aplicação exemplo FTPTest sob o diretório CW mostra como utilizar as funçõesda biblioteca para compactar dados e também para acessar um servidor FTP. Noformulário da aplicação, serão solicitados todos os dados para que seja possível aconexão com o servidor FTP:

· O número de telefone para discagem ao servidor de comunicação, seja um RASou provedor Internet;

· Tipo de discagem, pulso ou tom;· Nome de usuário e senha de acesso ao servidor RAS ou provedor Internet;· O endereço IP ou nome do servidor FTP;

· O nome do usuário e senha para logon no servidor FTP.

Inicialmente, é necessário criar variáveis globais para armazenar a referência àSharedLib e também o contexto de acesso à ela:

UInt16 refNum; // Acesso à SharedLib do SyncAnywhereUInt32 context; // Contexto de acesso ao SyncAnywhere

Nas funções AppStart e AppStop é necessário colocar código para carregar epara descarregar a biblioteca. Se a biblioteca não for carregada, as funções não podemser utilizadas ou causará erro na sua execução.

static Err AppStart(void){

// Abre a SharedLib do SyncAnywhere if (!SyncAnywhereOpenRef(&refNum, &context)) { FrmCustomAlert(AlertErro, "Erro ao abrir SyncAnywhereSharedLib!", NULL, NULL); return false; }

return errNone;}

static void AppStop(void){ // Fecha a SharedLib do SyncAnywhere SyncAnywhereCloseRef(refNum, context);

/* Close all the open forms. */FrmCloseAllForms();

}

O código no botão Iniciar FTP chama a função TestSyncAnywhere que executacomandos da biblioteca:

static void TestSyncAnywhere()

{

Page 79: Sync Anywhere

Cliente Palm 76

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

char Str[50], Str2[50], Telefone[50], Usuario[50], Senha[50], ServidorFTP[50],UsuarioFTP[50], SenhaFTP[50]; UInt16 Pulso; UInt16 Erro; LocalID dbID;

// Verifica se existe um modem conectado ao Palm // ------------------------------------------------------------------------ // Para conexão por Celulares ou Modem via Infravermelho, NÃO USE a

// função SyncAnywhereModemDetect, pois ela não será capaz de// detectar a comunicação com o Celular. Esta função deve ser usada// somente quando a conexão for feita através de Modem acoplado ao// Palm, ou celular via cabo

// ------------------------------------------------------------------------ SetFieldText(FldStatus, "Detectando Modem..."); Erro = SyncAnywhereModemDetect(refNum, context); if (Erro) { SetFieldText(FldStatus, "Modem não detectado!"); return;

}

// Configura o CreatorID para criar os arquivos PDB da aplicação Erro = SyncAnywhereSetCreatorID(refNum, context, "CBCT"); if (Erro) {

StrCopy(Str, "Erro configurando CreatorID: "); StrIToA(Str2, Erro);

StrCat(Str, Str2); SetFieldText(FldStatus, Str); return;

}

// Recupera as informações dos campos StrCopy(Telefone, GetFieldText(FldTelefone)); StrCopy(Usuario, GetFieldText(FldUsuario));

StrCopy(Senha, GetFieldText(FldSenha)); StrCopy(ServidorFTP, GetFieldText(FldServidor)); StrCopy(UsuarioFTP, GetFieldText(FldUsuarioFTP)); StrCopy(SenhaFTP, GetFieldText(FldSenhaFTP));

if (CtlGetValue(GetObjectPtr(ChkPulso))) Pulso = 1; else

Pulso = 0;

// Apaga o banco PDBPack, necessário para que os bancos não sejam // adicionados aos já existentes dbID = DmFindDatabase(0, "PDBPack"); if (dbID) DmDeleteDatabase(0, dbID);

Page 80: Sync Anywhere

SyncAnywhere v1.2277

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

// Compacta bancos de dados para envio ao Servidor SetFieldText(FldStatus, "Compactando ProdutosDB"); Erro = SyncAnywherePackDatabase(refNum, context, "PDBPack", "ProdutosDB",5000); if (Erro)

{ StrCopy(Str, "Erro em ProdutosDB: ");

StrIToA(Str2, Erro); StrCat(Str, Str2); SetFieldText(FldStatus, Str); return;

}

SetFieldText(FldStatus, "Compactando ClientesDB"); Erro = SyncAnywherePackDatabase(refNum, context, "PDBPack", "ClientesDB",5000); if (Erro) {

StrCopy(Str, "Erro em ClientesDB: "); StrIToA(Str2, Erro);

StrCat(Str, Str2); SetFieldText(FldStatus, Str);

return; }

// Abre a Net.Lib SetFieldText(FldStatus, "Abrindo Net.Lib..."); Erro = SyncAnywhereNetLibOpen(refNum, context);

if (Erro) {

StrCopy(Str, "Erro de abertura Net.Lib: "); StrIToA(Str2, Erro); StrCat(Str, Str2);

SetFieldText(FldStatus, Str); return;

}

// Conecta no servidor de comunicação SetFieldText(FldStatus, "Discando");

// ------------------------------------------------------------------------ // Para conexão por Celulares ou Modem via Infravermelho, NÃO USE a

// função SyncAnywhereModemDial, pois ela não fará a discagem. Ao// invés de usar esta // função, crie a conexão com o celular na

// aplicação Prefs do Palm, opção Network e configure lá o telefone, o// modo de conexão, usuário e senha, e utilize a função// SyncAnywhereOpenService(NomeDaConexão) para efetuar

// a discagem. O nome no parâmetro deve ser exatamente igual ao// nome do serviço criado, respeitando-se as letras maiúsculas e// minúsculas.

// Caso tenha alguma dúvida, consulte o manual do SyncAnywhere. // ------------------------------------------------------------------------

Page 81: Sync Anywhere

Cliente Palm 78

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Erro = SyncAnywhereDial(refNum, context, Telefone, Pulso, Usuario, Senha); if (Erro) {

StrCopy(Str, "Erro de Discagem: "); StrIToA(Str2, Erro);

StrCat(Str, Str2); SetFieldText(FldStatus, Str);

// Fecha a biblioteca de comunicação SyncAnywhereNetLibClose(refNum, context);

return; }

// Conecta no Servidor FTP SetFieldText(FldStatus, "Conectando no Servidor FTP...");

Erro = SyncAnywhereFTPOpen(refNum, context, ServidorFTP, 0, UsuarioFTP,SenhaFTP, 10); if (Erro) {

StrCopy(Str, "Erro de Conexão: "); StrIToA(Str2, Erro);

StrCat(Str, Str2); SetFieldText(FldStatus, Str);

// Desconecta do Servidor de comunicação SyncAnywhereHangup(refNum, context);

// Fecha Net.Lib SyncAnywhereNetLibClose(refNum, context);

return; }

// Comando GET de uma aplicação SetFieldText(FldStatus, "Recebendo Clientes.prc");

Erro = SyncAnywhereFTPGet(refNum, context, "Clientes.prc"); if (Erro) {

StrCopy(Str, "Erro de recepção: "); StrIToA(Str2, Erro); StrCat(Str, Str2);

FrmCustomAlert(AlertErro, Str, NULL, NULL); }

// Comando PUT do Banco compactado SetFieldText(FldStatus, "Enviando PDBPack..."); Erro = SyncAnywhereFTPPut(refNum, context, "PDBPack"); if (Erro) {

StrCopy(Str, "Erro de envio: "); StrIToA(Str2, Erro);

Page 82: Sync Anywhere

SyncAnywhere v1.2279

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

StrCat(Str, Str2); FrmCustomAlert(AlertErro, Str, NULL, NULL);

} else {

// Fecha Conexão FTP, se o envio teve sucesso Erro = SyncAnywhereFTPClose(refNum, context);

}

// Desconecta do Servidor de comunicação SyncAnywhereHangup(refNum, context);

// Fecha Net.Lib

SyncAnywhereNetLibClose(refNum, context);

SetFieldText(FldStatus, "Comunicação realizada com sucesso!");}

Já o botão Analisar PDBPack, chama a função AnalisaPDBPack para mostraros bancos de dados compactados em PDBPack:

static void AnalisaPDBPack(){ LocalID dbID; UInt16 numDBs, erro, x; char str[60], str2[60];

// Procura pelo banco PDBPack no Palm

dbID = DmFindDatabase(0, "PDBPack"); if (!dbID) { FrmCustomAlert(AlertErro, "Banco PDBPack não foi encontrado, comande oInício do FTP ou carregue o banco de dados PDBPack.pdb do diretório TestDB no palm ouEmulador", NULL, NULL); return; }

// Verifica o número de bancos de dados Compactados em PDBPack erro = SyncAnywhereGetDBCount(refNum, context, "PDBPack", &numDBs); if (erro) { StrCopy(str, "Erro ao recuperar número de bancos: "); StrIToA(str2, erro); StrCat(str, str2);

FrmCustomAlert(AlertErro, str, NULL, NULL); return; }

// Apresenta número de Bancos StrIToA(str2, numDBs); StrCopy(str, "Número de bancos de dados em PDBPack: "); StrCat(str, str2);

Page 83: Sync Anywhere

Cliente Palm 80

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

FrmCustomAlert(AlertErro, str, NULL, NULL);

// Apresenta o nome dos Bancos em PDBPack for (x=0; x<numDBs; x++) {

erro = SyncAnywhereGetDBName(refNum, context, "PDBPack", x, (char *)&str2); if (erro) { StrCopy(str, "Erro ao recuperar nome do banco: "); StrIToA(str2, erro); StrCat(str, str2);

FrmCustomAlert(AlertErro, str, NULL, NULL);

return; }

// Apresenta o nome StrCopy(str, "Banco armazenado em PDBPack: "); StrCat(str, str2); FrmCustomAlert(AlertErro, str, NULL, NULL);

}

// Descompacta apenas um banco de dados de PDBPack erro = SyncAnywhereUnpackOneDB(refNum, context, "PDBPack", "ProdutosDB"); if (erro) {

StrCopy(str, "Erro ao recuperar descompactar banco ProdutosDB dePDBPack: ");

StrIToA(str2, erro); StrCat(str, str2); FrmCustomAlert(AlertErro, str, NULL, NULL); return; }

// Teste efetuado com sucesso! FrmCustomAlert(AlertErro, "Banco de dados ProdutosDB descompactado!", NULL,

NULL);}

2.4.3 Funções do SyncAnywhere

2.4.3.1 SyncAnywhereOpenRef

Boolean SyncAnywhereOpenRef(UInt16 *refNum, UInt32 *context);

Comentário

Abre a referência à SharedLib.

Parâmetros

Page 84: Sync Anywhere

SyncAnywhere v1.2281

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

refNum: A referência à SharedLib será retornada neste parâmetrocontext: O contexto de acesso à SharedLib será retornado neste parâmetro

Você deve armazenar os dois parâmetros em variáveis globais pois seránecessário utiliza-los em todas as chamadas às funções do SyncAnywhere.

Retorno

Boolean indicando se a biblioteca foi aberta corretamente.

2.4.3.2 SyncAnywhereCloseRef

Boolean SyncAnywhereCloseRef(UInt16 refNum, UInt32 context);

Comentário

Fecha a referência à SharedLib.

Parâmetros

refNum: Referência à biblioteca SyncAnywhere

context: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

Boolean indicando se a biblioteca foi fechada corretamente.

2.4.3.3 SyncAnywhereGetVersion

UInt16 SyncAnywhereGetVersion(UInt16 refNum)

Comentários

Recupera a versão da biblioteca. A versão é retornada como um número inteiro,

onde a centena representa a versão e a dezena, a correção da versão, exemplo: a versão113 representa a versão 1 da biblioteca, com a correção 13.

Parâmetros

refNum: Referência à biblioteca SyncAnywhere, recuperado na funçãoSyncAnywhereOpenRef .

Retorno

Inteiro representando a versão da biblioteca.

Page 85: Sync Anywhere

Cliente Palm 82

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.4.3.4 SyncAnywhereCheckSumOn

UInt32 SyncAnywhereCheckSumOn(UInt16 refNum, UInt32 clientContext);

Comentários

Habilita a gravação de bytes de verificação de integridade nos registros do bancode dados compactado, para auxiliar na garantia da integridade dos dados transmitidos.Por default, a gravação dos bytes de verificação está desabilitada . O número de bytesde verificação de integridade gravados por registro é 10.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.5 SyncAnywhereCheckSumOff

UInt32 SyncAnywhereCheckSumOff(UInt16 refNum, UInt32 clientContext);

Comentários

Desabilita a gravação de bytes de verificação de integridade nos registros dobanco de dados compactado (default).

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.6 SyncAnywhereUIDSupportOn

UInt32 SyncAnywhereUIDSupportOn(UInt16 refNum, UInt32 clientContext)

Page 86: Sync Anywhere

SyncAnywhere v1.2283

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Comentários

Habilita a gravação do UniqueID de cada registro do banco de dados. O UniqueIDé uma informação não utilizada pela maioria das ferramentas, mas se por algum motivosua aplicação usa esta informação, você precisa habilitar o uso com esta função. Por

default, a gravação do UniqueID está desabilitada para economizar espaço no banco dedados compactado gerado.

Atenção:

- O uso desta função torna o SyncAnywhereincompatível com bancos de dados compactados sem o uso destafunção. Para que o SyncAnywhere seja compatível com bancos dedados compactados sem o UniqueID, é necessário utilizar a funçãoSyncAnywhereUIDSupportOff.

- É necessário também habilitar a gravação do UniqueIDna sua aplicação que compacta e descompacta dados no servidor.

- Quando quiser habilitar o suporte ao UniqueID, utilizeesta função logo após abrir a biblioteca pois ela é necessária paracompactar e descompactar bancos de dados com UniqueID.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.7 SyncAnywhereUIDSupportOff

UInt32 SyncAnywhereUIDSupportOff(UInt16 refNum, UInt32 clientContext)

Comentários

Desabilita a gravação do UniqueID de cada registro do banco de dados. OUniqueID é uma informação não utilizada pela maioria das ferramentas, mas se poralgum motivo sua aplicação usa esta informação, você precisa habilitar o uso com afunção SyncAnywhereUIDSupportOn . Por default, a gravação do UniqueID estádesabilitada para economizar espaço no banco de dados compactado gerado.

Atenção: o uso do UniqueID torna o SyncAnywhere

Page 87: Sync Anywhere

Cliente Palm 84

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

incompatível com bancos de dados compactados sem o uso dafunção SyncAnywhereUIDSupportOn.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.8 SyncAnywhereSetPackDataBlock

UInt32 SyncAnywhereSetPackDataBlock(UInt16 refNum, UInt32 clientContext,UInt16 maxDataBlock);

Comentários

Esta função é de extrema importância se o arquivo tiver que ser descompactadoem equipamentos com pouca memória como o Zire, M100, M105 ou qualquer outro quetenha 2MB de memória ou menos. Esses equipamentos tem muito pouca memóriadinâmica para alocação, assim, a quantidade de memória disponível depende dotamanho da aplicação. O tamanho máximo do bloco compactado de dados deve serconfigurado segundo sua necessidade em equipamentos com pouca memória e nestecaso um valor de 500 bytes é geralmente adequado à aplicações grandes.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à bibliotecamaxDataBlock: Tamanho máximo (em bytes) do bloco de dados que será

compactado. O default é 30000 bytes, mas para equipamentos com pouca memória estevalor deve ser muito mais baixo, em torno de 500 bytes quando a aplicação executada égrande ou até 5000 bytes se a aplicação for pequena.

Os parâmetros refNum e clientContext devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 88: Sync Anywhere

SyncAnywhere v1.2285

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.4.3.9 SyncAnywhereSetSendUpdateProc

UInt32 SyncAnywhereSetSendUpdateProc(UInt16 refNum, UInt32clientContext, UpdateProcPtr updateProc);

Comentários

Configura uma procedure na sua aplicação que será chamada pelo SyncAnywherecom o percentual do andamento do envio de dados ao servidor FTP.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à bibliotecaupdateProc: Procedure com apenas um parâmetro UInt16 para receber o

percentual do andamento do envio de dados ao servidor FTP.

Os parâmetros RefNum e ClientContext devem ter sido recuperados na função

SyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo

void ShowStatus(UInt16 status){ char str[21], str2[21];

StrIToA(str2, status); StrCopy(str, "Status: ");

StrCat(str, str2); StrCat(str, "%"); SetFieldTextFromStr(FldStatus, str); // Atualiza o campo}

void XXXX(){

...

...

// Configura a função ShowStatus para receber o percentual de// envio de dados ao Servidor FTPSyncAnywhereSetSendUpdateProc(refNum, context, &ShowStatus);

...

...}

Page 89: Sync Anywhere

Cliente Palm 86

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.4.3.10 SyncAnywhereSetReceiveUpdateProc

UInt32 SyncAnywhereSetReceiveUpdateProc(UInt16 refNum, UInt32clientContext, UpdateProcPtr updateProc);

Comentários

Configura uma procedure na sua aplicação que será chamada pelo SyncAnywherecom o percentual do andamento do recebimento de dados ao servidor FTP.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à bibliotecaupdateProc: Procedure com apenas um parâmetro UInt16 para receber o

percentual do andamento do recebimento de dados ao servidor FTP.

Os parâmetros RefNum e ClientContext devem ter sido recuperados na função

SyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo

void ShowStatus(UInt16 status){ char str[21], str2[21];

StrIToA(str2, status); StrCopy(str, "Status: ");

StrCat(str, str2); StrCat(str, "%"); SetFieldTextFromStr(FldStatus, str); // Atualiza o campo}

void XXXX(){

...

...

// Configura a função ShowStatus para receber o percentual de// recebimento de dados do Servidor FTPSyncAnywhereSetReceiveUpdateProc(refNum, context, &ShowStatus);

...

...}

Page 90: Sync Anywhere

SyncAnywhere v1.2287

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.4.3.11 SyncAnywhereSetPackUpdateProc

UInt32 SyncAnywhereSetPackUpdateProc(UInt16 refNum, UInt32clientContext, UpdateProcPtr updateProc);

Comentários

Configura uma procedure na sua aplicação que será chamada pelo SyncAnywherecom o percentual da compactação do banco de dados.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à bibliotecaupdateProc: Procedure com apenas um parâmetro UInt16 para receber o

percentual da compactação do banco de dados.

Os parâmetros RefNum e ClientContext devem ter sido recuperados na função

SyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo

void ShowStatus(UInt16 status){ char str[21], str2[21];

StrIToA(str2, status); StrCopy(str, "Status: ");

StrCat(str, str2); StrCat(str, "%"); SetFieldTextFromStr(FldStatus, str); // Atualiza o campo}

void XXXX(){

...

...

// Configura a função ShowStatus para receber o percentual da// da compactação do banco de dadosSyncAnywhereSetPackUpdateProc(refNum, context, &ShowStatus);

...

...}

Page 91: Sync Anywhere

Cliente Palm 88

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.4.3.12 SyncAnywhereSetUnpackUpdateProc

UInt32 SyncAnywhereSetPackUpdateProc(UInt16 refNum, UInt32clientContext, UpdateProcPtr updateProc);

Comentários

Configura uma procedure na sua aplicação que será chamada pelo SyncAnywherecom o percentual da descompactação do banco de dados.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à bibliotecaupdateProc: Procedure com apenas um parâmetro UInt16 para receber o

percentual da descompactação do banco de dados.

Os parâmetros RefNum e ClientContext devem ter sido recuperados na função

SyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo

void ShowStatus(UInt16 status){ char str[21], str2[21];

StrIToA(str2, status); StrCopy(str, "Status: ");

StrCat(str, str2); StrCat(str, "%"); SetFieldTextFromStr(FldStatus, str); // Atualiza o campo}

void XXXX(){

...

...

// Configura a função ShowStatus para receber o percentual da// da descompactação do banco de dadosSyncAnywhereSetUnpackUpdateProc(refNum, context, &ShowStatus);

...

...}

Page 92: Sync Anywhere

SyncAnywhere v1.2289

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.4.3.13 SyncAnywhereSetCreatorID

UInt32 SyncAnywhereSetCreatorID(UInt16 refNum, UInt32 clientContext, char*creatorID);

Comentários

Configura o CreatorID que será usado para os arquivos compactados.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

creatorID: O CreatorID, com exatamente quatro caracteres.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.14 SyncAnywherePackDatabase

UInt32 SyncAnywherePackDatabase(UInt16 refNum, UInt32 clientContext, char*DBDest, char *DBSource, UInt16 MaxBlockSize);

Comentários

Compacta o banco de dados informado em DBSource, no banco de dadosinformado em DBDest.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBDest: Nome do banco de dados destino, onde será compactado o banco dedados de origem. Atenção: O banco de dados destino deve ser apagado antes dechamar esta função pela primeira vez. As chamadas sucessivas à esta funçãoadicionam bancos de dados compactados à DBDest, portanto na primeira vez que usaresta função, certifique-se que ele não exista, para que a compactação inicie em umbanco de dados novo.

DBSource: Banco de dados origem, que será compactado dentro de DBDest.MaxBlockSize: Tamanho máximo do registro que será gerado no banco de dados

DBDest. Este valor normalmente deve ser em torno de 5000, que representa 5000 bytes

Page 93: Sync Anywhere

Cliente Palm 90

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

em cada registro e pode ser configurado em função da qualidade de transmissão da linhatelefônica ou celular. Há locais onde é melhor que este valor seja menor, em torno de1000, para minimizar erros na transmissão. O tamanho mínimo é 50 bytes e o máximo30000.

Observação importante: para os modelos M100, Zire e outros que temmemória igual ou inferior a 2MB, este parâmetro não poderá ser maior que2500 bytes, ou retornará o erro appErrInvalidBlockSize. Estes modelos temmemória "Heap" (memória dinâmica liberada pelo PalmOS) extremamentelimitada e as alocações de memória internas necessárias para compactaçãopodem falhar se o valor for maior que 2500 bytes. Se o Banco de Dados tiverque ser descompactado em equipamentos deste tipo, não se esqueça deconfigurar o tamanho do bloco de compactação com as funções

SyncAnywhereSetPackDataBlock no Palm e PackSetMaxDataBlock no Servidor.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.15 SyncAnywhereGetDBCount

UInt32 SyncAnywhereGetDBCount(UInt16 refNum, UInt32 clientContext, char*DBSource, UInt16 *DBCount);

Comentários

Recupera o número de bancos de dados compactados dentro do bancoespecificado no parâmetro DBSource, na variável informada no parâmetro DBCount. O

número de bancos de dados compactados só pode ser recuperado dos PDBsgerados pelo SyncAnywhere a partir da versão 1.17.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.DBCount: Ponteiro para uma variável do tipo UInt16 para receber o número de

bancos de dados compactados.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 94: Sync Anywhere

SyncAnywhere v1.2291

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.4.3.16 SyncAnywhereGetDBName

UInt32 SyncAnywhereGetDBName(UInt16 refNum, UInt32 clientContext, char*DBSource, UInt16 indx, char *DBName);

Comentários

Recupera o nome de bancos de dados compactado dentro do banco especificadono parâmetro DBSource, na variável informada no parâmetro DBName , de acordo como índice do banco informado no parâmetro Indx. O nome dos bancos de dados

compactados só podem ser recuperados dos PDBs gerados pelo SyncAnywherea partir da versão 1.17.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.indx: O índice do banco de dados. O primeiro banco de dados compactado tem

índice ZERO. Para saber o número de bancos de dados compactados, utilize a funçãoSyncAnywhereGetDBCount .

DBName: O nome do banco de dados compactado é retornado neste parâmetro.Atenção: Este parâmetro DEVE SER uma variável PChar ou Array de Charalocada com no mínimo 32 caracteres. A biblioteca irá copiar o nome nesteparâmetro, não fará alocação de memória para o retorno da mensagem. Se vocênão alocar espaço, poderá causar um erro na sua aplicação e Reset no Palm .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.17 SyncAnywhereCheckDatabase

UInt32 SyncAnywhereCheckDatabase(UInt16 refNum, UInt32 clientContext,char *DBSource);

Comentários

Verifica a estrutura de um banco compactado gerado pelo SyncAnywhere. Afunção verifica a integridade do número de registros no banco e CheckSum (sehabilitado).

Parâmetros

refNum: Referência à biblioteca SyncAnywhere

clientContext: Contexto de acesso à biblioteca

Page 95: Sync Anywhere

Cliente Palm 92

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.

Retorno

ZERO indica que o PDB está íntegro na sua estrutura.

UM indica que o PDB está íntegro na sua estrutura, mas o CheckSum estádesabilitado, portanto ainda pode haver erro nos registros transferidos.

> UM é o código de erro da verificação do PDB.

2.4.3.18 SyncAnywhereUnpackDatabase

UInt32 SyncAnywhereUnpackDatabase(UInt16 refNum, UInt32 clientContext,char *DBSource);

Comentários

Descompacta os bancos de dados para a memória do Palm. Atenção: Você deveapagar os bancos de dados que serão descompactados antes que eles sejamdescompactados por esta função ou os registros serão adicionados aosregistros dos bancos de dados se já existirem.

Parâmetros

refNum: Referência à biblioteca SyncAnywhere

clientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.19 SyncAnywhereUnpackOneDB

UInt32 SyncAnywhereUnpackOneDB(UInt16 refNum, UInt32 clientContext,char *DBSource, char *DBName);

Comentários

Descompacta um único banco de dados para a memória do Palm. Atenção: Vocêdeve apagar o banco de dados que será descompactado antes que eles sejadescompactado por esta função ou os registros serão adicionados aos registros

Page 96: Sync Anywhere

SyncAnywhere v1.2293

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

do banco de dados.

Parâmetros

refNum: Referência à biblioteca SyncAnywhere

clientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBSource: O nome do banco de dados compactado com o SyncAnywhere.DBName: O nome do banco de dados que será extraído do banco compactado.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.20 SyncAnywhereUnpackApplication

UInt32 SyncAnywhereUnpackApplication(UInt16 refNum, UInt32 clientContext,

char *DBSource);

Comentários

Descompacta a aplicação compactada em um Banco de Dados Palm (PDB) para amemória do Palm. Atenção: Você deve apagar a aplicação que serádescompactada antes que ela seja descompactada por esta função ou seráretornado um código de erro.

É possível utilizar SyncAnywhereSetUnpackUpdateProc para configurar umafunção da sua aplicação para mostrar o andamento da descompactação da aplicação.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

DBSource: O nome do banco de dados que contém a aplicação compactada como SyncAnywhere.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 97: Sync Anywhere

Cliente Palm 94

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.4.3.21 SyncAnywhereSetNetLib

UInt32 SyncAnywhereSetNetLib(UInt16 refNum, UInt32 clientContext, UInt16netLibRef);

Comentários

Se você iniciar a comunicação sem utilizar a função SyncAnywhereDial , vocêdeve usar esta função para informar a referência à Net.Lib aberta antes de usar asfunções de comunicação do SyncAnywhere.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

netLibRef: A referência à Net.Lib.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.22 SyncAnywhereNetLibOpen

UInt32 SyncAnywhereNetLibOpen(UInt16 refNum, UInt32 clientContext);

Comentários

Abre a biblioteca de comunicação do Palm. Esta função deve ser chamada antesde qualquer outra função de comunicação.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 98: Sync Anywhere

SyncAnywhere v1.2295

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.4.3.23 SyncAnywhereNetLibClose

UInt32 SyncAnywhereNetLibClose(UInt16 refNum, UInt32 clientContext);

Comentários

Fecha a biblioteca de comunicação do Palm. Esta função deve ser chamadaquando a comunicação não for mais necessária, geralmente a última função a serchamada no processo de comunicação.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.24 SyncAnywhereModemDetect

UInt32 SyncAnywhereModemDetect(UInt16 refNum, UInt32 clientContext);

Comentários

Detecta se um Modem ou Celular (via cabo serial) está conectado ao Palm.

Parâmetros

refNum: Referência à biblioteca SyncAnywhere

clientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

2.4.3.25 SyncAnywhereDial

UInt32 SyncAnywhereDial(UInt16 refNum, UInt32 clientContext, char *phone,UInt16 pulse, char *username, char *password);

Comentários

Page 99: Sync Anywhere

Cliente Palm 96

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Disca para um servidor de comunicação usando o modem acoplado ao Palm(PalmModem ou Celular via cabo serial).

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

phone: Número do telefone.pulse: 1 para discagem de Pulso e ZERO para discagem por Tom.

username: Nome do usuário para validação no servidor de comunicação(RAS/Internet).

password : Senha de acesso do usuário.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

2.4.3.26 SyncAnywhereDialWireless

UInt32 SyncAnywhereDialWireless(UInt16 refNum, UInt32 clientContext, char*connection, char *phone, char *username, char *password, char *dnsServer,char *script);

Comentários

Disca para um servidor de comunicação usando uma Conexão predeterminada.Esta função pode ser usada para discagem por modem ou celular infravermelho ouBluetooth.

Parâmetros

refNum: Referência à biblioteca SyncAnywhere

clientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

connection: Nome da Conexão preconfigurada na aplicação Prefs, opçãoConnection (Conexões).

phone: Número do telefone.

username: Nome do usuário para validação no servidor de comunicação(RAS/Internet).

password : Senha de acesso do usuário.dnsServer: Endereço IP do Servidor DNS, exemplo '222.111.22.11'.script: Texto do Script para conexão. Caso um Script não seja necessário, use

NULL ou uma String vazia. Para informar um Script neste parâmetro, veja os

Page 100: Sync Anywhere

SyncAnywhere v1.2297

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

comentários mais abaixo.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

Script para conexão

Segundo a documentação da API do PalmOS, o Script é muito rígido, se um Script comsintaxe incorreta for informado, os resultados serão imprevisíveis. O formato do Script éuma sequência de Strings terminadas em ZERO, com um ZERO extra no final detodas as Strings, exemplo:

"s go PPP\0s ^N\0\0"

No exemplo acima temos um comando Send, terminado em ZERO, outro comando Send,terminado em ZERO e um ZERO indicando o final do Script.

Comandos aceitos no Script

Função Comando Parâmetro Exemplo

Send s String s go PPP

Wait For w String s password:

Delay d Número de segundos s 1

Get IP g g

Prompt a String a Digite Nome:

Wait for Prompt f String f ID:

Send CR s String s ^N

Send UserID s String s nomeusuario

Send Password s String s senha

OBS: DEVE HAVER APENAS UM ÚNICO ESPAÇO ENTRE O COMANDO E OPARÂMETRO.

2.4.3.27 SyncAnywhereOpenActiveService

UInt32 SyncAnywhereOpenActiveService(UInt16 refNum, UInt32clientContext);

Comentários

Inicia o serviço selecionado no Prefs/Network. Esta função é útil quando você já

tem o serviço configurado ou quando o serviço requer configurações especiais comocomunicação IR (Celular IR), Bluetooth, WiFi, ou necessita configurar scripts.

Parâmetros

Page 101: Sync Anywhere

Cliente Palm 98

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.28 SyncAnywhereOpenService

UInt32 SyncAnywhereOpenService(UInt16 refNum, UInt32 clientContext, char*serviceName);

Comentários

Inicia um serviço já configurado no Prefs/Network. Esta função é útil quando vocêjá tem o serviço configurado ou quando o serviço requer configurações especiais comocomunicação IR (Celular IR), Bluetooth, WiFi, ou necessita configurar scripts.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

serviceName : Nome do Serviço criado no Prefs/Network.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.29 SyncAnywhereHangup

UInt32 SyncAnywhereHangup(UInt16 refNum, UInt32 clientContext);

Comentários

Desconecta do servidor de comunicação, conectado pela funçãoSyncAnywhereDial ou pela função SyncAnywhereOpenService .

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Page 102: Sync Anywhere

SyncAnywhere v1.2299

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.30 SyncAnywhereFTPPassiveModeOn

UInt32 SyncAnywhereFTPPassiveModeOn(UInt16 refNum, UInt32clientContext);

Comentários

Configura o modo "PASV" (FTP PASSIVO) na conexão FTP (default noSyncAnywhere).

Parâmetros

refNum: Referência à biblioteca SyncAnywhere

clientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

2.4.3.31 SyncAnywhereFTPPassiveModeOff

UInt32 SyncAnywhereFTPPassiveModeOff(UInt16 refNum, UInt32clientContext);

Comentários

Configura o modo não passivo (FTP ATIVO) na conexão FTP.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

Page 103: Sync Anywhere

Cliente Palm 100

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

erro cujo código está descrito em uma seção mais adiante.

2.4.3.32 SyncAnywhereSetTCPDelay

UInt32 SyncAnywhereSetTCPDelay(UInt16 refNum, UInt32 clientContext,UInt16 delay);

Comentários

Configura um tempo de espera entre os envios e recebimentos de blocos de dadosde/para o Servidor FTP. Esta função é importante quando as conexões são notoriamentelentas, sensíveis e suscetíveis à quedas como conexões via celular e principalmente porinfravermelho.

Como regra, quanto maior o tamanho do bloco utilizado para compactar o bancode dados através da função SyncAnywherePackDatabase, maior deve ser o tempo deespera passado nesta função em conexões lentas, principalmente infravermelho. Comoparâmetro, em testes realizados em conexões IR com média qualidade, blocos de 500bytes compactados podem ser utilizados com o parâmetro Delay nesta funçãoconfigurado para 3 (300ms). Em conexões com pior qualidade, o tempo deve seraumentado e o tamanho do bloco diminuído.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à bibliotecadelay: Número de "décimos de segundo" para a espera. DEZ décimos de segundo

equivalem a UM segundo de atraso, portanto, para atrasar TRÊS décimos de segundo(300 ms) use SyncAnywhereSetTCPDelay(refNum, clientContext, 3).

Os parâmetros refNum e clientContext devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.33 SyncAnywhereFTPOpen

UInt32 SyncAnywhereFTPOpen(UInt16 RefNum, UInt32 clientContext, char*hostname, UInt16 Port, char *username, char *password, UInt16 timeout);

Comentários

Conecta-se a um servidor FTP. A conexão com um servidor de comunicação

(RAS/Internet) já deve ter sido iniciada pela função SyncAnywhereDial ou por outromeio.

Parâmetros

Page 104: Sync Anywhere

SyncAnywhere v1.22101

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

hostName: O nome ou endereço IP do servidor FTP.port: A porta do serviço FTP no servidor. Se a porta for a padrão, utilize ZERO

neste parâmetro.username: O nome do usuário para logon no servidor FTP.password : A senha de acesso do usuário.timeout: Número de segundos para timeout no acesso ao servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.34 SyncAnywhereFTPClose

UInt32 SyncAnywhereFTPClose(UInt16 refNum, UInt32 clientContext);

Comentários

Fecha a conexão com o servidor FTP. A conexão deve ter sido aberta pela funçãoSyncAnywhereFTPOpen .

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.35 SyncAnywhereFTPCd

UInt32 SyncAnywhereFTPCd(UInt16 refNum, UInt32 clientContext, char*path);

Comentários

Muda o diretório no servidor FTP.

Parâmetros

Page 105: Sync Anywhere

Cliente Palm 102

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

path: Caminho para o diretório no servidor FTP

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.36 SyncAnywhereFTPMkd

UInt32 SyncAnywhereFTPMkd(UInt16 refNum, UInt32 clientContext, char*name);

Comentários

Cria o diretório no servidor FTP.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

name: Nome do diretório a ser criado no servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.37 SyncAnywhereFTPRmd

UInt32 SyncAnywhereFTPRmd(UInt16 refNum, UInt32 clientContext, char*name);

Comentários

Remove o diretório do servidor FTP.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Page 106: Sync Anywhere

SyncAnywhere v1.22103

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

name: Nome do diretório a ser removido no servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.38 SyncAnywhereFTPDel

UInt32 SyncAnywhereFTPDel(UInt16 refNum, UInt32 clientContext, char

*name);

Comentários

Remove o arquivo do servidor FTP.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

name: Nome do arquivo a ser removido no servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.39 SyncAnywhereFTPPut

UInt32 SyncAnywhereFTPPut(UInt16 refNum, UInt32 clientContext, char

*DBName);

Comentários

Envia um banco de dados ou aplicação do Palm para o servidor FTP.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Page 107: Sync Anywhere

Cliente Palm 104

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

DBName: Nome do banco de dados ou aplicação para ser enviada ao servidor. Onome não deve conter extensão pois ela será colocada automaticamente (.PDB/.PRC)dependendo do que estiver sendo enviado. Atenção: o nome do banco de dados écase-sensitive.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.40 SyncAnywhereFTPGet

UInt32 SyncAnywhereFTPGet(UInt16 refNum, UInt32 clientContext, char

*name);

Comentários

Recebe um banco de dados ou aplicação do servidor FTP.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

name: Nome do banco de dados ou aplicação para ser recebida do servidor. Onome deve conter a extensão (.PDB/.PRC) dependendo do que estiver sendo recuperado.

Atenção: alguns servidores FTP exigem que os nomes de arquivo sejamexatamente como estão armazenados (case-sensitive) .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.41 SyncAnywhereFTPRename

UInt32 SyncAnywhereFTPRename(UInt16 refNum, UInt32 clientContext, char*oldName, char *newName);

Comentários

Renomeia um banco de dados ou aplicação no servidor FTP.

Parâmetros

refum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Page 108: Sync Anywhere

SyncAnywhere v1.22105

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

oldName: Nome do banco de dados ou aplicação para ser renomeada noservidor. O nome deve conter a extensão (.PDB/.PRC) dependendo do que estiver sendo

renomeado. Atenção: alguns servidores FTP exigem que os nomes de arquivosejam exatamente como estão armazenados (case-sensitive).

newName: Novo nome do arquivo no servidor.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.42 SyncAnywhereFTPGetLastResponse

UInt32 SyncAnywhereFTPGetLastResponse(UInt16 refNum, UInt32clientContext, char *response);

Comentários

Obtém o texto da última resposta do servidor FTP.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na função

SyncAnywhereOpenRef .

Response: Última mensagem de resposta do servidor FTP. Este texto érecuperado diretamente o servidor FTP, portanto a mensagem é do próprio servidor.Atenção: Este parâmetro DEVE SER um ponteiro ou Array de char (ex: charresponse[255]) alocada com 255 caracteres. A biblioteca irá copiar amensagem neste parâmetro, não fará alocação de memória para o retorno damensagem. Se você não alocar espaço, poderá causar um erro na sua aplicação

e Reset no Palm.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.43 SyncAnywhereFTPSetServerType

UInt32 SyncAnywhereFTPSetServerType(UInt16 refNum, UInt32 clientContext,UInt16 serverType);

Comentários

Page 109: Sync Anywhere

Cliente Palm 106

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Configura o tipo de listagem de diretório (comando DIR) retornada pelo servidorFTP. O parâmetro ServerType pode ser configurado como ZERO para retorno padrãoUnix/Linux e UM para retorno padrão Windows 2000.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à bibliotecaserverType: ZERO para retorno padrão Unix/Linux e UM para

retorno padrão Windows 2000.

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.4.3.44 SyncAnywhereFTPDir

UInt32 SyncAnywhereFTPDir(UInt16 refNum, UInt32 clientContext);

Comments

Get the listing from the current directory on the FTP server. This operation doesnot present the listing, only get the list for later use by SyncAnywhereFTPGetFileCount,SyncAnywhereFTPGetFileName, SyncAnywhereFTPFileExists andSyncAnywhereFTPDirectoryExists calls.

SyncAnywhereFTPDir is not automatically called when you connect to the FTPServer or when you change the current directory; you must explicitly call it.

Parameters

refNum: Reference to the SyncAnywhere SharedLib.clientContext: Context to access the SyncAnywhere SharedLib.

Both parameters are retrieve from the SyncAnywhereOpenRef call.

Return value

ZERO indicates the call was succesfuly executed; non-zero value indicates anerror described in an error table listed later.

Example

// Obtém a listagem dos arquivos do diretório // corrente no Servidor Erro = SyncAnywhereFTPDir(refNum, context); if (Erro)

Page 110: Sync Anywhere

SyncAnywhere v1.22107

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

{ // Erro no comando SyncAnywhereFTPDIR

return; }

// Recupera o número de arquivos no diretório // corrente no Servidor Erro = SyncAnywhereFTPGetFileCount(refNum, context, &fileCount); if (Erro) {

// Erro no comando SyncAnywhereFTPGetFileCount return; }

// Mostra o número de arquivos StrCopy(Str, "Número de Arquivos no Servidor: "); StrIToA(Str2, fileCount); StrCat(Str, Str2); FrmCustomAlert(AlertInfo, Str, NULL, NULL);

// Mostra os nomes dos arquivos for (x=0; x<fileCount; x++) { Erro = SyncAnywhereFTPGetFileName(refNum, context, x, Nome);

if (!Erro) FrmCustomAlert(AlertInfo, Nome, NULL, NULL); }

// Verifica se o arquivo existe no Servidor Erro = SyncAnywhereFTPFileExists(refNum, context, "Test.pdb", &exists); if (Erro) { // Erro no comando SyncAnywhereFTPFileExists return; }

// Indica se o arquivo existe if (exists) FrmCustomAlert(AlertInfo, "Arquivo existe no Servidor!", NULL, NULL); else FrmCustomAlert(AlertInfo, "Arquivo não existe no Servidor!", NULL, NULL);

// Verifica se o diretório existe no Servidor

Erro = SyncAnywhereFTPDirectoryExists(refNum, context, "dados", &exists); if (Erro) { // Erro no comando SyncAnywhereFTPDirectoryExists return; }

// Indica se o diretório existe

Page 111: Sync Anywhere

Cliente Palm 108

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

if (exists) FrmCustomAlert(AlertInfo, "Diretório existe no Servidor!", NULL, NULL); else FrmCustomAlert(AlertInfo, "Diretório não existe no Servidor!", NULL,NULL);

2.4.3.45 SyncAnywhereFTPGetFileCount

UInt32 SyncAnywhereFTPGetFileCount(UInt16 refNum, UInt32 clientContext,UInt16 *fileCount);

Comentários

Recupera o número de arquivos no diretório corrente do Servidor FTP. Atenção:esta função só funciona se o comando SyncAnywhereFTPDir for chamado antes pararecuperar a lista de arquivos do Servidor FTP.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

fileCount: Ponteiro para uma variável do tipo UInt16 para receber o número dearquivos no diretório corrente do Servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

Consulte a função SyncAnywhereFTPDir para exemplo de utilização desta função.

2.4.3.46 SyncAnywhereFTPFileExists

UInt32 SyncAnywhereFTPFileExists(UInt16 refNum, UInt32 clientContext, char*fileName, UInt16 *fileExists);

Comentários

Verifica se o arquivo existe no diretório corrente do Servidor FTP. Atenção: esta

função só funciona se o comando SyncAnywhereFTPDir for chamado antes pararecuperar a lista de arquivos do Servidor FTP.

Parâmetros

refNum: Referência à biblioteca SyncAnywhere

Page 112: Sync Anywhere

SyncAnywhere v1.22109

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

clientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

fileName: Nome do arquivo.fileExists: Ponteiro para uma variável do tipo UInt16 para receber o resultado da

verificação. ZERO indica que o arquivo não existe no diretório corrente do Servidor; UMindica que o arquivo existe.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

Consulte a função SyncAnywhereFTPDir para exemplo de utilização desta função.

2.4.3.47 SyncAnywhereFTPDirectoryExists

UInt32 SyncAnywhereFTPDirectoryExists(UInt16 refNum, UInt32 clientContext,char *dirName, UInt16 *dirExists);

Comentários

Verifica se o diretório existe no diretório corrente do Servidor FTP. Atenção: estafunção só funciona se o comando SyncAnywhereFTPDir for chamado antes pararecuperar a lista de arquivos do Servidor FTP.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

dirName: Nome do diretório.dirExists: Ponteiro para uma variável do tipo UInt16 para receber o resultado da

verificação. ZERO indica que o diretório não existe no diretório corrente do Servidor; UMindica que o diretório existe.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

Consulte a função SyncAnywhereFTPDir para exemplo de utilização desta função.

Page 113: Sync Anywhere

Cliente Palm 110

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.4.3.48 SyncAnywhereFTPGetFileName

UInt32 SyncAnywhereFTPGetFileName(UInt16 refNum, UInt32 clientContext,UInt16 fileIndex, char *fileName);

Comentários

Recupera o nome do arquivo no diretório do Servidor FTP segundo o índiceespecificado. Atenção: esta função só funciona se o comando SyncAnywhereFTPDir forchamado antes para recuperar a lista de arquivos do Servidor FTP.

Parâmetros

refNum: Referência à biblioteca SyncAnywhereclientContext: Contexto de acesso à biblioteca

Os dois parâmetros devem ter sido recuperados na funçãoSyncAnywhereOpenRef .

fileIndex: Índice do arquivo na lista. O primeiro índice é ZERO.DBName: O nome do arquivo será retornado neste parâmetro. Atenção: Este

parâmetro DEVE SER uma variável PChar ou Array de Char alocada com nomínimo 100 caracteres. A biblioteca irá copiar o nome neste parâmetro, nãofará alocação de memória para o retorno da mensagem. Se você não alocarespaço, poderá causar um erro na sua aplicação e Reset no Palm.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

Consulte a função SyncAnywhereFTPDir para exemplo de utilização desta função.

2.5 HB++

2.5.1 Instalação

No diretório do SyncAnywhere\HB++ , há um arquivo chamadoSyncAnywhere.hbm que deve ser adicionado ao seu projeto. Este arquivo contém asinformações de acesso à SharedLib do SyncAnywhere, necessário para que o HB++

possa compilar sua aplicação.

2.5.2 Utilização

A aplicação exemplo HBDemo sob o diretório HB++ explica como utilizar asfunções da biblioteca para compactar dados e também para acessar um servidor FTP. Noformulário da aplicação, serão solicitados todos os dados para que seja possível a

Page 114: Sync Anywhere

SyncAnywhere v1.22111

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

conexão com o servidor FTP:

· O número de telefone para discagem ao servidor de comunicação, seja um RASou provedor Internet;

· Tipo de discagem, pulso ou tom;· Nome de usuário e senha de acesso ao servidor RAS ou provedor Internet;· O endereço IP ou nome do servidor FTP;· O nome do usuário e senha para logon no servidor FTP.

No arquivo de acesso às funções do SyncAnywhere (SyncAnywhere.hbm), háduas variáveis declaradas para acesso às funções do SyncAnywhere que você utilizaráem praticamente todas as funções, conforme demonstrado nas chamadas a seguir.

Para chamar uma função da biblioteca, basta utilizar o formato:SyncAnywhere.XXXXXX(Parâmeros), onde "SyncAnywhere." indica o arquivo headeronde as funções estão declaradas, XXXXXX é o nome dafunção desejada e Parâmetros

são os parâmetros que a função exige.

Atenção: antes de compactar e descompactar arquivos PDB na suaaplicação Delphi utilize o comando SyaGlobal.SetRecordUIDSupport(True), ouem VB Sya.SetRecordUIDSupport True, para habilitar o suporte ao UniqueIDdos registros no banco compactado. A não utilização deste comando acarretaráem arquivos incompatíveis com o HB++.

Antes de utilizar as funções do SyncAnywhere, é necessário carregar a bibliotecacom o seguinte comando:

' Carrega biblioteca SyncAnywhereIf not SyncAnywhere.OpenRef() Then MsgBox "Erro ao carregar SyncAnywhere!"

Exit Sub

End If

Atenção: não utilize as funções da biblioteca se a chamada acima falharou causará um erro na sua aplicação.

Para fechar a biblioteca, basta usar:

' Verifica se a biblioteca foi carregada

If SyncAnywhere.SyaRefNum=0 thenExit Sub

End If

' Fecha biblioteca SyncAnywhereSyncAnywhere.CloseRef

O código no botão Iniciar FTP executa comandos da biblioteca:

Dim Erro as Long Dim Telefone as String Dim Pulso as Integer

Dim Usuario as String

Page 115: Sync Anywhere

Cliente Palm 112

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Dim Senha as StringDim ServidorFTP as StringDim UsuarioFTP as StringDim SenhaFTP as StringDim DBPack as new DatabaseInfo

' Verifica se a biblioteca foi carregadaIf SyncAnywhere.SyaRefNum=0 then MsgBox "Biblioteca SyncAnywhere não foi carregada!"

Exit Sub End If

' Verifica se existe um modem --> Inicialmente comentada pelos motivos

' abaixo explicados ' ------------------------------------------------------------------------ ' Para conexão por Celulares ou Modem via Infravermelho, NÃO USE afunção ' SyncAnywhere.ModemDetect, pois ela não será capaz de detectar a ' comunicação com o Celular. Esta função deve ser usada somentequando a

' conexão for feita através de Modem acoplado ao Palm, ou celular viacabo ' ------------------------------------------------------------------------ 'FldStatus.Text = "Detectando Modem..." 'Erro =SyncAnywhere.ModemDetect(SyncAnywhere.SyaRefNum,SyncAnywhere.SyaContext) 'If Erro>0 Then ' FldStatus.Text = "Modem não detectado!"

' Exit Sub 'End If

' Configura o CreatorID para criação do Arquivo PDB compactado Erro = SyncAnywhere.SetCreatorID(SyncAnywhere.SyaRefNum,SyncAnywhere.SyaContext, "CBCT") If Erro>0 Then MsgBox "Erro configurando CreatorID: " & CStr(Erro)

Exit Sub End If

' Recupera as informações dos campos Telefone = FldTelefone.Text Usuario = FldUsuario.Text Senha = FldSenha.Text ServidorFTP = FldServidor.Text

UsuarioFTP = FldFTPUsuario.Text SenhaFTP = FldFTPSenha.Text

' Valida as informaçõesIf Len(Telefone)=0 Then

MsgBox "Telefone inválido!"Exit Sub

End If

Page 116: Sync Anywhere

SyncAnywhere v1.22113

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

If Len(Usuario)=0 ThenMsgBox "Usuario inválido!"Exit Sub

End If

If Len(Senha)=0 ThenMsgBox "Senha inválido!"Exit Sub

End If

If Len(ServidorFTP)=0 ThenMsgBox "Servidor FTP inválido!"Exit Sub

End If

If Len(UsuarioFTP)=0 ThenMsgBox "UsuarioFTP inválido!"Exit Sub

End If

If Len(SenhaFTP)=0 ThenMsgBox "SenhaFTP inválido!"Exit Sub

End If

' Pulso/TomIf ChkPulso.Value Then

Pulso = 1

ElsePulso = 0

End If

' Apaga o banco PDBPack, necessário para que os bancos não sejam ' adicionados aos já existentes If DBPack.FindByName("PDBPack") Then

DBPack.Delete

End If

' Compacta bancos de dados para envio ao Servidor FldStatus.Text = "Compactando ProdutosDB" Erro = SyncAnywhere.PackDatabase(SyncAnywhere.SyaRefNum,SyncAnywhere.SyaContext, "PDBPack", "ProdutosDB", 500) If Erro>0 Then MsgBox "Erro em ProdutosDB: " & CStr(Erro)

Exit Sub End If

FldStatus.Text = "Compactando ClientesDB" Erro = SyncAnywhere.PackDatabase(SyncAnywhere.SyaRefNum,SyncAnywhere.SyaContext, "PDBPack", "ClientesDB", 500) If Erro>0 Then

MsgBox "Erro em ClientesDB: " & CStr(Erro)

Page 117: Sync Anywhere

Cliente Palm 114

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Exit Sub End If

' Abre a Net.Lib FldStatus.Text = "Abrindo Net.Lib..."

Erro = SyncAnywhere.NetLibOpen(SyncAnywhere.SyaRefNum,SyncAnywhere.SyaContext) If Erro>0 Then MsgBox "Erro de abertura Net.Lib: " & CStr(Erro) Exit Sub End If

' Conecta no servidor de comunicação

FldStatus.Text = "Discando"

' ------------------------------------------------------------------------ ' Para conexão por Celulares ou Modem via Infravermelho, NÃO USE afunção ' SyncAnywhere.Dial, pois ela não fará a discagem. Ao invés de usar esta ' função, crie a conexão com o celular na aplicação Prefs do Palm, opção

' Network e configure lá o telefone, o modo de conexão, usuário e senha, ' e utilize a função SyncAnywhere.OpenService(NomeDaConexão) paraefetuar ' a discagem. O nome no parâmetro deve ser exatamente igual ao nomedo ' serviço criado, respeitando-se as letras maiúsculas e minúsculas. ' Caso tenha alguma dúvida, consulte o manual do SyncAnywhere. ' ------------------------------------------------------------------------

Erro = SyncAnywhere.Dial(SyncAnywhere.SyaRefNum,SyncAnywhere.SyaContext, Telefone, Pulso, Usuario, Senha) If Erro>0 Then

FldStatus.Text = "Erro de Discagem"MsgBox "Erro de Discagem: " & CStr(Erro)

' Fecha a biblioteca de comunicação SyncAnywhere.NetLibClose SyncAnywhere.SyaRefNum,

SyncAnywhere.SyaContext

Exit Sub End If

' Conecta no Servidor FTP FldStatus.Text = "Conectando no Servidor FTP..." Erro = SyncAnywhere.FTPOpen(SyncAnywhere.SyaRefNum,

SyncAnywhere.SyaContext, ServidorFTP, 0, UsuarioFTP, SenhaFTP, 10) If Erro>0 Then

FldStatus.Text = "Erro de Conexão"MsgBox "Erro de Conexão: " & CStr(Erro)

' Desconecta do Servidor de comunicação SyncAnywhere.Hangup SyncAnywhere.SyaRefNum,SyncAnywhere.SyaContext

Page 118: Sync Anywhere

SyncAnywhere v1.22115

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

' Fecha Net.Lib SyncAnywhere.NetLibClose SyncAnywhere.SyaRefNum,SyncAnywhere.SyaContext

Exit Sub

End If

' Comando GET de uma aplicação FldStatus.Text = "Recebendo Clientes.prc" Erro = SyncAnywhere.FTPGet(SyncAnywhere.SyaRefNum,SyncAnywhere.SyaContext, "Clientes.prc") If Erro>0 Then

If Erro=33800 Then

MsgBox "Arquivo não existe no servidor"Else

MsgBox "Erro de recepção: " & CStr(Erro)End If

End If

' Comando PUT do Banco compactado FldStatus.Text = "Enviando PDBPack..." Erro = SyncAnywhere.FTPPut(SyncAnywhere.SyaRefNum,SyncAnywhere.SyaContext, "PDBPack") If Erro>0 Then

MsgBox "Erro de envio: " & CStr(Erro) End If

' Fecha Conexão FTP, se o envio teve sucesso SyncAnywhere.FTPClose SyncAnywhere.SyaRefNum, SyncAnywhere.SyaContext

' Desconecta do Servidor de comunicação SyncAnywhere.Hangup SyncAnywhere.SyaRefNum, SyncAnywhere.SyaContext

' Fecha Net.Lib SyncAnywhere.NetLibClose SyncAnywhere.SyaRefNum,

SyncAnywhere.SyaContext

FldStatus.Text = "Comunicação realizada com sucesso!"

O código no botão Analisar PDBPack executa comandos da biblioteca:

Dim Erro as Long

Dim NumDBs as IntegerDim x as IntegerDim NomeBanco as StringDim DBPack as new DatabaseInfo

' Verifica se a biblioteca foi carregadaIf SyncAnywhere.SyaRefNum=0 then

MsgBox "Biblioteca SyncAnywhere não foi carregada!"

Page 119: Sync Anywhere

Cliente Palm 116

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Exit SubEnd If

' Procura pelo banco PDBPack no PalmIf not DBPack.FindByName("PDBPack") Then

MsgBox "Banco PDBPack não foi encontrado, comande o Início do FTP oucarregue o banco de dados PDBPack.pdb do diretório TestDB no palm ouEmulador" Exit SubEnd If

' Verifica o número de bancos de dados Compactados em PDBPackErro = SyncAnywhere.GetDBCount(SyncAnywhere.SyaRefNum,

SyncAnywhere.SyaContext, "PDBPack", NumDBs)If Erro>0 Then

MsgBox "Erro ao recuperar número de bancos: " & CStr(Erro) Exit SubEnd If

' Apresenta número de Bancos

MsgBox "Número de bancos de dados em PDBPack: " & CStr(NumDBs)

' Apresenta o nome dos Bancos em PDBPackFor x=0 To NumDBs-1

' Reserva espaço na variável para receber o nome do banco dedados

NomeBanco = Space(35)

Erro = SyncAnywhere.GetDBName(SyncAnywhere.SyaRefNum,SyncAnywhere.SyaContext, "PDBPack", x, NomeBanco) If Erro>0 Then

MsgBox "Erro ao recuperar nome do banco: " & CStr(Erro) Exit Sub End If

' Apresenta o nome

MsgBox "Banco armazenado em PDBPack: " & NomeBanco

Next

' Descompacta apenas um banco de dados de PDBPackErro = SyncAnywhere.UnpackOneDB(SyncAnywhere.SyaRefNum,SyncAnywhere.SyaContext, "PDBPack", "ProdutosDB")If Erro>0 Then

MsgBox "Erro ao descompactar banco ProdutosDB de PDBPack: " &CStr(Erro) Exit SubEnd If

' Teste efetuado com sucesso!MsgBox "Banco de dados ProdutosDB descompactado!"

Page 120: Sync Anywhere

SyncAnywhere v1.22117

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.5.3 Funções do SyncAnywhere

2.5.3.1 SyncAnywhere.GetVersion

Public Declare Function GetVersion(ByVal iRef as Integer) as Integer

Comentários

Recupera a versão da biblioteca. A versão é retornada como um número inteiro,onde a centena representa a versão e a dezena, a correção da versão, exemplo: a versão113 representa a versão 1 da biblioteca, com a correção 13.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.

Retorno

Inteiro representando a versão da biblioteca.

2.5.3.2 SyncAnywhere.CheckSumOn

Public Declare Function CheckSumOn(ByVal iRef as Integer, ByValiClientContext as Long) as Long

Comentários

Habilita a gravação de bytes de verificação de integridade nos registros do bancode dados compactado, para auxiliar na garantia da integridade dos dados transmitidos.Por default, a gravação dos bytes de verificação está desabilitada . O número de bytes

de verificação de integridade gravados por registro é 10.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.

2.5.3.3 SyncAnywhere.CheckSumOff

Public Declare Function CheckSumOff(ByVal iRef as Integer, ByValiClientContext as Long) as Long

Comentários

Desabilita a gravação de bytes de verificação de integridade nos registros dobanco de dados compactado (default).

Parâmetros

Page 121: Sync Anywhere

Cliente Palm 118

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.

2.5.3.4 SyncAnywhere.SetPackDataBlock

Public Declare Function SetPackDataBlock(ByVal iRef as Integer, ByValiClientContext as Long, ByVal MaxAllocSize as Integer) as Long

Comentários

Esta função é de extrema importância se o arquivo tiver que ser descompactadoem equipamentos com pouca memória como o Zire, M100, M105 ou qualquer outro quetenha 2MB de memória ou menos. Esses equipamentos tem muito pouca memória

dinâmica para alocação, assim, a quantidade de memória disponível depende dotamanho da aplicação. O tamanho máximo do bloco compactado de dados deve serconfigurado segundo sua necessidade em equipamentos com pouca memória e nestecaso um valor de 500 bytes é geralmente adequado à aplicações grandes.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.

iClientContext: Variável SyncAnywhere.SyaContext.MaxAllocSize : Tamanho máximo (em bytes) do bloco de dados que será

compactado. O default é 30000 bytes, mas para equipamentos com pouca memória estevalor deve ser muito mais baixo, em torno de 500 bytes quando a aplicação executada égrande ou até 5000 bytes se a aplicação for pequena.

2.5.3.5 SyncAnywhere.SetCreatorID

Public Declare Function SetCreatorID(ByVal iRef as Integer, ByVal

iClientContext as Long, ByVal CrID as String) as Long

Comentários

Configura o CreatorID que será usado para os arquivos compactados.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.CrID: O CreatorID, com exatamente quatro caracteres.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

Page 122: Sync Anywhere

SyncAnywhere v1.22119

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.5.3.6 SyncAnywhere.PackDatabase

Public Declare Function PackDatabase(ByVal iRef as Integer, ByValiClientContext as Long, ByVal DBDest as String, ByVal DBSource as String,ByVal MaxBlockSize as Integer) as Long

Comentários

Compacta o banco de dados informado em DBSource, no banco de dadosinformado em DBDest.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.DBDest: Nome do banco de dados destino, onde será compactado o banco de

dados de origem. Atenção: O banco de dados destino deve ser apagado antes dechamar esta função pela primeira vez. As chamadas sucessivas à esta função

adicionam bancos de dados compactados à DBDest, portanto na primeira vez que usaresta função, certifique-se que ele não exista, para que a compactação inicie em umbanco de dados novo.

DBSource: Banco de dados origem, que será compactado dentro de DBDest.MaxBlockSize: Tamanho máximo do registro que será gerado no banco de dados

DBDest. Este valor normalmente deve ser em torno de 5000, que representa 5000 bytesem cada registro e pode ser configurado em função da qualidade de transmissão da linha

telefônica ou celular. Há locais onde é melhor que este valor seja menor, em torno de1000, para minimizar erros na transmissão. O tamanho mínimo é 50 bytes e o máximo30000.

Observação importante: para os modelos M100, Zire e outros que temmemória igual ou inferior a 2MB, este parâmetro não poderá ser maior que2500 bytes, ou retornará o erro appErrInvalidBlockSize. Estes modelos temmemória "Heap" (memória dinâmica liberada pelo PalmOS) extremamente

limitada e as alocações de memória internas necessárias para compactaçãopodem falhar se o valor for maior que 2500 bytes. Se o Banco de Dados tiverque ser descompactado em equipamentos deste tipo, não se esqueça deconfigurar o tamanho do bloco de compactação com as funçõesSyncAnywhereSetPackDataBlock no Palm e PackSetMaxDataBlock no Servidor.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.7 SyncAnywhere.GetDBCount

Public Declare Function GetDBCount(ByVal iRef as Integer, ByVal iClientContextas Long, ByVal DBSource as String, ByRef DBCount as Integer) as Long

Comentários

Page 123: Sync Anywhere

Cliente Palm 120

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Recupera o número de bancos de dados compactados dentro do bancoespecificado no parâmetro DBSource, na variável informada no parâmetro DBCount. Onúmero de bancos de dados compactados só pode ser recuperado dos PDBsgerados pelo SyncAnywhere a partir da versão 1.17.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.DBSource: O nome do banco de dados compactado pelo SyncAnywhere.DBCount: Variável do tipo Integer para receber o número de bancos de dados.

Retorno

ZERO indica que houve um erro na recuperação do número de bancos de dadoscompactados ou que o banco de dados não foi gerado com o SyncAnywhere versão 1.17ou superior. Maior que ZERO indica o número de bancos compactados dentro do bancoinformado.

2.5.3.8 SyncAnywhere.GetDBName

Public Declare Function GetDBName(ByVal iRef as Integer, ByVal iClientContextas Long, ByVal DBSource as String, ByVal Indx as Integer, ByRef DBName asString) as Long

Comentários

Recupera o nome de bancos de dados compactado dentro do banco especificadono parâmetro DBSource, na variável informada no parâmetro DBName , de acordo com

o índice do banco informado no parâmetro Indx. O nome dos bancos de dadoscompactados só podem ser recuperados dos PDBs gerados pelo SyncAnywherea partir da versão 1.17.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.

DBSource: O nome do banco de dados compactado com o SyncAnywhere.Indx: O índice do banco de dados. O primeiro banco de dados compactado tem

índice ZERO. Para saber o número de bancos de dados compactados, utilize a funçãoSyncAnywhere.GetDBCount .

DBName: O nome do banco de dados compactado é retornado neste parâmetro.Atenção: Este parâmetro DEVE SER uma variável String previamente preenchidacom no mínimo 32 espaços. Se você não preparar a variável com os 32 espaços,poderá causar um erro na sua aplicação e Reset no Palm. Use a função Space do

HB++ para reservar os espaços.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 124: Sync Anywhere

SyncAnywhere v1.22121

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.5.3.9 SyncAnywhere.CheckDatabase

Public Declare Function CheckDatabase(ByVal iRef as Integer, ByValiClientContext as Long, ByVal SourceDB as String) as Long

Comentários

Verifica a estrutura de um banco compactado gerado pelo SyncAnywhere. Afunção verifica a integridade do número de registros no banco e CheckSum (sehabilitado).

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.DBSource: O nome do banco de dados compactado com o SyncAnywhere.

Retorno

ZERO indica que o PDB está íntegro na sua estrutura.

UM indica que o PDB está íntegro na sua estrutura, mas o CheckSum estádesabilitado, portanto ainda pode haver erro nos registros transferidos.

> UM é o código de erro da verificação do PDB.

2.5.3.10 SyncAnywhere.UnpackDatabase

Public Declare Function UnpackDatabase(ByVal iRef as Integer, ByValiClientContext as Long, ByVal DBSource as String) As Long

Comentários

Descompacta os bancos de dados para a memória do Palm. Atenção: Você deve

apagar os bancos de dados que serão descompactados antes que eles sejamdescompactados por esta função ou os registros serão adicionados aosregistros dos bancos de dados se já existirem.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.

DBSource: O nome do banco de dados compactado com o SyncAnywhere.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 125: Sync Anywhere

Cliente Palm 122

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.5.3.11 SyncAnywhere.UnpackOneDB

Public Declare Function UnpackOneDB(ByVal iRef as Integer, ByValiClientContext as Long, ByVal DBSource as String, ByVal DBName as String) asLong

Comentários

Descompacta um único banco de dados para a memória do Palm. Atenção: Vocêdeve apagar o banco de dados que será descompactado antes que eles seja

descompactado por esta função ou os registros serão adicionados aos registrosdo banco de dados.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.DBSource: O nome do banco de dados compactado com o SyncAnywhere.

DBName: O nome do banco de dados que será extraído do banco compactado.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.12 SyncAnywhere.UnpackApplication

Public Declare Function UnpackApplication(ByVal iRef as Integer, ByValiClientContext as Long, ByVal DBSource as String) as Long

Comentários

Descompacta a aplicação compactada em um Banco de Dados Palm (PDB) para amemória do Palm. Atenção: Você deve apagar a aplicação que será

descompactada antes que ela seja descompactada por esta função ou seráretornado um código de erro.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.DBSource: O nome do banco de dados que contém a aplicação compactada com

o SyncAnywhere.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 126: Sync Anywhere

SyncAnywhere v1.22123

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.5.3.13 SyncAnywhere.NetLibOpen

Public Declare Function NetLibOpen(ByVal iRef as Integer, ByVal iClientContextas Long) as Long

Comentários

Abre a biblioteca de comunicação do Palm. Esta função deve ser chamada antesde qualquer outra função de comunicação.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

2.5.3.14 SyncAnywhere.NetLibClose

Public Declare Function NetLibClose(ByVal iRef as Integer, ByVal iClientContextas Long) as Long

Comentários

Fecha a biblioteca de comunicação do Palm. Esta função deve ser chamadaquando a comunicação não for mais necessária, geralmente a última função a serchamada no processo de comunicação.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.

iClientContext: Variável SyncAnywhere.SyaContext.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.15 SyncAnywhere.ModemDetect

Public Declare Function ModemDetect(ByVal iRef as Integer, ByValiClientContext as Long) as Long

Comentários

Detecta se um Modem ou Celular (via cabo serial) está conectado ao Palm.

Page 127: Sync Anywhere

Cliente Palm 124

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.16 SyncAnywhere.Dial

Public Declare Function Dial(ByVal iRef as Integer, ByVal iClientContext as

Long, ByVal Phone as String, ByVal Pulse as Integer, ByVal UserName as String,ByVal Password as String) as Long

Comentários

Disca para um servidor de comunicação usando o modem acoplado ao Palm(PalmModem ou Celular via cabo serial).

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.Phone: Número do telefone para discagem.Pulse: 1 para discagem por Pulso ou ZERO para discagem por Tom.Username: Nome do usuário para validação no servidor de comunicação

(RAS/Internet).

Password: Senha de acesso do usuário.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.17 SyncAnywhere.DialWireless

Public Declare Function DialWireless(ByVal iRef as Integer, ByVal iClientContextas Long, ByVal Connection as String, ByVal Phone as String, ByVal UserName asString, ByVal Password as String, ByVal PrimaryDNS as String, ByVal Script asString) as Long

Comentários

Disca para um servidor de comunicação usando uma Conexão predeterminada.Esta função pode ser usada para discagem por modem ou celular infravermelho ouBluetooth.

Parâmetros

Page 128: Sync Anywhere

SyncAnywhere v1.22125

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.Connection: Nome da Conexão preconfigurada na aplicação Prefs , opção

Connection (Conexões).Phone: Número do telefone.

Username: Nome do usuário para validação no servidor de comunicação(RAS/Internet).

Password: Senha de acesso do usuário.PrimaryDNS : Endereço IP do Servidor DNS, exemplo '222.111.22.11'.Script: Texto do Script para conexão. Caso um Script não seja necessário, use

uma String vazia. Para informar um Script neste parâmetro, veja os comentários maisabaixo.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Script para conexão

Segundo a documentação da API do PalmOS, o Script é muito rígido, se um Script comsintaxe incorreta for informado, os resultados serão imprevisíveis. O formato do Script éuma sequência de Strings terminadas em ZERO, com um ZERO extra no final detodas as Strings, exemplo:

s go PPP#0's ^N#0#0

No exemplo acima temos um comando Send, terminado em ZERO, outro comando Send,

terminado em ZERO e um ZERO indicando o final do Script.

Comandos aceitos no Script

Função Comando Parâmetro Exemplo

Send s String s go PPP

Wait For w String s password:

Delay d Número de segundos s 1

Get IP g g

Prompt a String a Digite Nome:

Wait for Prompt f String f ID:

Send CR s String s ^N

Send UserID s String s nomeusuario

Send Password s String s senha

OBS: DEVE HAVER APENAS UM ÚNICO ESPAÇO ENTRE O COMANDO E OPARÂMETRO.

Page 129: Sync Anywhere

Cliente Palm 126

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.5.3.18 SyncAnywhere.OpenActiveService

Public Declare Function OpenActiveService(ByVal iRef as Integer, ByValiClientContext as Long) as Long

Comentários

Inicia o serviço selecionado no Prefs/Network. Esta função é útil quando você játem o serviço configurado ou quando o serviço requer configurações especiais comocomunicação IR (Celular IR), Bluetooth, WiFi, ou necessita configurar scripts.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.19 SyncAnywhere.OpenService

Public Declare Function OpenService(ByVal iRef as Integer, ByVal iClientContextas Long, ByVal ServiceName as String) as Long

Comentários

Inicia um serviço já configurado no Prefs/Network. Esta função é útil quando vocêjá tem o serviço configurado ou quando o serviço requer configurações especiais comocomunicação IR (Celular IR), Bluetooth, WiFi, ou necessita configurar scripts.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.ServiceName: Nome do Serviço criado no Prefs/Network.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.20 SyncAnywhere.Hangup

Public Declare Function Hangup(ByVal iRef as Integer, ByVal iClientContext asLong) as Long

Comentários

Page 130: Sync Anywhere

SyncAnywhere v1.22127

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Desconecta do servidor de comunicação, conectado pela funçãoSyncAnywhereDial ou pela função SyncAnywhereOpenService .

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.21 SyncAnywhere.FTPPassiveModeOn

Public Declare Function FTPPassiveModeOn(ByVal iRef as Integer, ByValiClientContext as Long) as Long

Comentários

Configura o modo "PASV" (FTP PASSIVO) na conexão FTP (default no

SyncAnywhere).

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.22 SyncAnywhere.FTPPassiveModeOff

Public Declare Function FTPPassiveModeOff(ByVal iRef as Integer, ByValiClientContext as Long) as Long

Comentários

Configura o modo não passivo (FTP ATIVO) na conexão FTP.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.

iClientContext: Variável SyncAnywhere.SyaContext.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 131: Sync Anywhere

Cliente Palm 128

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.5.3.23 SyncAnywhere.SetTCPDelay

Public Declare Function SetTCPDelay(ByVal iRef as Integer, ByValiClientContext as Long, ByVal Delay as Integer) as Long

Comentários

Configura um tempo de espera entre os envios e recebimentos de blocos de dadosde/para o Servidor FTP. Esta função é importante quando as conexões são notoriamentelentas, sensíveis e suscetíveis à quedas como conexões via celular e principalmente por

infravermelho.

Como regra, quanto maior o tamanho do bloco utilizado para compactar o bancode dados através da função SyncAnywherePackDatabase, maior deve ser o tempo deespera passado nesta função em conexões lentas, principalmente infravermelho. Comoparâmetro, em testes realizados em conexões IR com média qualidade, blocos de 500bytes compactados podem ser utilizados com o parâmetro Delay nesta funçãoconfigurado para 3 (300ms). Em conexões com pior qualidade, o tempo deve ser

aumentado e o tamanho do bloco diminuído.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.Delay: Número de "décimos de segundo" para a espera. DEZ décimos de

segundo equivalem a UM segundo de atraso, portanto, para atrasar TRÊS décimos desegundo (300 ms) use SyncAnywhere.SetTCPDelay(Context, 3).

2.5.3.24 SyncAnywhere.FTPOpen

Public Declare Function FTPOpen(ByVal iRef as Integer, ByVal iClientContext asLong, ByVal HostName as String, ByVal Port as Integer, ByVal UserName asString, ByVal Password as String, ByVal Timeout as Integer) as Long

Comentários

Conecta-se a um servidor FTP. A conexão com um servidor de comunicação(RAS/Internet) já deve ter sido iniciada pela função SyncAnywhere.Dial ou por outromeio.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.Port: Porta para conexão no Servidor FTP. Se a porta for padrão, passe ZERO

neste parâmetro.HostName: O nome ou endereço IP do servidor FTP.Username: O nome do usuário para logon no servidor FTP.Password: A senha de acesso do usuário.

Timeout: Tempo (em segundos) para que as funções de comunicação utilizemcomo tempo limite de conexão. O default é 10 segundos. Há servidores que necessitam

Page 132: Sync Anywhere

SyncAnywhere v1.22129

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

de um tempo maior devido à sua lentidão ou quantidade maior de usuários conectados.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

2.5.3.25 SyncAnywhere.FTPClose

Public Declare Function FTPClose(ByVal iRef as Integer, ByVal iClientContext asLong) as Long

Comentários

Fecha a conexão com o servidor FTP. A conexão deve ter sido aberta pela funçãoSyncAnywhere.FTPOpen .

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.26 SyncAnywhere.FTPCd

Public Declare Function FTPCd(ByVal iRef as Integer, ByVal iClientContext as

Long, ByVal Path as String) as Long

Comentários

Muda o diretório no servidor FTP.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.Path: Caminho para o diretório no servidor FTP

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

Page 133: Sync Anywhere

Cliente Palm 130

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.5.3.27 SyncAnywhere.FTPMkd

Public Declare Function FTPMkd(ByVal iRef as Integer, ByVal iClientContext asLong, ByVal Name as String) as Long

Comentários

Cria o diretório no servidor FTP.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.Name: Nome do diretório a ser criado no servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

2.5.3.28 SyncAnywhere.FTPRmd

Public Declare Function FTPRmd(ByVal iRef as Integer, ByVal iClientContext asLong, ByVal Name as String) as Long

Comentários

Remove o diretório do servidor FTP.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.Name: Nome do diretório a ser removido no servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.29 SyncAnywhere.FTPDel

Public Declare Function FTPDel(ByVal iRef as Integer, ByVal iClientContext asLong, ByVal Name as String) as Long

Comentários

Remove o arquivo do servidor FTP.

Parâmetros

Page 134: Sync Anywhere

SyncAnywhere v1.22131

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.Name: Nome do arquivo a ser removido no servidor FTP.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.30 SyncAnywhere.FTPPut

Public Declare Function FTPPut(ByVal iRef as Integer, ByVal iClientContext asLong, ByVal DBName as String) as Long

Comentários

Envia um banco de dados ou aplicação do Palm para o servidor FTP.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.

iClientContext: Variável SyncAnywhere.SyaContext.DBName: Nome do banco de dados ou aplicação para ser enviada ao servidor. O

nome não deve conter extensão pois ela será colocada automaticamente (.PDB/.PRC)dependendo do que estiver sendo enviado. Atenção: o nome do banco de dados écase-sensitive.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.31 SyncAnywhere.FTPGet

Public Declare Function FTPGet(ByVal iRef as Integer, ByVal iClientContext asLong, ByVal Name as String) as Long

Comentários

Recebe um banco de dados ou aplicação do servidor FTP.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.

Name: Nome do banco de dados ou aplicação para ser recebida do servidor. Onome deve conter a extensão (.PDB/.PRC) dependendo do que estiver sendo recuperado.Atenção: alguns servidores FTP exigem que os nomes de arquivo sejamexatamente como estão armazenados (case-sensitive) .

Retorno

Page 135: Sync Anywhere

Cliente Palm 132

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.32 SyncAnywhere.FTPRename

Public Declare Function FTPRename(ByVal iRef as Integer, ByVal iClientContextas Long, ByVal OldName as String, ByVal NewName as String) as Long

Comentários

Renomeia um banco de dados ou aplicação no servidor FTP.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.OldName: Nome do banco de dados ou aplicação para ser renomeada no

servidor. O nome deve conter a extensão (.PDB/.PRC) dependendo do que estiver sendorenomeado. Atenção: alguns servidores FTP exigem que os nomes de arquivosejam exatamente como estão armazenados (case-sensitive).

NewName: Novo nome do arquivo no servidor.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.33 SyncAnywhere.FTPGetLastResponse

Public Declare Function FTPGetLastResponse(ByVal iRef as Integer, ByVal

iClientContext as Long, ByRef Response as String) as Long

Comentários

Obtém o texto da última resposta do servidor FTP.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.Response: Última mensagem de resposta do servidor FTP. Este texto é

recuperado diretamente o servidor FTP, portanto a mensagem é do próprio servidor.Atenção: Este parâmetro DEVE SER uma variável String previamente preenchidacom 255 espaços. Se você não preparar a variável com os 255 espaços, poderácausar um erro na sua aplicação e Reset no Palm. Use a função Space do HB++

para reservar os espaços.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 136: Sync Anywhere

SyncAnywhere v1.22133

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.5.3.34 SyncAnywhere.FTPSetServerType

Public Declare Function FTPSetServerType(ByVal iRef as Integer, ByValiClientContext as Long, ByVal ServerType as Integer) as Long

Comentários

Configura o tipo de listagem de diretório (comando DIR) retornada pelo servidorFTP. O parâmetro ServerType pode ser configurado como ZERO para retorno padrãoUnix/Linux e UM para retorno padrão Windows 2000.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.ServerType: ZERO para retorno padrão Unix/Linux e UM para

retorno padrão Windows 2000.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

2.5.3.35 SyncAnywhere.FTPDir

Public Declare Function FTPDir(ByVal iRef as Integer, ByVal iClientContext as

Long) as Long

Comentários

Obtém a listagem dos arquivos do diretório corrente no Servidor FTP. Estaoperação não apresenta os arquivos no formulário, obtém a lista para uso posterior pelasfunções SyncAnywhere.FTPGetFileCount, SyncAnywhere.FTPGetFileName,SyncAnywhere.FTPFileExists e SyncAnywhere.FTPDirectoryExists.

SyncAnywhereFTPDir não é chamada automaticamente ao se conectar ao ServidorFTP e na mudança de diretório no Servidor para otimizar a transmissão. Fica a critério dodesenvolvedor obter ou não a lista de arquivos, através da utilização ou não destafunção.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

Page 137: Sync Anywhere

Cliente Palm 134

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

' Obtém a listagem dos arquivos Do diretório ' corrente no Servidor Erro = SyncAnywhere.FTPDir(SyncAnywhere.SyaRefNum, SyncAnywhere.SyaContext ) If Erro>0 Then ' Erro no comando SyncAnywhere.FTPDIR

Exit Sub End If

' Recupera o número de arquivos no diretório ' corrente no Servidor SyncAnywhere.FTPGetFileCount(SyncAnywhere.SyaRefNum,SyncAnywhere.SyaContext, FileCount)

' Mostra o número de arquivos MsgBox "Número de Arquivos no Servidor: " & CStr(FileCount)

' Mostra os nomes dos arquivos For x=0 to FileCount-1 Nome = Space(200) Erro = SyncAnywhere.FTPGetFileName(SyncAnywhere.SyaRefNum,

SyncAnywhere.SyaContext , x, Nome)

If Erro=0 Then MsgBox Nome End If Next

' Verifica se o arquivo existe no Servidor

SyncAnywhere.FTPFileExists(SyncAnywhere.SyaRefNum, SyncAnywhere.SyaContext ,"Test.pdb", Exists)

' Indica se o arquivo existe If Exists>0 Then MsgBox "Arquivo existe no Servidor!" Else MsgBox "Arquivo não existe no Servidor!"

End If

' Verifica se o diretório existe no Servidor SyncAnywhere.FTPDirExists(SyncAnywhere.SyaRefNum, SyncAnywhere.SyaContext ,"dados", Exists)

' Indica se o diretório existe If Exists>0 Then

MsgBox "Diretório existe no Servidor!" Else MsgBox "Diretório não existe no Servidor!" End If

Page 138: Sync Anywhere

SyncAnywhere v1.22135

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.5.3.36 SyncAnywhere.FTPGetFileCount

Public Declare Function FTPGetFileCount(ByVal iRef as Integer, ByValiClientContext as Long, ByRef FileCount as Integer) as Long

Comentários

Recupera o número de arquivos no diretório corrente do Servidor FTP. Atenção:esta função só funciona se o comando SyncAnywhere.FTPDir for chamado antes pararecuperar a lista de arquivos do Servidor FTP.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.FileCount: Variável do tipo Integer para receber o número de arquivos.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

Consulte a função SyncAnywhere.FTPDir para exemplo de utilização desta função.

2.5.3.37 SyncAnywhere.FTPFileExists

Public Declare Function FTPFileExists(ByVal iRef as Integer, ByValiClientContext as Long, ByVal FileName as String, ByRef FileExists as Integer)as Long

Comentários

Verifica se o arquivo existe no diretório corrente do Servidor FTP. Atenção: estafunção só funciona se o comando SyncAnywhere.FTPDir for chamado antes pararecuperar a lista de arquivos do Servidor FTP.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.

FileName: Nome do arquivo.FileExists: Variável do tipo Integer para receber a resposta. ZERO indica que o

arquivo não existe no diretório corrente do Servidor; UM indica que o arquivo existe.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 139: Sync Anywhere

Cliente Palm 136

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Exemplo de utilização

Consulte a função SyncAnywhere.FTPDir para exemplo de utilização desta função.

2.5.3.38 SyncAnywhere.FTPDirExists

Public Declare Function FTPDirExists(ByVal iRef as Integer, ByValiClientContext as Long, ByVal DirName as String, ByRef DirExists as Integer) asLong

Comentários

Verifica se o diretório existe no diretório corrente do Servidor FTP. Atenção: esta

função só funciona se o comando SyncAnywhere.FTPDir for chamado antes pararecuperar a lista de arquivos do Servidor FTP.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.DirName: Nome do diretório.

DirExists: Variável do tipo Integer para receber a resposta. ZERO indica que odiretório não existe no diretório corrente do Servidor; UM indica que o diretório existe.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

Consulte a função SyncAnywhere.FTPDir para exemplo de utilização desta função.

2.5.3.39 SyncAnywhere.FTPGetFileName

Public Declare Function FTPGetFileName(ByVal iRef as Integer, ByValiClientContext as Long, ByVal FileIndex as Integer, ByRef FileName as String)as Long

Comentários

Recupera o nome do arquivo no diretório do Servidor FTP segundo o índiceespecificado. Atenção: esta função só funciona se o comando SyncAnywhere.FTPDir forchamado antes para recuperar a lista de arquivos do Servidor FTP.

Parâmetros

iRef: Variável SyncAnywhere.SyaRefNum.iClientContext: Variável SyncAnywhere.SyaContext.FileIndex: Variável do tipo Short para indicar o índice do arquivo na lista. O

primeiro índice é ZERO.

Page 140: Sync Anywhere

SyncAnywhere v1.22137

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

FileName: O nome do arquivo será retornado neste parâmetro. Atenção: Esteparâmetro DEVE SER uma variável String previamente preenchida com nomínimo 100 espaços. Se você não preparar a variável com pelo menos 100espaços, poderá causar um erro na sua aplicação e Reset no Palm. Use a funçãoSpace do HB++ para reservar os espaços.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Exemplo de utilização

Consulte a função SyncAnywhere.FTPDir para exemplo de utilização desta função.

Page 141: Sync Anywhere

Cliente Palm 138

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

2.6 Códigos de Erro do SyncAnywhere no Palm

Compactação e Descompactação

Identificação do Erro Código Descrição do Erro

appErrSourceDBNotFound 32768 Banco de dados origem não foi encontrado

appErrCreateDestDB 32769 Erro de criação do banco de dados destino

appErrDestDBOpen 32770 Erro de abertura do banco de dadosdestino

appErrDestDBFull 32771 Banco de dados destino não pode maisreceber registros

appErrSourceDBOpen 32772 Erro de abertura no banco de dadosorigem

appErrSourceDBInfo 32773 Não foi possível obter a informação do

banco origem

appErrGettingDestRecord 32774 Erro de recuperação de registro do bancodestino

appErrCreatingRecord 32775 Erro de criação do registro no bancodestino

appErrResizingRecord 32776 Erro de redimensionamento do registro nobanco destino

appErrLockingDestRecord 32777 Erro de acesso ao registro no bancodestino

appErrGettingSourceRecord 32778 Erro obtendo registro no banco origem

appErrLockingSourceRecord 32779 Erro acessando registro no banco origem

appErrMemoryAllocation 32780 Erro de alocação de memória para oregistro no banco destino

appErrGettingRecordInfo 32781 Erro recuperando informações do registrono banco origem

appErrPackingData_MEMERROR 32782 Erro compactando dados (Z_MEM_ERROR)

appErrPackingData_BUFERROR 32783 Erro compactando dados (Z_BUF_ERROR)

appErrPackingData_STREAMERROR 32784 Erro compactando dados(Z_STREAM_ERROR)

Page 142: Sync Anywhere

SyncAnywhere v1.22139

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

appErrPackingData 32785 Erro compactando dados (outro)

appErrRecordTooBig 32786 O registro é muito grande para ser

armazenado

appErrInvalidBlockSize 32787 Tamanho do bloco não é válido. Mínimo50, máximo 30000. Para Palms com 2MBou menos de memória, o valor máximopermitido é 2500

appErrUnpackNoRecords 32788 Não há registros no banco de dadoscompactado

appErrNotSyncAnywhereDB 32789 Banco de dados não foi compactado peloSyncAnywhere

appErrUnpackingData_MEMERROR 32790 Erro descompactando dados(Z_MEM_ERROR). Se você estádescompactando os dados em umequipamento com 2MB ou menos dememória, é necessário diminuir otamanho do bloco na compactação noServidor ou no Palm. Veja as funçõesSyncAnywhereSetPackDataBlock no Palm

e PackSetMaxDataBlock no Servidor

appErrUnpackingData_BUFERROR 32791 Erro descompactando dados(Z_BUF_ERROR)

appErrUnpackingData_STREAMERROR 32792 Erro descompactando dados(Z_STREAM_ERROR)

appErrUnpackingData 32793 Erro descompactando dados (outro)

appErrGettingMoreData 32794 Erro ao obter dados para descompactação

appErrAppInfoTooBig 32795 AppInfo tem mais de é maior que otamanho limite do bloco (em bytes)

appErrSortInfoTooBig 32796 SortInfo tem mais de é maior que otamanho limite do bloco (em bytes)

appErrBlockSizeIsInvalid 32797 Tamanho do bloco não é suportado nestaplataforma

appErrDataBlockSizeTooBig 32798 Tamanho do bloco de dados compactados

é não é suportado neste plataforma. Use afunção PackSetMaxDataBlock noServidor com um valor máximo de 2500.

appErrDestAppInfo 32799 Erro ao recuperar a AppInfoArea do bancode dados compactado

appErrNoDBInfo 32800 Banco de dados informado não contéminformação dos bancos compactados.Verifique se o banco compactado foigerado com o SyncAnywhere a partir daversão 1.17

appErrInvalidIndex 32801 O índice informado para recuperação donome do banco de dados compactado nãoé válido. O índice começa em ZERO para o

primeiro banco e vai até o número debancos menos um.

Page 143: Sync Anywhere

Cliente Palm 140

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

appErrDBNotFound 32802 Banco de dados não foi encontrado nobanco compactado.

appErrInvalidCreatorID 32803 CreatorID não é válido; deve ter 4caracteres.

appErrCheckSum 32804 Erro de verificação do arquivocompactado. A transferência do arquivodo Servidor FTP deve ter sido

interrompida ou o arquivo estácorrompido. Retransmita o arquivocompactado.

appErrSourceAppInfo 32805 Erro ao recuperar a DatabaseInfo doarquivo compactado, o arquivo deve estar

corrompido.

appErrApplicationExists 32806 A Aplicação já existe na memória do Palm.Você deve apaga-la antes dedescompacta-la.

appErrCreateApp 32807 Não foi possível criar a aplicação namemória do Palm. Verifique se a memóriaestá cheia ou se o Palm está bloqueando aaplicação. Um Reset pode funcionar.

appErrDestAppOpen 32808 Erro de abertura da aplicação.

appErrGettingResource 32809 Erro ao obter Resource.

appErrResizingResource 32810 Erro ao redimensionar Resource.

appErrCreatingResource 32811 Erro ao criar Resource.

appErrLockingResource 32812 Erro ao bloquear Resource para uso.

appErrNumberOfRecords 32813 Nem todos os registros foramtransferidos, banco de dados estácorrompido

Page 144: Sync Anywhere

SyncAnywhere v1.22141

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

FTP

Identificação do Erro Código Descrição do Erro

ftpErrConnection 33768 Não foi possível conectar ao servidor,verifique IP/Porta

ftpErrReply 33769 Não foi possível obter resposta doservidor, verifique a conexão

ftpErrAuthentication 33770 Erro de autenticação

ftpErrNotOpen 33771 Comunicação FTP não foi previamenteaberta

ftpErrMemoryAllocation 33772 Erro de alocação de memória

ftpErrConnectionClose 33773 Conexão FTP está fechada

ftpErrSocketReadError 33774 Erro de leitura do Socket

ftpErrTimeout 33775 Conexão FTP estourou tempo limite detimeout

ftpErrLoginRequired 33776 Informações de login (User/Pass) énecessário

ftpErrInvalidPath 33777 Diretório não é válido

ftpErrPathDoesNotExist 33778 Diretório não existe no servidor FTP

ftpErrInvalidName 33779 Nome inválido

ftpErrDirectoryExists 33780 Diretório já existe no servidor FTP

ftpErrFailedCreatingDir 33781 Falha de criação do diretório no servidorFTP

ftpErrDirDoesNotExist 33782 Diretório não existe no servidor FTP

ftpErrFailedRemovingDir 33783 Falha ao remover diretório do servidor

FTP

ftpErrDBDoesNotExit 33784 Banco de dados não existe

ftpErrBinaryMode 33785 Erro ao entrar no modo binário

ftpErrSocketCreate 33786 Erro de criação no Socket

ftpErrSocketBind 33787 Erro ao vincular o Socket

ftpErrSocketListen 33788 Erro ao esperar por conexões

ftpErrSocketGetAddr 33789 Erro ao obter o endereço do Socket

ftpErrPortCmd 33790 Erro no comando PORT no servidor FTP

ftpErrGettingDBAttr 33791 Erro ao recuperar os atributos do bancode dados

ftpErrStorCmd 33792 Erro ao enviar o comando STOR aoservidor FTP

ftpErrSocketAccept 33793 Erro ao aceitar o Socket

ftpErrOpenDB 33794 Erro de abertura no banco de dados

ftpErrGettingResource 33795 Erro ao recuperar Resource da aplicação

ftpErrGettingAppInfo 33796 Erro ao recuperar AppInfoArea

ftpErrGettingSortInfo 33797 Erro ao recuperar SortInfoArea

ftpErrGettingRecord 33798 Erro recuperando o registro do banco dedados

Page 145: Sync Anywhere

Cliente Palm 142

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

ftpErrSendingData 33799 Erro enviando dados ao servidor FTP.Verifique se conexão caiu ou se vocêutilizou o comandoSyncAnywhereFTPClose acidentalmenteem alguma parte do código

ftpErrFileDoesNotExit 33800 Arquivo não existe no servidor FTP

ftpErrReceivingData 33801 Erro ao receber dados o servidor FTP.Verifique se conexão caiu ou se vocêutilizou o comandoSyncAnywhereFTPClose acidentalmenteem alguma parte do código

ftpErrCreatingDB 33802 Erro ao criar banco de dados no Palm

ftpErrSettingDBAttr 33803 Erro configurando atributos do banco dedados

ftpErrCreatingResource 33804 Erro ao criar Resource

ftpErrGettingResIndex 33805 Erro ao recuperar o índice do Resource

ftpErrBadFile 33806 O arquivo está corrompido no servidorFTP

ftpErrCreatingRecord 33807 Erro ao criar registro

ftpErrResizingResource 33808 Erro ao redimensionar resource

ftpErrResizingRecord 33809 Erro ao redimensionar registro

ftpErrPasvCmd 33810 Erro de envio do comando PASV aoservidor FTP

ftpErrSocketConnect 33811 Erro de conexão ao servidor FTP. Verifique

se seu Servidor FTP está sob um Firewallou sob uma rede cuja porta do Servidor éredirecionada por outro equipamento. Seeste for o caso, antes de conectar aoServidor FTP com SyncAnywhereFTPOpen,utilize o comandoSyncAnywhereFTPPassiveModeOff paraque o Servidor FTP faça a conexão no

Palm.

ftpErrPut 33812 Erro no comando PUT. Verifique se

conexão caiu. Geralmente este erro édevido a problemas de linha telefônica outimeout no Servidor FTP. Se o problemafor frequente, use o comandoSyncAnywhereSetTCPDelay antes de seconectar ao servidor FTP. O valor doatraso pode ser de 1 a 5, acima disso sóse o servidor ou a qualidade da

comunicação for muito ruim, pois acomunicação ficará mais lenta, apesar depossível. Utilize este comando emcombinação com a redução do tamanhodos blocos do banco compactado, porexemplo blocos de 300 a 1000 bytes.

Page 146: Sync Anywhere

SyncAnywhere v1.22143

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

frpErrGet 33813 Erro no comando GET. Verifique seconexão caiu. Veja explicação no erro33812 acima

frpErrSendingUsername 33814 Erro de envio do nome do usuário aoservidor FTP

ftpErrSendingPassword 33815 Erro de envio da senha do usuário aoservidor FTP

ftpErrFileDoesNotExist 33816 Arquivo não existe no Servidor

ftpErrFailedRemovingFile 33817 Falha ao remover o arquivo do Servidor

ftpErrFailedRenamingFile 33818 Falha ao renomear o arquivo no Servidor

ftpErrDir 33819 Erro na execução do comando DIR noServidor

ftpErrDirWasNotCalled 33820 Você deve executar o comandoSyncAnywhereFTPDir antes de tentarrecuperar informações sobre arquivos

Comunicação do Palm

Identificação do Erro Código Descrição do Erro

netErrNetLibNotFound 34768 Net.Lib não foi encontrada no Palm

netErrNetLibNotOpen 34769 NetLib não foi aberta comSyncAnywhereNetLibOpen

netErrNetLibNotActive 34770 Net.Lib não está ativa

netErrNetLibActive 34771 A comunicação já está aberta

netErrGettingInstance 34772 Erro obtendo a instância da interface

netErrOpeningNetLib 34773 Erro abrindo o serviço

netErrNoInterfaceFound 34774 Nenhuma interface foi encontrada

netErrCancelled 34775 Cancelado pelo usuário

netErrNoAnswer 34776 Número discado não atendeu

netErrAuthentication 34777 Erro de autenticação

netErrFailure 34778 Faha de conexão no serviço

netErrRetrievingIndex 34779 Erro recuperando o índice do serviço

netErrOpenPalmPort 34780 Erro abrindo a porta serial do Palm

netErrModemNotFound 34781 Modem não foi encontrado

netErrReceivingModemData 34782 Erro ao receber dados do Modem

netErrServiceDoesNotExit 34783 Serviço especificado não existe

Page 147: Sync Anywhere

Cliente Palm 144

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Serviços de Rede

Identificação do Erro Código Descrição do Erro

svcErrNetworkPanelNotFound 35768 Aplicação Prefs/Network não foiencontrada

svcErrReceivingList 35769 Erro ao receber a lista de serviços doNetwork Panel

svcErrRetrActiveService 35770 Erro ao recuperar o serviço ativo doNetwork Panel

Mensagens do Sistema

Identificação Código Descrição

appMsgNoCheckSum 39000 O banco de dados foi verificado mas oCheckSum não foi utilizado nacompactação. Não representa um erro esim um aviso do sistema

Page 148: Sync Anywhere

Parte

III

Page 149: Sync Anywhere

Software no Servidor 146

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

3 Software no Servidor

3.1 Introdução

Mais uma característica importante no SyncAnywhere é a possibilidade decompactar e descompactar os bancos de dados do Palm no desktop, para que você possacoloca-los no servidor FTP e também que descompacte os bancos de dados provenientesdo Palm. Isto pode ser feito utilizando-se o Delphi 5, 6 ou 7 ou o Visual Basic.

3.2 Delphi

3.2.1 Instalação

Sob o diretório do SyncAnywhere\Delphi\Lib , há subdiretórios chamados D5,D6 e D7 para o Delphi 5, 6 e 7 respectivamente. Você deve acrescentar o diretóriosegundo sua versão do Delphi no campo Library Path, sob o menu Tools,Environment Options, Library. Não há necessidade de adicionar componentes.

Nas units onde você for utilizar as rotinas de compactação, você deve colocar aunit SyaPack na uses clause; onde for utilizar a rotina de descompactação, deve colocar

a unit SyaUnpack na uses clause.

3.2.2 Utilização

Para compactar dados, você deve ter os arquivos PDB já criados para poderutilizar como parâmetro das funções de compactação. Se você não sabe como criar PDBsdo Palm com o Delphi, conheça o produto PDBDataManager, também desenvolvido pela

Cialogica Tecnologia, no site www.cialogica.com.br.

A aplicação exemplo sob o diretório Delphi do SyncAnywhere mostra comoutilizar o SyncAnywhere para compactar e descompactar bancos de dados Palm.

Código para compactação, no botão Compacta da aplicação exemplo:

procedure TFrmPrincipal.BtCompactaClick(Sender: TObject);

var Err: Integer;begin // Inicia a compactação Err := PackStart(TxtDir.Text, 'PDBPack.pdb', 'PDBPack', 'PDBP'); if Err>0 then begin ShowMessage('Erro de início no processo de compactação!');

exit; end;

// Compacta os Arquivos PDB // A função PackDB encontra-se dentro da unit SyaPack

Page 150: Sync Anywhere

SyncAnywhere v1.22147

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

// Parâmetros // TxtDir.Text - Diretório onde os arquivos PDB a serem // compactados estão localizados // ProdutosDB.pdb e ClientesDB.pdb - São os arquivos PDB // a serem compactados

// 5000 - É o tamanho máximo em bytes de cada registro // compactado dentro do banco PDBPack // Você pode mudar este número em função da qualidade de // transmissão em sua // região. O número máximo é 30000. Valores maiores proporcionam // menos registros no banco de dados, mas podem ocasionar // problemas de transmissão em linhas com menor qualidade. Err := PackDB(TxtDir.Text, 'ClientesDB.pdb', 5000);

if Err>0 then begin ShowMessage('Erro compactando ProdutosDB.pdb: '+IntToStr(Err)); exit; end;

Err := PackDB(TxtDir.Text, 'ProdutosDB.pdb', 5000);

if Err>0 then begin ShowMessage('Erro compactando ProdutosDB.pdb: '+IntToStr(Err)); exit; end;

// Finaliza a compactação PackFinish;

ShowMessage('Fim de Compactação dos Arquivos PDB! Verifique o arquivo compactadono diretório informado.');end;

Código para descompactação, no botão Descompacta da aplicação exemplo:

procedure TFrmPrincipal.BtDescompactaClick(Sender: TObject);

var DirSource: String; Err: Integer;begin // Extrai o diretório onde está o Arquivo PDB Compactado DirSource := ExtractFilePath(TxtPDB.Text); DirSource := Copy(DirSource, 1, Length(DirSource)-1);

// Extrai os arquivos PDB inseridos no arquivo PDB Compactado // UnpackDB está contida na unit SyaUnpack que deve ser adicionada à 'usesclause' // Parâmetros: // DirSource - É o diretório onde está armazenado o arquivo PDB Compactado // ExtractFileName(TxtPDB.Text) - É o nome do arquivo PDB Compactado // ..\TestDB - É o local onde os arquivos serão Descompactados Err := UnpackDB(DirSource, ExtractFileName(TxtPDB.Text), '..\TestDB');

Page 151: Sync Anywhere

Software no Servidor 148

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

if Err>0 then begin ShowMessage('Erro de Descompactação: '+IntToStr(Err)); exit; end;

ShowMessage('Arquivos foram Descompactados com Sucesso! Verifique no diretórioinformado.');end;

ATENÇÃO: Quando for gerar arquivos compactados paraPalm M100 ou Zire ou qualquer outro modelo commemória igual ou inferior a 2MB, você deve utilizar afunção PackSetMaxDataBlock ANTES de usar a funçãoPackDB, passando como parâmetro o tamanho máximode 2500 Bytes (para aplicações grandes, use de 500 a1000 bytes), além disso, o parâmetro BlockSize dafunção PackDB deve também ter o tamanho máximo de2500 Bytes ou a operação de descompactação nestesmodelos de Palm poderá falhar por falta de memóriadinâmica (HEAP). Estes modelos tem memória limitada ea alocação frequentemente falha com blocos muitograndes de dados. Nos modelos mais novos, com 8MB dememória ou mais, a memória dinâmica é bem maior,portanto menos suscetível a falhas.

No botão Analisar PDBPack, há um código para encontrar os bancos de dados

que estão compactados dentro do arquivo PDB e também para descompactar apenas umdeles:

var Name, DirSource: String; Err, DBCount, x: Integer;begin // Extrai o diretório onde está o Arquivo PDB Compactado

DirSource := ExtractFilePath(TxtPDB.Text); DirSource := Copy(DirSource, 1, Length(DirSource)-1);

// Recupera o número de bancos no arquivo compactado Err := GetDBCount(DirSource, ExtractFileName(TxtPDB.Text), DBCount); if Err>0 then begin ShowMessage('Erro de processamento: '+IntToStr(Err));

exit; end;

ShowMessage('Número de Bancos no arquivo Compactado: '+IntToStr(DBCount));

Page 152: Sync Anywhere

SyncAnywhere v1.22149

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

// Apresenta os nomes dos bancos armazenados em PDBPack for x:=0 to DBCount-1 do begin Err := GetDBName(DirSource, ExtractFileName(TxtPDB.Text), x, Name); if Err>0 then

begin ShowMessage('Erro na recuperação do nome do banco: '+IntToStr(Err)); exit; end;

ShowMessage(Name); end;

// Extrai apenas um banco de dados do arquivo compactado Err := UnpackOneDB(DirSource, ExtractFileName(TxtPDB.Text), DirSource,'ClientesDB'); if Err>0 then begin ShowMessage('Erro de Descompactação: '+IntToStr(Err)); exit;

end;

// Teste foi completado com sucesso! ShowMessage('O arquivo foi descompactado com Sucesso!');end;

3.2.3 Funções no SyncAnywhere para o Delphi

3.2.3.1 PackSetMaxDataBlock

procedure PackSetMaxDataBlock(Size: Integer);

Unit

SyaPack

Comentários

Configura o tamanho máximo do bloco de dados que será usado paracompactação. Por default, o SyncAnywhere compacta blocos de 30000 bytes paraotimizar a taxa de compressão. Esta função deve ser usada quando o Palm que for

descompactar o arquivo seja M100, Zire ou outro com memória igual ou inferior a 2MB.QUANDO ESTIVER GERANDO ARQUIVOS COMPACTADOS PARA ESTES MODELOS,

O PARÂMETRO SIZE *NÃO DEVE* SER MAIOR QUE 2500 BYTES POR CAUSA DOTAMANHO DO TAMANHO DO "HEAP" (MEMÓRIA DINÂMICA DO PALMOS) QUE ÉDISPONIBILIZADA PARA MODELOS COM MEMÓRIA IGUAL OU INFERIOR A 2MB.

SE VOCÊ USAR UM VALOR MAIOR, A OPERAÇÃO DE DESCOMPACTAÇÃO NO PALMPODE FALHAR, RETORNANDO ERROS 32790 A 32793. PARA APLICAÇÕESGRANDES, O TAMANHO DEVE FICAR ENTRE 500 E 1000 BYTES.

Parâmetros

Page 153: Sync Anywhere

Software no Servidor 150

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Size: Configura o tamanho do bloco de dados que será compactado de cada vez.ATENTE PARA A OBSERVAÇÃO ACIMA NO CASO DE PALMS COM MEMÓRIA IGUALOU INFERIOR A 2MB.

3.2.3.2 PackSetCheckSum

procedure PackSetCheckSum(Enabled: Boolean);

Unit

SyaPack

Comentários

Habilita ou desabilita a gravação de bytes de verificação (CheckSum) no banco dedados compactado.

Parâmetros

Enabled: True, habilita CheckSum; False, desabilita.

3.2.3.3 PackStart

function PackStart(Directory, PDBFilename, DatabaseName, CreatorID: String):Integer;

Unit

SyaPack

Comentários

Informa ao SyncAnywhere que uma operação de compactação irá começar. Vocêdeve usar este comando antes de utilizar a função PackDB para compactar bancos dedados Palm.

Parâmetros

Directory: Diretório onde será gerado o arquivo PDB com os bancoscompactados

PDBFilename : Nome do arquivo PDB que será geradoDatabaseName: Nome do banco de dados PalmCreatorID: CreatorID que será associado ao arquivo PDB gerado

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

Page 154: Sync Anywhere

SyncAnywhere v1.22151

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

3.2.3.4 PackDB

function PackDB(DirSource: String; SourcePDB: String; BlockSize: Integer):Integer;

Unit

SyaPack

Comentários

Compacta um arquivo PDB. Antes de usar PackDB, é necessário iniciar o processode compactação através da chamada à função PackStart.

Parâmetros

DirSource: Diretório onde está localizado o arquivo PDB a ser compactadoSourcePDB: Nome do arquivo PDB a ser compactado

BlockSize: Tamanho máximo do registro que será gerado no arquivo PDBcompactado. Este valor normalmente deve ser em torno de 5000, que representa 5000bytes em cada registro e pode ser configurado em função da qualidade de transmissãoda linha telefônica ou celular. Há locais onde é melhor que este valor seja menor, emtorno de 1000, para minimizar erros na transmissão. O tamanho mínimo é 50 bytes e omáximo 30000.

OBSERVAÇÃO IMPORTANTE: QUANDO ESTIVER GERANDO ARQUIVOSCOMPACTADOS PARA PALMS COM MEMÓRIA IGUAL OU INFERIOR A 2MB, COMO

M100, ZIRE, ETC, ESTE VALOR *NÃO DEVE* SER MAIOR QUE 2500 BYTES PORCAUSA DO TAMANHO DO TAMANHO DO "HEAP" (MEMÓRIA DINÂMICA DOPALMOS) QUE É DISPONIBILIZADA PARA MODELOS COM MEMÓRIA IGUAL OUINFERIOR A 2MB. SE VOCÊ USAR UM VALOR MAIOR, A OPERAÇÃO DE

DESCOMPACTAÇÃO NO PALM PODE FALHAR, RETORNANDO ERROS 32790 A32793. PARA APLICAÇÕES GRANDES, O TAMANHO DEVE FICAR ENTRE 500 E1000 BYTES.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

3.2.3.5 PackFinish

function PackFinish: Integer;

Unit

SyaPack

Comentários

Finaliza a operação de compactação. Quando já tiver utilizado a função PackDB

Page 155: Sync Anywhere

Software no Servidor 152

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

para todos os arquivos PDB que deseja compactar, é necessário executar PackFinish parafinalizar a compactação.

Parâmetros

Nenhum

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

3.2.3.6 GetDBCount

function GetDBCount(DirSource: String; SourcePDB: String; var DBCount:Integer): Integer;

Unit

SyaUnpack

Comentários

Recupera o número de bancos de dados armazenados no arquivo compactado. Onúmero de bancos de dados no arquivo compactado só pode ser recuperado dosPDBs gerados pelo SyncAnywhere a partir da versão 1.17.

Parâmetros

DirSource: Diretório onde está localizado o arquivo PDB compactadoSourcePDB: Nome do arquivo PDB compactadoDBCount: Passe neste parâmetro uma variável do tipo Integer para ser

carregada com o número de bancos de dados que estão compactados dentro do arquivoPDB.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

3.2.3.7 GetDBName

function GetDBName(DirSource: String; SourcePDB: String; Indx: Integer; varName: String): Integer;

Unit

SyaUnpack

Comentários

Page 156: Sync Anywhere

SyncAnywhere v1.22153

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Recupera o nome do banco de dados no arquivo compactado, identificado peloparâmetro Indx. O número de bancos de dados no arquivo compactado só podeser recuperado dos PDBs gerados pelo SyncAnywhere a partir da versão 1.17.

Parâmetros

DirSource: Diretório onde está localizado o arquivo PDB compactadoSourcePDB: Nome do arquivo PDB compactadoIndx: Índice do banco de dados dentro do arquivo compactado. O primeiro banco

de dados tem índice ZERO.Name: Passe neste parâmetro uma variável do tipo String para ser carregada

com o nome do banco de dados.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

3.2.3.8 CheckDB

function CheckDB(DirSource: String; SourcePDB: String): Integer;

Unit

SyaUnpack

Comentários

Verifica a estrutura de um PDB compactado gerado pelo SyncAnywhere. A função

verifica a integridade do número de registros no banco e CheckSum (se habilitado).

Parâmetros

DirSource: Diretório onde está localizado o arquivo PDB compactadoSourcePDB: Nome do arquivo PDB compactado

Retorno

ZERO indica que o PDB está íntegro na sua estrutura.

UM indica que o PDB está íntegro na sua estrutura, mas o CheckSum estádesabilitado, portanto ainda pode haver erro nos registros transferidos.

> UM é o código de erro da verificação do PDB.

3.2.3.9 UnpackDB

function UnpackDB(DirSource: String; SourcePDB: String; DirDest: String):Integer;

Unit

Page 157: Sync Anywhere

Software no Servidor 154

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

SyaUnpack

Comentários

Descompacta um arquivo PDB gerado pelo SyncAnywhere no Palm ou no Desktop,

gravando todos os arquivos PDB que estão contidos nele no diretório indicado porDirDest.

Parâmetros

DirSource: Diretório onde está localizado o arquivo PDB compactadoSourcePDB: Nome do arquivo PDB compactadoDirDest: Diretório onde serão gravados os arquivos PDB que estão compactados

dentro do arquivo PDB.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

3.2.3.10 UnpackOneDB

function UnpackOneDB(DirSource: String; SourcePDB: String; DirDest: String;DBName: String): Integer;

Unit

SyaUnpack

Comentários

Descompacta apenas um banco de dados do arquivo compactado.

Parâmetros

DirSource: Diretório onde está localizado o arquivo PDB compactadoSourcePDB: Nome do arquivo PDB compactado

DirDest: Diretório onde serão gravados os arquivos PDB que estão compactadosdentro do arquivo PDB.

DBName: Nome do banco de dados que será descompactado.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indica

erro cujo código está descrito em uma seção mais adiante.

3.2.3.11 PackPRC

function PackPRC(DirSource: String; SourcePRC: String; DirDest, DestPDBFile,DestDBName, DestCreatorID: String; BlockSize: Integer; CheckSum: Boolean):Integer;

Page 158: Sync Anywhere

SyncAnywhere v1.22155

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Unit

SyaPackPRC

Comentários

Compacta uma aplicação Palm (PRC) em um banco de dados (PDB) paratransferencia ao Palm via FTP. Apenas uma aplicação pode ser compactada em um bancode dados e a aplicação não pode ser colocada junto com outros bancos de dados.

Parâmetros

DirSource: Diretório onde está localizado a aplicação (PRC)

SourcePRC: Nome do arquivo PRCDirDest: Diretório onde será gravado o arquivo PDB que com a aplicação

compactadaDestPDBFile: Nome do Arquivo PDB que será gerado com a aplicação

compactada. O nome deve terminar com a extensão ".PDB"DestDBName: Nome do Banco de Dados que será gerado com a aplicação

compactada. Este nome será usado no Palm para descompactar a aplicação. Atenção:

este não é o nome da aplicação. O nome da aplicação foi gerado pelacompilação do seu projeto em sua ferramenta de desenvolvimento

DestCreatorID : CreatorID do Banco de Dados contendo a aplicação compactadaBlockSize: Tamanho máximo do registro que será gerado no arquivo PDB

compactado. Este valor normalmente deve ser em torno de 5000, que representa 5000bytes em cada registro e pode ser configurado em função da qualidade de transmissãoda linha telefônica ou celular. Há locais onde é melhor que este valor seja menor, emtorno de 1000, para minimizar erros na transmissão. O tamanho mínimo é 50 bytes e o

máximo 30000.CheckSum: True, habilita CheckSum; False, desabilita

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

3.2.3.12 SetRecordUIDSupport

procedure PackSetCheckSum(Enabled: Boolean);

Unit

SyaGlobal

Comentários

Habilita a gravação do UniqueID de cada registro do banco de dados. O UniqueIDé uma informação não utilizada pela maioria das ferramentas, mas se por algum motivosua aplicação Palm usa esta informação, você precisa habilitar o uso com esta função.Por default, a gravação do UniqueID está desabilitada para economizar espaço nobanco de dados compactado gerado.

Page 159: Sync Anywhere

Software no Servidor 156

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Atenção:

- O uso desta função torna o SyncAnywhereincompatível com bancos de dados compactados sem o uso destafunção. Para que o SyncAnywhere seja compatível com bancos dedados compactados sem o UniqueID, é necessário desabilitar osuporte ao UniqueID.

- É necessário habilitar a gravação do UniqueID nacompactação e descompactação de dados.

Parâmetros

Enabled: True, habilita gravação do UniqueID; False, desabilita.

3.3 Visual Basic

3.3.1 Instalação

O suporte do SyncAnywhere ao Visual Basic é feito por um componente COM queé instalado e registrado automaticamente na sua máquina pelo programa de instalaçãodo SyncAnywhere. Na sua aplicação VB que for utilizar o SyncAnywhere, é necessárioadicionar a Type Library do SyncAnywhere no menu Project, References da sua

aplicação VB. Neste menu, clique no botão Browse e mova-se até o diretório doSyncAnywhere\VB\SyncAnywhereCOM e selecione o arquivo SyncAnywhere.tlb .Certifique-se que o SyncAnywhere foi adicionado à lista de referências da sua aplicação.Esta operação é necessária para que sua aplicação possa utilizar o objeto COM doSyncAnywhere.

Para distribuir sua aplicação que faz uso do SyncAnywhere ao seu cliente, vocêprecisa enviar a DLL SyncAnywhere.dll que se encontra no diretório

SyncAnywhere\VB\SyncAnywhereCOM junto com sua aplicação, copia-la nodiretório C:\Windows\System ou C:\Winnt\System32 e registra-la no computadordo seu cliente. O registro pode ser feito automaticamente pelo programa de instalaçãoque você estiver utilizando, como por exemplo o InstallShield ou InnoSetup, oumanualmente, abrindo uma janela DOS, movendo-se até o diretórioC:\Windows\System ou C:\Winnt\System32 e utilizar o comando REGSVR32SYNCANYWHERE.DLL . Este procedimento é obrigatório ou sua aplicação não poderáutilizar o objeto COM do SyncAnywhere

3.3.2 Utilização

Para compactar dados, você deve ter os arquivos PDB já criados para poderutilizar como parâmetro das funções de compactação. Se você não sabe como criar PDBsdo Palm com o Visual Basic, conheça o produto PDBDataManager versão COM, tambémdesenvolvido pela Cialogica Tecnologia, no site www.cialogica.com.br.

Page 160: Sync Anywhere

SyncAnywhere v1.22157

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

A aplicação exemplo sob o diretório VB do SyncAnywhere mostra como utilizar oSyncAnywhere para compactar e descompactar bancos de dados Palm.

Inicialmente, devemos criar uma variável que referencie o objeto COM doSyncAnywhere:

' Declaração do Objeto SyncAnywhereDim Sya As SyncAnywhere.SyncAnywhere

PARA APLICAÇÕES GRANDES, O TAMANHO DEVE FICAR ENTRE 500 E 1000BYTES.

Código para compactação, no botão Compacta da aplicação exemplo:

Private Sub BtCompacta_Click()

Dim Err As Integer

' Cria o objeto SyncAnywhere Set Sya = New SyncAnywhere.SyncAnywhere

' Inicia a compactação

Err = Sya.PackStart(TxtDir.Text, "PDBPack.pdb", "PDBPack", "PDBP") If Err > 0 Then MsgBox ("Erro de início no processo de compactação!") Exit Sub End If

' Compacta os Arquivos PDB ' A função PackDB encontra-se dentro da unit SyaPack

' Parâmetros ' TxtDir.Text - Diretório onde os arquivos PDB a serem ' compactados estão localizados ' ProdutosDB.pdb e ClientesDB.pdb - São os arquivos PDB ' a serem compactados ' 5000 - É o tamanho máximo em bytes de cada registro ' compactado dentro do banco PDBPack ' Você pode mudar este número em função da qualidade

' de transmissão em sua região. O número máximo é 30000. ' Valores maiores proporcionam menos registros no banco ' de dados, mas podem ocasionar problemas de transmissão ' em linhas com menor qualidade. Err = Sya.PackDB(TxtDir.Text, "ClientesDB.pdb", 5000) If Err > 0 Then MsgBox ("Erro compactando ProdutosDB.pdb: " + Str(Err)) Exit Sub

End If

Err = Sya.PackDB(TxtDir.Text, "ProdutosDB.pdb", 5000) If Err > 0 Then MsgBox ("Erro compactando ProdutosDB.pdb: " + Str(Err)) Exit Sub End If

Page 161: Sync Anywhere

Software no Servidor 158

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

' Finaliza a compactação Sya.PackFinish

MsgBox ("Fim de Compactação dos Arquivos PDB! Verifique o arquivo compactado nodiretório informado.")

End Sub

Código para descompactação, no botão Descompacta da aplicação exemplo:

Private Sub BtDescompacta_Click()

Dim DirSource As String

Dim SourcePDB As String Dim Err As Integer Dim Pos As Integer Dim x As Integer

' Cria o objeto SyncAnywhere Set Sya = New SyncAnywhere.SyncAnywhere

' Extrai o diretório onde está o Arquivo PDB Compactado For x = Len(TxtPDB.Text) To 1 Step -1 If Mid(TxtPDB.Text, x, 1) = "\" Then Pos = x Exit For End If Next

DirSource = Left(TxtPDB.Text, Pos - 1) SourcePDB = Mid(TxtPDB.Text, Pos + 1, Len(TxtPDB.Text) - Pos)

' Extrai os arquivos PDB inseridos no arquivo PDB Compactado ' UnpackDB está contida na unit SyaUnpack que deve ser adicionada à 'usesclause' ' Parâmetros:

' DirSource - É o diretório onde está armazenado o arquivo PDB Compactado ' ExtractFileName(TxtPDB.Text) - É o nome do arquivo PDB Compactado ' ..\TestDB... - É o local onde os arquivos serão Descompactados Err = Sya.UnpackDB(DirSource, SourcePDB, "..\TestDB") If Err > 0 Then MsgBox ("Erro de Descompactação: " + Str(Err)) Exit Sub End If

MsgBox ("Arquivos foram Descompactados com Sucesso! Verifique no diretórioinformado.")

End Sub

ATENÇÃO: Quando for gerar arquivos compactados paraPalm M100 ou Zire ou qualquer outro modelo com

Page 162: Sync Anywhere

SyncAnywhere v1.22159

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

memória igual ou inferior a 2MB, você deve utilizar afunção PackSetMaxDataBlock ANTES de usar a funçãoPackDB, passando como parâmetro o tamanho máximode 2500 Bytes (em aplicações grandes, use de 500 a1000 bytes), além disso, o parâmetro BlockSize dafunção PackDB deve também ter o tamanho máximo de2500 Bytes ou a operação de descompactação nestesmodelos de Palm poderá falhar por falta de memóriadinâmica (HEAP). Estes modelos tem memória limitada ea alocação frequentemente falha com blocos muitograndes de dados. Nos modelos mais novos, com 8MB dememória ou mais, a memória dinâmica é bem maior,portanto menos suscetível a falhas.

No botão Analisar PDBPack, há um código para encontrar os bancos de dados

que estão compactados dentro do arquivo PDB e também para descompactar apenas umdeles:

Private Sub BtPDBPack_Click()

Dim DirSource As String Dim Name As String Dim Err As Integer

Dim DBCount As Long Dim Pos As Integer Dim x As Integer

' Cria o objeto SyncAnywhere Set Sya = New SyncAnywhere.SyncAnywhere

' Extrai o diretório onde está o Arquivo PDB Compactado

For x = Len(TxtPDB.Text) To 1 Step -1 If Mid(TxtPDB.Text, x, 1) = "\" Then Pos = x Exit For End If Next

' Extrai o diretório onde está o Arquivo PDB Compactado

DirSource = Left(TxtPDB.Text, Pos - 1) SourcePDB = Mid(TxtPDB.Text, Pos + 1, Len(TxtPDB.Text) - Pos)

' Recupera o número de bancos compactados no arquivo PDB Err = Sya.GetDBCount(DirSource, SourcePDB, DBCount) If Err > 0 Then MsgBox ("Erro de processamento: " + Str(Err)) Exit Sub

Page 163: Sync Anywhere

Software no Servidor 160

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

End If

MsgBox "Número de Bancos no arquivo Compactado: " + Str(DBCount)

' Apresenta os nomes dos bancos compactados em PDBPack

For x = 0 To DBCount - 1 Err = Sya.GetDBName(DirSource, SourcePDB, x, Name) If Err > 0 Then MsgBox ("Erro de processamento: " + Str(Err)) Exit Sub End If

MsgBox Name

Next

' Descompacta apenas um banco de dados do arquivo PDB Err = Sya.UnpackOneDB(DirSource, SourcePDB, DirSource, "ClientesDB") If Err > 0 Then MsgBox ("Erro de Descompactação: " + Str(Err)) Exit Sub

End If

MsgBox ("Arquivo foi descompactado com Sucesso!")

End Sub

3.3.3 Funções do objeto COM do SyncAnywhere

3.3.3.1 PackSetMaxDataBlock

Sub PackSetMaxDataBlock(Size As Integer)

Comentários

Configura o tamanho máximo do bloco de dados que será usado paracompactação. Por default, o SyncAnywhere compacta blocos de 30000 bytes paraotimizar a taxa de compressão. Esta função deve ser usada quando o Palm que fordescompactar o arquivo seja M100, Zire ou outro com memória igual ou inferior a 2MB.QUANDO ESTIVER GERANDO ARQUIVOS COMPACTADOS PARA ESTES MODELOS,

O PARÂMETRO SIZE *NÃO DEVE* SER MAIOR QUE 2500 BYTES POR CAUSA DO

TAMANHO DO TAMANHO DO "HEAP" (MEMÓRIA DINÂMICA DO PALMOS) QUE ÉDISPONIBILIZADA PARA MODELOS COM MEMÓRIA IGUAL OU INFERIOR A 2MB.SE VOCÊ USAR UM VALOR MAIOR, A OPERAÇÃO DE DESCOMPACTAÇÃO NO PALMPODE FALHAR, RETORNANDO ERROS 32790 A 32793. PARA APLICAÇÕESGRANDES, O TAMANHO DEVE FICAR ENTRE 500 E 1000 BYTES.

Parâmetros

Size: Configura o tamanho do bloco de dados que será compactado de cada vez.ATENTE PARA A OBSERVAÇÃO ACIMA NO CASO DE PALMS COM MEMÓRIA IGUALOU INFERIOR A 2MB.

Page 164: Sync Anywhere

SyncAnywhere v1.22161

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

3.3.3.2 PackSetCheckSum

Sub PackSetCheckSum(Enabled As Boolean)

Comentários

Habilita ou desabilita a gravação de bytes de verificação (CheckSum) no banco dedados compactado.

Parâmetros

Enabled: True, habilita CheckSum; False, desabilita.

3.3.3.3 PackStart

Function PackStart(Directory As String, PDBFilename As String, DatabaseNameAs String, CreatorID As String) As Integer

Comentários

Informa ao SyncAnywhere que uma operação de compactação irá começar. Vocêdeve usar este comando antes de utilizar a função PackDB para compactar bancos dedados Palm.

Parâmetros

Directory: Diretório onde será gerado o arquivo PDB com os bancoscompactados

PDBFilename : Nome do arquivo PDB que será geradoDatabaseName: Nome do banco de dados PalmCreatorID: CreatorID que será associado ao arquivo PDB gerado

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

3.3.3.4 PackDB

Function PackDB(DirSource As String, SourcePDB As String, BlockSize AsInteger) As Integer

Comentários

Compacta um arquivo PDB. Antes de usar PackDB, é necessário iniciar o processode compactação através da chamada à função PackStart.

Parâmetros

DirSource: Diretório onde está localizado o arquivo PDB a ser compactado

Page 165: Sync Anywhere

Software no Servidor 162

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

SourcePDB: Nome do arquivo PDB a ser compactadoBlockSize: Tamanho máximo do registro que será gerado no arquivo PDB

compactado. Este valor normalmente deve ser em torno de 5000, que representa 5000bytes em cada registro e pode ser configurado em função da qualidade de transmissãoda linha telefônica ou celular. Há locais onde é melhor que este valor seja menor, em

torno de 1000, para minimizar erros na transmissão. O tamanho mínimo é 50 bytes e omáximo 30000.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

3.3.3.5 PackFinish

Function PackFinish() As Integer

Comentários

Finaliza a operação de compactação. Quando já tiver utilizado a função PackDBpara todos os arquivos PDB que deseja compactar, é necessário executar PackFinish para

finalizar a compactação.

Parâmetros

Nenhum

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

3.3.3.6 GetDBCount

Function GetDBCount(DirSource As String, SourcePDB As String, ByRef DBCountAs Long) As Integer

Comentários

Recupera o número de bancos de dados armazenados no arquivo compactado. Onúmero de bancos de dados no arquivo compactado só pode ser recuperado dosPDBs gerados pelo SyncAnywhere a partir da versão 1.17.

Parâmetros

DirSource: Diretório onde está localizado o arquivo PDB compactadoSourcePDB: Nome do arquivo PDB compactadoDBCount: Passe neste parâmetro uma variável do tipo Long para ser carregada

com o número de bancos de dados que estão compactados dentro do arquivo PDB.

Retorno

Page 166: Sync Anywhere

SyncAnywhere v1.22163

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

3.3.3.7 GetDBName

Function GetDBName(DirSource As String, SourcePDB As String, Indx AsInteger, ByRef Name As String) As Integer

Comentários

Recupera o nome do banco de dados no arquivo compactado, identificado peloparâmetro Indx. O número de bancos de dados no arquivo compactado só podeser recuperado dos PDBs gerados pelo SyncAnywhere a partir da versão 1.17.

Parâmetros

DirSource: Diretório onde está localizado o arquivo PDB compactadoSourcePDB: Nome do arquivo PDB compactadoIndx: Índice do banco de dados dentro do arquivo compactado. O primeiro banco

de dados tem índice ZERO.Name: Passe neste parâmetro uma variável do tipo String para ser carregada

com o nome do banco de dados.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

3.3.3.8 CheckDB

Function CheckDB(DirSource As String, SourcePDB As String) As Integer

Comentários

Verifica a estrutura de um PDB compactado gerado pelo SyncAnywhere. A funçãoverifica a integridade do número de registros no banco e CheckSum (se habilitado).

Parâmetros

DirSource: Diretório onde está localizado o arquivo PDB compactadoSourcePDB: Nome do arquivo PDB compactado

Retorno

ZERO indica que o PDB está íntegro na sua estrutura.

UM indica que o PDB está íntegro na sua estrutura, mas o CheckSum estádesabilitado, portanto ainda pode haver erro nos registros transferidos.

> UM é o código de erro da verificação do PDB.

Page 167: Sync Anywhere

Software no Servidor 164

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

3.3.3.9 UnpackDB

Function UnpackDB(DirSource As String, SourcePDB As String, DirDest AsString) As Integer

Comentários

Descompacta um arquivo PDB gerado pelo SyncAnywhere no Palm ou no Desktop,gravando todos os arquivos PDB que estão contidos nele no diretório indicado porDirDest.

Parâmetros

DirSource: Diretório onde está localizado o arquivo PDB compactadoSourcePDB: Nome do arquivo PDB compactadoDirDest: Diretório onde serão gravados os arquivos PDB que estão compactados

dentro do arquivo PDB.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

3.3.3.10 UnpackOneDB

Function UnpackOneDB(DirSource As String, SourcePDB As String, DirDest As

String, DBName As String) As Integer

Comentários

Descompacta apenas um banco de dados do arquivo compactado.

Parâmetros

DirSource: Diretório onde está localizado o arquivo PDB compactadoSourcePDB: Nome do arquivo PDB compactadoDirDest: Diretório onde serão gravados os arquivos PDB que estão compactados

dentro do arquivo PDB.DBName: Nome do banco de dados que será descompactado.

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

3.3.3.11 PackPRC

Function PackPRC(DirSource As String, SourcePRC As String, DirDest As String,DestPDBFile As String, DestDBName As String, DestCreatorID As String,

Page 168: Sync Anywhere

SyncAnywhere v1.22165

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

BlockSize As Integer, CheckSum As Boolean) As Integer

Comentários

Compacta uma aplicação Palm (PRC) em um banco de dados (PDB) para

transferencia ao Palm via FTP. Apenas uma aplicação pode ser compactada em um bancode dados e a aplicação não pode ser colocada junto com outros bancos de dados.

Parâmetros

DirSource: Diretório onde está localizado a aplicação (PRC)SourcePRC: Nome do arquivo PRCDirDest: Diretório onde será gravado o arquivo PDB que com a aplicação

compactadaDestPDBFile: Nome do Arquivo PDB que será gerado com a aplicação

compactada. O nome deve terminar com a extensão ".PDB"DestDBName: Nome do Banco de Dados que será gerado com a aplicação

compactada. Este nome será usado no Palm para descompactar a aplicação. Atenção:este não é o nome da aplicação. O nome da aplicação foi gerado pelacompilação do seu projeto em sua ferramenta de desenvolvimento

DestCreatorID : CreatorID do Banco de Dados contendo a aplicação compactadaBlockSize: Tamanho máximo do registro que será gerado no arquivo PDB

compactado. Este valor normalmente deve ser em torno de 5000, que representa 5000bytes em cada registro e pode ser configurado em função da qualidade de transmissãoda linha telefônica ou celular. Há locais onde é melhor que este valor seja menor, emtorno de 1000, para minimizar erros na transmissão. O tamanho mínimo é 50 bytes e omáximo 30000.

CheckSum: True, habilita CheckSum; False, desabilita

Retorno

ZERO indica que a função foi executada corretamente; maior que ZERO indicaerro cujo código está descrito em uma seção mais adiante.

3.3.3.12 SetRecordUIDSupport

Sub PackSetCheckSum(Enabled As Boolean)

Comentários

Habilita a gravação do UniqueID de cada registro do banco de dados. O UniqueIDé uma informação não utilizada pela maioria das ferramentas, mas se por algum motivosua aplicação Palm usa esta informação, você precisa habilitar o uso com esta função.Por default, a gravação do UniqueID está desabilitada para economizar espaço nobanco de dados compactado gerado.

Atenção:

- O uso desta função torna o SyncAnywhereincompatível com bancos de dados compactados sem o uso destafunção. Para que o SyncAnywhere seja compatível com bancos de

Page 169: Sync Anywhere

Software no Servidor 166

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

dados compactados sem o UniqueID, é necessário desabilitar osuporte ao UniqueID.

- É necessário habilitar a gravação do UniqueID nacompactação e descompactação de dados.

Parâmetros

Enabled: True, habilita gravação do UniqueID; False, desabilita.

Page 170: Sync Anywhere

SyncAnywhere v1.22167

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

3.4 Códigos de Erro no Servidor

Page 171: Sync Anywhere

Software no Servidor 168

© 2002-2005 by Cialogica Tecnologia em Informática Ltda

Compactação e Descompactação

Identificação do Erro Código Descrição do Erro

AppErrCreateDirectory 1001 Não é possível criar o diretório

AppErrSourceDirDoesNotExist 1002 Diretório origem não existe

AppErrPDBFileDoesNotExist 1003 Arquivo PDB não existe

AppErrNotAPDBFile 1004 Arquivo PDB está corrompido ou não é umarquivo PDB válido

AppErrPDBDoesNotHaveData 1005 O arquivo PDB não contém dados

AppErrNotASyncAnywhereDB 1006 O arquivo PDB não foi gerado peloSyncAnywhere

AppErrMemoryAllocation 1007 Erro de alocação de memória interna

AppErrGettingMoreData 1008 Erro ao obter dados para os buffers

AppErrInvalidBlockSize 1009 Tamanho do bloco não é válido, mín: 50,máx: 30000

AppErrDestPDBIsNotOpen 1010 Arquivo PDB não foi aberto

AppErrDestPDBIsNotForWrite 1011 Arquivo PDB não foi aberto para gravação

AppErrDestDBFull 1012 Arquivo PDB não pode mais conterregistros

AppErrRecordTooBig 1013 Registro é maior que o tamanho máximopermitido

AppErrPackingData 1014 Erro de compactação de dados

AppErrAppInfoInvalid 1015 AppInfoArea não é válida

AppErrSortInfoInvalid 1016 SortInfoArea não é válida

AppErrAppInfoTooBig 1017 AppInfoArea é muito grande

AppErrAppInfoIsCorrupt 1018 AppInfoArea está corrompida

AppErrSortInfoTooBig 1019 SortInfoArea é muito grande

AppErrPackAlreadyStarted 1020 A compactação já foi iniciada comPackStart

AppErrPackNotStarted 1021 A compactação não foi iniciada comPackStart

AppErrNoDBInfo 1022 O banco de dados compactado não contém

informação dos bancos de dadosarmazenados nele

AppErrDBNotFound 1023 O banco de dados compactado não contémo banco de dados com o nome especificadona função UnpackOneDB

AppErrCheckSum 1024 O banco de dados compactado estácorrompido

AppErrPRCFileDoesNotExist 1025 Arquivo PDB não existe no diretórioinformado

AppErrNotAPRCFile 1026 Arquivo PRC está corrompido ou não estáno formato de aplicação PalmOS

AppErrGettingResource 1027 Erro ao recuperar Resource do arquivo PRC

AppErrNumberOfRecords 1028 Nem todos os registros foram transferidos,banco de dados está corrompido