Converter ARRAY para STRING
Moderador: Moderadores
Converter ARRAY para STRING
Olá pessoal!
Existe alguma forma (usandoMiniGUI Xtended) de converter um vetor aBinary com 25 bits (zeros e uns mesmo) em uma String, pra depois poder guardar num campo char de uma tabela qualquer... Sem ser usando FOR...NEXT?!
Muito Obrigado mais uma vez!
Ricardo César
Existe alguma forma (usandoMiniGUI Xtended) de converter um vetor aBinary com 25 bits (zeros e uns mesmo) em uma String, pra depois poder guardar num campo char de uma tabela qualquer... Sem ser usando FOR...NEXT?!
Muito Obrigado mais uma vez!
Ricardo César
Converter ARRAY para STRING
Você já tem a rotina com o vetor pronta?
Tem como postar pra gente analisar?
O harbour possui funções de conversão:
L2bin() -> Converts a numeric value to a signed long binary integer (4 bytes).
I2Bin() -> Converts a numeric value to a signed short binary integer (2 bytes).
W2bin() -> Converts a numeric value to an unsigned short binary integer (2 bytes).
Tem como postar pra gente analisar?
O harbour possui funções de conversão:
L2bin() -> Converts a numeric value to a signed long binary integer (4 bytes).
I2Bin() -> Converts a numeric value to a signed short binary integer (2 bytes).
W2bin() -> Converts a numeric value to an unsigned short binary integer (2 bytes).
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Converter ARRAY para STRING
Algo tipo assim... (é o que eu NÃO queria ter - mas o que está funcionando agora).
Código: Selecionar todos
FOR n = 1 TO 25
cBinary += ALLTRIM( STR(aBinary[n]) )
NEXT
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
Converter ARRAY para STRING
En Harbour existe :
HB_VALTOSTR() /* converts any data type to STR Value */
HB_VALTOEXP() /* converts any data type to STR Expression */
HB_VALTOSTR() /* converts any data type to STR Value */
HB_VALTOEXP() /* converts any data type to STR Expression */
Converter ARRAY para STRING
Sem o uso de For..Next
AEval( aBinary, {|x| cBinary += HB_NTOS(x) } )
AEval( aBinary, {|x| cBinary += HB_NTOS(x) } )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Converter ARRAY para STRING
A solução do Claudio Soto é mais interessante, porque vale pra qualquer coisa.
Código: Selecionar todos
hb_ValToExp( a ) == hb_ValToExp( b )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Converter ARRAY para STRING
Certo, compreendi. Mas como disse antes, só uso a MiniGUI Extended: essas funções que começam com HB_ funcionam também aqui (pensei que fossem só pra o Harbour)? Se funcionar, tem como indicar um exemplo dentro da minha realidade? Pq só agora me dei conta de que o código que postei ali em cima funciona em tese: na prática, não to conseguindo concatenar elementos de um vetor (e números, ainda por cima) como se fossem string... Travei aqui. A situação é mais ou menos a seguinte:
Imagina 10 tipos de sinais que podem sair por 10 portas diferentes: eu preciso montar uma matriz (10x10, no caso). Então eu tenho:
O resultado desse trecho seria algo assim:
A solução que eu encontrei foi a seguinte - que me deixou na mão por causa da conversão vetor/string (dbHUM indexado por PORTA):
Imagina 10 tipos de sinais que podem sair por 10 portas diferentes: eu preciso montar uma matriz (10x10, no caso). Então eu tenho:
Código: Selecionar todos
dbHUM
Porta Data Hora tipoSinal
1 11/07/2016 13:15:28 3
2 08/07/2016 13:15:28 9
4 05/07/2016 13:15:28 7
7 29/07/2016 13:15:28 6
3 17/07/2016 13:15:28 1
1 13/07/2016 13:15:28 1
4 12/07/2016 13:15:28 8
2 12/07/2016 13:15:28 2
Código: Selecionar todos
Porta Sinais
1 1010000000
2 0100000010
3 1000000000
4 0000001100
5 0000000000
6 0000000000
7 0000010000
8 0000000000
9 0000000000
10 0000000000
Código: Selecionar todos
WHILE .....
cBinary := ""; AFILL( aBinary ,0 )
DO WHILE ! dbHUM->(Eof()) .AND. (dbHUM->Porta) == cPorta
aBinary[ dbHUM->TIPO ] := 1
dbHUM->(DBSkip())
ENDDO
FOR n = 1 TO 25
cBinary += aBinary[n] // -----> ISSO AQUI DÁ ERRO (com ou sem STR(), não funciona)!
NEXT
dbBIN->( DBAppend() )
dbBIN->Porta := cPorta
dbBIN->Sinais := cBinary
ENDDO
Converter ARRAY para STRING
Qual é o erro que dá?
Erro no vetor?
Tem como mostrar a mensagem de erro?
Erro no vetor?
Tem como mostrar a mensagem de erro?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Converter ARRAY para STRING
Esse array tem 25 elementos?
Tentou isolar o problema em um programa de teste harbour console?
Tentou isolar o problema em um programa de teste harbour console?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Converter ARRAY para STRING
Eis o erro...:
R: Parece que não posso concatenar uma array[n]
R: Sim, o do exemplo só tem 10 elementos mas o real tem 25!
R: Infelizmente não sei usar o harbour console. Na verdade, não uso o harbour, uso a miniGUI. ´o)
Código: Selecionar todos
Application: \Jobs\MiniGUI\Signals\main.exe
Date: 15.08.2016 Time: 16:49:02
Time from start: 0 days 0 hours 0 mins 22 secs
Error BASE/1081 Argument error: +
Called from BUILDBINARY(679)
Called from FILLBASE(638)
Called from (b)MAIN(61)
Called from _DOCONTROLEVENTPROCEDURE(1678)
Called from EVENTS(1597)
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1395)
Called from MAIN(40)
R: Sim, o do exemplo só tem 10 elementos mas o real tem 25!
R: Infelizmente não sei usar o harbour console. Na verdade, não uso o harbour, uso a miniGUI. ´o)
Converter ARRAY para STRING
Bom... testei com o HB_VALTOEXP(). O resultado vem separado por vírgulas, entre chaves, mas acho q dá pra eu dar um jeito. Quintas, Simões, Claudio: Muito obrigado pelo apoio. Só fiquei me perguntando como é que essa demanda seria resolvida na época do "Clippão brabo" em DOS, com ? pra escrever em tela? A gente sempre achava uma saída com ele. Alguém certamente já deve ter se visto nessa situação... rs
Saudações!
Saudações!
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Converter ARRAY para STRING
Amigo, estou achando estranho esta linha:
Qual o conteúdo de dbHUM->TIPO???
Mostre como está declarando (criando) a array aBinary.
Abraços,
Código: Selecionar todos
aBinary[ dbHUM->TIPO ] := 1Mostre como está declarando (criando) a array aBinary.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Converter ARRAY para STRING
Na época do Clipper... seria complicado.
Não sei se Type() serviria, mas recursividade seria útil.
Não sei se Type() serviria, mas recursividade seria útil.
Código: Selecionar todos
Compara( a, b )
FUNCTION ComparaArray( a, b )
IF Type( "a" ) <> Type( "b" )
RETURN .F.
ENDIF
IF Type( "a" ) == "A"
IF Len( a ) != Len( b )
RETURN .F.
ENDIF
ELSE
FOR nCont = 1 TO Len( a )
IF .NOT. Compara( a[ 1 ], b[ 1 ]
RETURN .F.
ENDIF
NEXT
ENDIF
RETURN .T.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Converter ARRAY para STRING
Boa Toledo,
Qual é o tipo de dbHUM->TIPO ? se for caracter pode ser o erro
Qual é o tipo de dbHUM->TIPO ? se for caracter pode ser o erro
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Converter ARRAY para STRING
Não deu tempo de corrigir....rs
Código: Selecionar todos
Compara( a, b )
FUNCTION ComparaArray( a, b )
IF Type( "a" ) <> Type( "b" )
RETURN .F.
ENDIF
IF Type( "a" ) == "A"
IF Len( a ) != Len( b )
RETURN .F.
ENDIF
FOR nCont = 1 TO Len( a )
IF .NOT. Compara( a[ 1 ], b[ 1 ]
RETURN .F.
ENDIF
NEXT
ELSE
RETURN a == b
ENDIF
RETURN .T.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
