Jump to content
Fivewin Brasil

Euclidao

Membros
  • Posts

    16
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Euclidao

  1. Olá pessoal!
    Andei mexendo com matrizes e consegui mais ou menos isso:
    Consistência de Entrada de dados, direção do cálculo e tratamento de números negativos é por conta do freguês...

    Function main()
    local aAux, cEnt:=space(30), aMain:={}, nY, nL, nH, nM
       MsgGet(" Variação de Valores", "digite os valores seperedos p/espaço", @cEnt)
       aAux:=HB_ATokens( alltrim(cEnt), " ")
       nL := len(aAux)
       aAdd(aMain,{val(aAux[1])}) 
       for nY = 2 to nL
           aAdd(aMain[1]," ")
           aAdd(aMain[1], val(aAux[nY]))
       next
       nM:= len(aMain[1])
       nL := nM/2+1
       for nH = 2 to nL
           aAdd(aMain, array(nM))
           aFill(aMain[nH], " ")
           for nY=nH-1 to nM
               do case
                  case nY+1 > nM
                       exit
                  case valtype(aMain[nH-1,nY+1]) = "C"	//  Não faz nada
                  otherwise
                       aMain[nH,nY] := aMain[nH-1,nY+1] - aMain[nH-1,nY-1]
               endcase
           next
       next
       xbrowser(aMain)
    return nil
    

    T+, Euclides

  2. Carlos,

    A não ser que esteja errado, você não pode indexar CDX ou NTX com campos de comprimento variável.

    Fiz um teste com: INDEX ON TRIM(descricao) TO NOME

    Deu o erro: Error description: Error DBFCDX/1026 Data width error

    Sugiro utilizar: index on subs(descricao, 1, 20) to nome

    O comprimento do campo do INDEX é 20 pode ser variado à vontade.

    T+

    Euclides

  3. Oi Kapi!

    "fui até o fim do arquivo, e tirei algo, o resultado, não me foi satisfatório."

    Isso parece lógica FUZZY (tem explicação no wikipedia) :-))

    Esta rotina que o Rochinha postou, só verifica se o número de registros reais (tam.-do-arquivo - tam.-header) / tam.registro é igual a valor do número de registros cadastrados no header (se não for igual, tem a opção de corrigir).

    Anexei um arquivo DBF (modificado) para V. testar.
    [ ]'s, Euclides
    POW! Agora que eu vi a mensagem:
    "Você não tem permissão para fazer upload deste tipo de arquivo"
    (é só 'abrir' um arquivo DBF com um editor-hexa e alterar o valor na posição # 4)
    Sorry
  4. Kapi, funciona também com Harbour 3.2

    (nas versões anteriores, devolvia um ARRAY em cResult)

    No programa:

    /// ISTO NAO FUNCIONA NAS NOVAS VERSOES

    deve ser corrigido para:

    @ 5,5 GROUP TO 150,268 LABEL " Cliente " OF ODLG_c PIXEL

    Para mim, pelo menos "SÂO PAULO" está saindo certo...

    QCoisa, grite... Euclies

  5. William, eu também não entendi bem a sua pergunta... talvez agora...

    O Linares achou que você queria fazer isso pela classe tRichEdit que serve mais para digitar os dados (é meio complicado automatizar).

    Antigamente eu utilizava a classe RtfMerge mas ela só funciona em arquivos RTF até 64Kb

    Hoje eu utilizo Word com Ole (que funciona também com RTF)

    No forum deve ter alguns exemplos, senão, no site do Toledo...

    Pode tratar o arquivo RTF diretamente (fopen, fwrite). Abaixo mostro um exemplo:

    {\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fnil\fcharset0 Calibri;}{
    \f1\fnil\fcharset0 Arial Rounded MT Bold;}{\f2\fnil\fcharset0 Tahoma;}}
    {\colortbl ;\red255\green0\blue0;}
    {\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\sa200\sl240\slmult1\lan
    g22\f0\fs18 Postado Ontem, 06:15\par
    \b\fs24 Amigos essa parece ser f\'e1cil mas n\'e3o \'e9:\b0\fs22\par
    \cf1  Tenho um richedit e 1 botao.\par
    \cf0 Sempre que pulsar o botao, tem que inserir (adicionar) no final do texto ri
    chedit a data atual  ( date() ) , s\'f3 que com fonte Tahoma e size = 10.\par
    \i Perguntei no forum inter , mas nem o Linares resolveu (ou nao teve tempo)\par
    \i0\f1\fs24 Grato, William Adami\par
    \f2\fs20 Datas:\par
     \par
    }

    Isso é arquivo RTF. Se substituir o último '<espaço>\par' por "10/01/2015\par \par" vai acontecer mais ou menos o que você está querendo.

    Para continuar, é só substituir o último '<espaço>\par' de novo.

    Qualquer coisa, avise.

    T+

    Euclides

  6. Kapi, este parabens-a-você está desafinado...

    experimente este...

    Function Birthday()
    local D1:= 293.7
    local E := 329.6
    local F := 370.0
    local G := 392
    local A := 440.0
    local B := 493.9
    local C := 523.3
    local D2:= 567
    local Minim := 12
    local Crotchet := 6
    local Quaver := 3
    tone( D1, Quaver )
    tone( D1, Quaver )
    tone( E, Crotchet )
    tone( D1, Crotchet )
    tone( G, Crotchet )
    tone( F, Minim )
    tone( D1, Quaver )
    tone( D1, Quaver )
    tone( E, Crotchet )
    tone( D1, Crotchet )
    tone( A, Crotchet )
    tone( G, Minim )
    tone( D1, Quaver )
    tone( D1, Quaver )
    tone( D2, Crotchet )
    tone( B, Crotchet )
    tone( G, Crotchet )
    tone( F, Crotchet )
    tone( E, Crotchet )
    tone( C, Quaver )
    tone( C, Quaver )
    tone( B, Crotchet )
    tone( G, Crotchet )
    tone( A, Crotchet )
    tone( G, Minim + Crotchet )
    return nil
    ... em todo caso, FELIZ ANIVERSÁRIO ANTONIO!!
    T+
    Euclides
  7. Oscar, boa tarde.

    Existe a função xbrowse() (em ..\source\function\xbrowser.prg) que tem vários parâmetros, entre elas, o lFastEdit.

    A minha sugetão, seria alterar esta função para receber um array de campos a serem apresentados (apresentar todos os campos não é sempre a melhor opção).

    Em todo caso, vale o esforço para ajudar a comunidade.

    Um abraço, Euclides.

×
×
  • Create New...