Ajuda com vetor

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ajuda com vetor

Mensagem por asimoes »

Pessoal,

Eu tenho um vetor exemplo assim:

Código: Selecionar todos

LOCAL oElemento
aVetor:={}
aAdd(aVetor, {"Linha1"," Coluna"})
aAdd(aVetor, {"Linha2"," Coluna"})
aAdd(aVetor, {"Linha3", "Coluna"})
aAdd(aVetor, {"Linha4", "Coluna"})

FOR EACH o Elemento IN aVetor
   ? oElemento[1], oElemento[2]
NEXT
Eu sei quantas linhas tem usando a função Len, nLinhas:=Len(aVetor), agora eu queria saber quantas colunas tem esse vetor por linha, tem como, rodando dentro do FOR EACH?
►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)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ajuda com vetor

Mensagem por asimoes »

Pessoal,

Consegui,

A minha intenção é montar um html table

Código: Selecionar todos

aVetor:={}

aAdd(aVetor, {"Linha1"," Coluna", "1"})
aAdd(aVetor, {"Linha2"," Coluna", "2"})
aAdd(aVetor, {"Linha3", "Coluna", "3"})
aAdd(aVetor, {"Linha4", "Coluna", "4"})

cHtml:=MontaHtml(aVetor)

FUNCTION MontaHtml(aVetor)
LOCAL oElemento, cTable

   cTable := '<!DOCTYPE html>'+hb_eol()
   cTable += '<html>'+hb_eol()
   cTable += '<body>'+hb_eol()
   cTable += '<table border="1" style="width:50%">'+hb_eol()
   nCol := Len(aVetor[1])
   FOR EACH oElemento IN aVetor
       IF Mod(oElemento:__enumIndex(), 1) = 0
          cTable += '   <tr>'+hb_eol()
       ENDIF
       FOR nCont:=1 TO nCol
          cTable += '      <td>'+oElemento[nCont]+'</td>'+hb_eol()
       NEXT
       cTable += '   </tr>'+hb_eol()
   NEXT
   cTable += '<body>'+hb_eol()
   cTable += '<html>'+hb_eol()
   hb_Memowrit("tabela.html", cTable)
RETURN cTable   
O resultador é esse:
Resultado
Resultado
Screen Shot 03-25-16 at 02.12 PM.PNG (3.92 KiB) Exibido 806 vezes
►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)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Ajuda com vetor

Mensagem por fladimir »

Legal... parabéns

Obrigado por compartilhar.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ajuda com vetor

Mensagem por asimoes »

Gerar mensagem table html para envio email.

Uso:

Código: Selecionar todos

aVetor:={}

aAdd(aVetor, {'Data e Hora do Erro', hb_DtoC( Date(),"DD/MM/YYYY" ) + " - " + Time()})
aAdd(aVetor, {'Nome do Executável', cExeName})
aAdd(aVetor, {'Data e Hora do Executável', cDataExe})
aAdd(aVetor, {'Nome do Computador', hb_GetEnv("computername", NetName())})
aAdd(aVetor, {'Usuário do Computador', hb_GetEnv("username", NetName(.T.))})
aAdd(aVetor, {'IP/MAC do Computador', aMac[1, 1]+" "+aMac[1, 2]})
aAdd(aVetor, {'Memória Disponível', Transform(LTrim(Str( Memory(0) )),"@R 9,999,999")})
aAdd(aVetor, {'Espaço em Disco', LTrim(Transform(DiskSpace(),"@R 999,999,999,999,999,999"))})
aAdd(aVetor, {'Serial Lógico do HD', Serial_HD() })
aAdd(aVetor, {'Pasta de Diretório', hb_DirBase()})
aAdd(aVetor, {'Sistema Operacional', Os()})
aAdd(aVetor, {'Compilador C', hb_Version(HB_VERSION_COMPILER)})
aAdd(aVetor, {'Versão do Harbour',  hb_Version(HB_VERSION_HARBOUR)+ " "+hb_Version(HB_VERSION_BUILD_DATE_STR)})
aAdd(aVetor, {'Versão da HWgUI', hwg_Version( 1 )})

cHtmlErroAdd:=win_AnsiToOem(MontaHtml(aVetor, {"Descrição", "Valor"}))


FUNCTION MontaHtml(aVetor, aCabec)
LOCAL oElemento, cTable

   cTable := '<!DOCTYPE html>'+hb_eol()
   cTable += '<html>'+hb_eol()
   *---------------------------------------
   cTable += '<head>'+hb_eol()
   cTable += '<style>'+hb_eol()
   cTable += 'table, th, td {'+hb_eol()
   cTable += '   border: 1px solid black;'+hb_eol()
   cTable += '   border-collapse: collapse;'+hb_eol()
   cTable += '}'+hb_eol()
   cTable += '</head>'+hb_eol()
   cTable += '</style>'+hb_eol()
   cTable += '<body>'+hb_eol()
   cTable += '<table border="1" style="width:100%">'+hb_eol()
   cTable += '<table style="width:100%">'+hb_eol()
   nCol := Len(aVetor[1])
   
   cTable += '<tr>'
   
   FOR EACH oElemento IN aCabec
       cTable += ' <th>'+oElemento+'</th>'+hb_eol()
   NEXT
   
   cTable += '</tr>'
 
   FOR EACH oElemento IN aVetor
       IF Mod(oElemento:__enumIndex(), 1) = 0 
          cTable += '   <tr>'+hb_eol()
       ENDIF
       FOR nCont:=1 TO nCol
          cTable += '      <td>'+oElemento[nCont]+'</td>'+hb_eol()
       NEXT
       cTable += '   </tr>'+hb_eol()
   NEXT
   cTable += '<body>'+hb_eol()
   cTable += '<html>'
   hb_Memowrit("tabela.html", cTable)
RETURN cTable   

Table html com mensagem
Table html com mensagem
►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)
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Ajuda com vetor

Mensagem por janio »

aSimoes,

Eu já tenho algo bem parecido em que o meu sistema mim envia um email com o erro. Porem, eu gero um txt com as informações do erro.

Pq vc prefere em html? qual seria a diferença em relação ao txt?

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ajuda com vetor

Mensagem por asimoes »

Ao invés de eu anexar um arquivo txt do erro, eu recebo o html formatado assim é menos um lixo no hd, o email será descartado depois de ler.
►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)
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Ajuda com vetor

Mensagem por ANDRIL »

Que bom que já conseguiu, segue mais um exemplo.

Código: Selecionar todos


nColunas=0
FOR EACH oElemento IN aVetor
 ? oElemento[1], oElemento[2]
 ? len(oElemento)
 nColunas+=len(oElemento)
NEXT
? nColunas
Até+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Responder