Marca Posted April 4, 2005 Report Share Posted April 4, 2005 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 Quote Link to comment Share on other sites More sharing options...
eajunior Posted April 5, 2005 Report Share Posted April 5, 2005 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 Quote Link to comment Share on other sites More sharing options...
siscat Posted April 5, 2005 Report Share Posted April 5, 2005 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 Quote Link to comment Share on other sites More sharing options...
Marca Posted April 5, 2005 Author Report Share Posted April 5, 2005 Olá Marllon E existe alguma função que venha a substituir o SAVE TO no xHarbour Quote Link to comment Share on other sites More sharing options...
evandro Posted April 6, 2005 Report Share Posted April 6, 2005 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 Quote Link to comment Share on other sites More sharing options...
SISCO Posted August 6, 2021 Report Share Posted August 6, 2021 Só pra tira uma duvida, o fivewin versão 16 em diante continua com esse padrão de 10 caraceteres para nome de variável Quote Link to comment Share on other sites More sharing options...
emotta Posted August 6, 2021 Report Share Posted August 6, 2021 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 Quote Link to comment Share on other sites More sharing options...
SISCO Posted August 6, 2021 Report Share Posted August 6, 2021 Obrigado pela resposta Quote Link to comment Share on other sites More sharing options...
macs Posted August 6, 2021 Report Share Posted August 6, 2021 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.