Estou às voltas com o tratamento de matrizes em um sistema e explico o que eu não estou conseguindo:
A variável caractere que coloco abaixo (Cnumeros) seria como eu quero que uma matriz seja produzida pelo sistema, porque aí eu trabalharia com a mesma como desejasse.
Assim, a célula 1 da matriz conteria = 00,02,28 e se eu quiser trabalhar com cada elemento (00 ou 02 ou 28) não haveria problema.
A última célula seriam os valores [27,00,01] e assim por diante, posso andar na matriz que tem, neste caso, 28 elementos, mas cada hora é um número e a matriz tem de ser dinâmica.
Não posso estipular o número total previamente, tenho que criar a matriz usando a função AADD.
O problema está em converter esse campo caractere em uma matriz( Anumeros).
Já tentei usar a função AT para rastrear os caracteres `{{´ ou ´{`mas a matriz produzida saiu errada.
Também tentei ir "andando" dentro da variável avançando 11 caracteres, num loop FOR ... NEXT, rastreando-o com o CLD mas a matriz produzida não é gerada do jeito que eu preciso.
Em tempo: essa variável (Cnumeros) provém de um campo em arquivo de banco de dados.
Se eu a colocar de forma fixa dentro do programa, somente tirando as aspas inicial e final a matriz será produzida normalmente, como fiz na fase de testes.
EXEMPLO da variável a ser convertida para Matriz
Cnumeros := "{{00,02,28},{01,03,27},{02,04,26},{03,05,25},{04,06,24},{05,07,23},{06,08,22},{07,09,21},{08,10,20},{09,11,19},{10,12,18},{11,13,17},{12,14,16},{13,00,15},{00,16,14},{15,17,13},{16,18,12},{17,19,11},;
{18,20,10},{19,21,09},{20,22,08},{21,23,07},;
{22,24,06},{23,25,05},{24,26,04},{25,27,03},;
{26,28,02},{27,00,01}}"
Matriz multidimensionais - usando a função AADD
Moderador: Moderadores
Matriz multidimensionais - usando a função AADD
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Matriz multidimensionais - usando a função AADD
Não entendi muito bem o que voce deseja, se for transformar a variavel cNumeros em uma Matriz, veja abaixo:
Boa sorte!
Código: Selecionar todos
Cnumeros := "{{00,02,28},{01,03,27},{02,04,26},{03,05,25},{04,06,24},{05,07,23},{06,08,22},{07,09,21},{08,10,20},{09,11,19},{10,12,18},{11,13,17},{12,14,16},{13,00,15},{00,16,14},{15,17,13},{16,18,12},{17,19,11},"
Cnumeros+="{18,20,10},{19,21,09},{20,22,08},{21,23,07},{22,24,06},{23,25,05},{24,26,04},{25,27,03},{26,28,02},{27,00,01}}"
priv aNumeros:=&cNumeros
for i= 1 to len(aNumeros)
? aNumeros[i]
?? aNumeros[i][1]
?? "|"
?? aNumeros[i][2]
?? "|"
?? aNumeros[i][3]
nextClipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Matriz multidimensionais - usando a função AADD
Se vc quer saber o tamanho de cada "sub-matriz", é só indexar pelo elemento desejado:mas cada hora é um número e a matriz tem de ser dinâmica.
Código: Selecionar todos
mat:={{1,.T.,3},{4,5,6,"JOSE",8,9}}
? len(mat) // -> 2 elementos dentro de MAT
? len(mat[1]) // -> 3 elementos dentro do elemento 1 de MAT
? len(mat[2]) // -> 6 elementos dentro do elemento 2 de MAT
Matriz multidimensionais - usando a função AADD
Obrigado, novamente, ao Andril e ao Eolo,
Ao Andril, resolvido pela sua sugestão, e que nem precisou usar a função AADD.
O "segredo" está na linha 4 !
Eu havia tentando de dentro do Dbase III resolver a questão com a macrosubstituição e dava certo, mas de dentro do Clipper, não dava, daí constar que havia tentado as funções AT(), RAT(), etc.
E ao Eolo, informo que a matriz vai ser sempre no formato acima, ou seja, a sub-matriz com 3 (três) elementos, mas valeu a dica, pois como sempre afirmei: "trabalhar com matrizes é ótimo, rápido, mas tem hora que funde a cuca".
Dou como exemplo o meu programa de Sudoku, que estou para mexer nele, mas falta-me coragem, porque o que trabalha com matriz não é mole, não...
MUITO OBRIGADO, aos colegas !
RESOLVIDO.
Ao Andril, resolvido pela sua sugestão, e que nem precisou usar a função AADD.
O "segredo" está na linha 4 !
Eu havia tentando de dentro do Dbase III resolver a questão com a macrosubstituição e dava certo, mas de dentro do Clipper, não dava, daí constar que havia tentado as funções AT(), RAT(), etc.
E ao Eolo, informo que a matriz vai ser sempre no formato acima, ou seja, a sub-matriz com 3 (três) elementos, mas valeu a dica, pois como sempre afirmei: "trabalhar com matrizes é ótimo, rápido, mas tem hora que funde a cuca".
Dou como exemplo o meu programa de Sudoku, que estou para mexer nele, mas falta-me coragem, porque o que trabalha com matriz não é mole, não...
MUITO OBRIGADO, aos colegas !
RESOLVIDO.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Matriz multidimensionais - usando a função AADD
Só como complemento...
Em alguns casos isto ajuda não só no Clipper, mas também no Harbour:
Em alguns casos isto ajuda não só no Clipper, mas também no Harbour:
Código: Selecionar todos
x = &( variavel )
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/


