Jump to content
Fivewin Brasil

Tamanho do nome da variavel


Marca

Recommended Posts

Olá Pessoal

Estou migrando meu sistema para xharbor e estou tendo um problema para recuperar o valor de minh variavel com os nomes longos

Crio minhas variaveis adicionando uma letra na frente do campo

Ex UltimaComp fiacaria assim v_UltimaComp e salvo em variavel de memoria com o

save to nomefields all like v_*

for / next em todos os campos

sendo q. na hora de recuperar ele so esta recuperando até 10 caracteres

o xHarbour tem a limitação de 10 carac. como o clipper?

Um abraço

Link to comment
Share on other sites

Ola, o xHarbour como todo programa em 32bits possui o tamanho maximo de 255 caracter no nome de uma varivel ou função.

Onde você vê um obstáculo alguém vê o término da viagem e o outro vê uma chance de crescer.

Elias Abrão Júnior

Fone : (0**11) 5181-6909 São Paulo - SP

eajunior.fw@terra.com.br

xHarbour 0.99.0 - Fivewin 2.5 e xMate

Link to comment
Share on other sites

citação:

save to nomefields all like v_*

for / next em todos os campos

sendo q. na hora de recuperar ele so esta recuperando até 10 caracteres

o xHarbour tem a limitação de 10 carac. como o clipper?


id=quote>id=quote>

Nao, o xHarbour nao tem limitacao de 10 caractere nem para nome de variaveis nem para nome de funcoes. O que ocorre eh que o (x)Harbour tem que manter a compatibilidade do SAVE TO do Clipper, ou seja, reconhece apenas os 10 primeiros caracteres...

Marllon Figueiredo

Analista de Sistemas ERP/CRM

Porto Alegre - RS

siscatsoftware@hotmail.com

FWH,(x)Harbour,xMate,Bcc,Clipper,Blinker,Exospace,MySQL,MsSQL,Oracle,Postgres,TopConn,ADS,SQLLib

Editado por - siscat on 07/04/2005 10:11:02

Link to comment
Share on other sites

Olá,

Use arquivos do tipo .INI, gerado pela função WritePProString() e lido por GetPvProfString()

[]s,

Evandro G. de Paula

Curvelo - MG

evandro@skillnet.com.br (Escr. - na Cidade)

imortal@skillnet.com.br (Res. - na Roça)

FWH 2.5+PellesC+xBuild+xHarbour.org 0.99.3

Link to comment
Share on other sites

  • 16 years later...

save to não é do fivewin e sim do (x)harbour

 

salvar e restaurar variáveis gera uma brecha de segurança nos sistemas mas se quiser usar tenta assim:

 

save to nomefields all like v_* extended

e use tb o extended para o restore

 

caso não funcione tente compilar o seu fonte passando 

-kx

 

 

 

Link to comment
Share on other sites

Exemplo de Utilização: 

Para recuperar os valores gravados

aCampos   := memoryfile( 4, "texte.mem" )  &&&  --  3= Total de variáveis a serem recuperadas

dData  := if( aCampos[01] == NIL, Date(), aCampos[01] )

nValor  := if( aCampos[02] == NIL, 0, aCampos[02] )

lGravar:= if( aCampos[03] == NIL, .T., aCampos[03] )

cNome  := if( aCampos[04] == NIL, Space(40), aCampos[04] )

...

...

..

Gravando os valores

MemoryFile( { dData,  nValor, lGravar, cNome },  "teste.mem" )

 

**************************************************************************

FUNCTION MemoryFile( anValores, cNameArqM )

   LOCAL cTipo
   LOCAL nCont    ,;
         mName    ,;
         aRetorno ,;
         cDiretorio

   IF type( "mPath" ) <> "U"
      cDiretorio := mPath
   ELSEIF type( "cPath" ) <> "U"
      cDiretorio := cPath
   ELSE
      cDiretorio := ""
   ENDIF

   DEFAULT cNameArqM := alltrim( cDiretorio ) + strTran( procName(1), "()" ) + ".Mem"

   IF ! File( cNameArqM )
      StrFile( "[MEMORYFILE]", cNameArqM, .F. )
   ENDIF
   
   IF ValType( anValores ) == "A" // Se for do tipo array é porque é pra salvar os valores contidos no array

      FOR nCont := 1 TO Len( anValores )

          mName   := "_mVar" + Alltrim( Str( nCont ) )

          WritePrivateProfileString( "MEMORYFILE", mName, xToc( anValores[ nCont ] ), cNameArqM )
          WritePrivateProfileString( "MEMORYFILE", "Tipo_" + mName, Valtype( anValores[ nCont ] ), cNameArqM )
          IF Valtype( anValores[ nCont ] ) == "C"
             WritePrivateProfileString( "MEMORYFILE", "Len_" + mName, Str( Len( anValores[ nCont ] ), 10, 0, .T. ), cNameArqM )
          ENDIF

      NEXT

      aRetorno := .T.

   ELSEIF ValType( anValores ) == "N" // Se for do tipo numérico, é a quantidade de variáveis existentes no arquivo pra restaurar

      aRetorno := Array( anValores )

      IF FILE( cNameArqM )

         FOR nCont := 1 TO anValores
             mName   := "_mVar" + Alltrim( Str( nCont ) )
             &mName. := NIL
         NEXT

         FOR nCont := 1 TO anValores

             mName := "_mVar" + Alltrim( Str( nCont ) )

             aRetorno[ nCont ] := alltrim( GetPrivateProfileString( "MEMORYFILE", mName, " ", cNameArqM ) )
             cTipo := alltrim( GetPrivateProfileString( "MEMORYFILE", "Tipo_" + mName, " ", cNameArqM )  )
             nLen := Val( GetPrivateProfileString( "MEMORYFILE", "Len_" + mName, " ", cNameArqM ) )

             IF cTipo == "N"
                aRetorno[ nCont ] := Val( aRetorno[ nCont ] )
             ELSEIF cTipo == "D"
                aRetorno[ nCont ] := ctod( aRetorno[ nCont ] )
             ELSEIF cTipo == "L"
                aRetorno[ nCont ] := if( aRetorno[ nCont ] == "V", .T., .F. )
             ELSEIF nLen > 0
                aRetorno[ nCont ] := Pad( aRetorno[ nCont ], nLen )
             ENDIF
             
         NEXT

      ENDIF

   ELSE
      aRetorno := .F.
   ENDIF

RETURN aRetorno
 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...