Cortar, redimensionar array.
Moderador: Moderadores
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Cortar, redimensionar array.
Ola!
Tenho um array:
aTeste:={1,2,3,4,5,6,7,8,9}
Preciso cortar, redimensionar ele do inicio.
Se eu usar asize(aTeste,3) fica {1,2,3} eu preciso que fique: {4,5,6,7,8,9}.
Saudações,
Itamar M. Lins Jr.
Tenho um array:
aTeste:={1,2,3,4,5,6,7,8,9}
Preciso cortar, redimensionar ele do inicio.
Se eu usar asize(aTeste,3) fica {1,2,3} eu preciso que fique: {4,5,6,7,8,9}.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Cortar, redimensionar array.
Olá Itamar,
Você pode usar o comando ACopy():
Você pode usar o comando ACopy():
Código: Selecionar todos
ACopy( <aSource>, <aTarget>, [<nSourceStart>], [<nCount>], [<nTargetStart>] )<aSource>
The source array whose elements are copied.
<aTarget>
The target array recieving copied values.
<nSourceStart>
This is a numeric expression indicating the first element in the source array to begin copying with. It defaults to 1, the first element of <aSource>.
<nCount>
A numeric expression specifying the number of elements to copy from <aSource> to <aTarget>. It defaults to the maximum possible number that can be copied. This number depends on the size of source and target array, and the start elements of both arrays.
<nTargetPos>
A numeric expression indicating the first element in the target array that receives copied values. It defaults to 1.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Cortar, redimensionar array.
Eu resolvi. 
Tem coisas que só muito uso para entender, pelo menos comigo é assim.
Usei a tal adel() e depois asize()
Porque ?
Tem uma particularidade com array que passou esse tempo despercebido, eu não sabia que ao ser deletado via adel() ela vai para o final da fila.
Por exemplo aArray := {1,2,3,4,5,6,7,8,9}
adel(aArray,1) fica: {2,3,4,5,6,7,8,9,nil} o lugar do elemento, vai para o final da fila
com isso é só usar depois o asize() 
Saudações,
Itamar M. Lins Jr.
Tem coisas que só muito uso para entender, pelo menos comigo é assim.
Usei a tal adel() e depois asize()
Porque ?
Tem uma particularidade com array que passou esse tempo despercebido, eu não sabia que ao ser deletado via adel() ela vai para o final da fila.
Por exemplo aArray := {1,2,3,4,5,6,7,8,9}
adel(aArray,1) fica: {2,3,4,5,6,7,8,9,nil} o lugar do elemento, vai para o final da fila
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Cortar, redimensionar array.
Acho que ACOPY() resolve seu problema.
local aTeste:={1,2,3,4,5,6,7,8,9}
local aNovo:-[4]
acopy(aTeste,aNovo,4,4,)
-> aNovo vai conter {4,5,6,7}
Os parâmetros de ACOPY():
1. array original
2. array destino
3. item inicial do array origem (default 1)
4. quantos itens copiar (default máximo possível)
5. em qual item (no destino) começar a cópia (default 1)
(editado pra complementar a resposta do Jairo)
local aTeste:={1,2,3,4,5,6,7,8,9}
local aNovo:-[4]
acopy(aTeste,aNovo,4,4,)
-> aNovo vai conter {4,5,6,7}
Os parâmetros de ACOPY():
1. array original
2. array destino
3. item inicial do array origem (default 1)
4. quantos itens copiar (default máximo possível)
5. em qual item (no destino) começar a cópia (default 1)
(editado pra complementar a resposta do Jairo)
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Cortar, redimensionar array.
Olá Itamar,
Então use True no terceiro parâmetro, que não precisa usar a ASize():
Então use True no terceiro parâmetro, que não precisa usar a ASize():
ADel( <aArray>, <nElement>, .T. )
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Cortar, redimensionar array.
Beleza, menos um comando!
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Cortar, redimensionar array.
Testei aqui e não apagou será .F. ?
Não funcionou, adel(,,.t. ou .f.) não corta ou redimensiona a matriz, len() retorna sempre o mesmo tamanho.
Saudações,
Itamar M. Lins Jr.
Não funcionou, adel(,,.t. ou .f.) não corta ou redimensiona a matriz, len() retorna sempre o mesmo tamanho.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Cortar, redimensionar array.
Olá Itamar,
O Default é .F., se .T. reajusta a matriz. Testei aqui com Harbour e realmente não funciona, ou a função ADel() em Harbour tem outra sintaxe. Achei que era igual ao xHarbour. Em xHarbour funciona ok.
Uma pena. Importante é que você resolveu. Valeu.
O Default é .F., se .T. reajusta a matriz. Testei aqui com Harbour e realmente não funciona, ou a função ADel() em Harbour tem outra sintaxe. Achei que era igual ao xHarbour. Em xHarbour funciona ok.
Uma pena. Importante é que você resolveu. Valeu.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Cortar, redimensionar array.
Amigos, no Harbour use o hb_Adel():
Abraços,hb_ADel( <aArray>, <nElement>, .T. )
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
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Cortar, redimensionar array.
Certinho...
Obrigado Toledo pela informação.
Obrigado Toledo pela informação.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
