Jump to content
Fivewin Brasil

emotta

Membros
  • Posts

    1,609
  • Joined

  • Last visited

  • Days Won

    88

Posts posted by emotta

  1. Legal, vou pegar isso pra ver a tarde. Vou tentar compilar pelo xbuild vamos ver 

     

    Mas no geral essa notícia foi fantástica, tomara que migrem o sqlrdd para o Harbour e dê um gás em toda comunidade.

     

    Com o sqlrdd no Harbour não vejo motivo para o projeto xharbour não ser mergeado no Harbour 

  2. possivelmente é o https://skyone.solutions/ ou TSPLUS (ou equivalente)

     

     

    Em 26/07/2023 at 13:51, marcioe disse:

    Obrigado por responder, temos o servidor DEDICADO na locaweb, (usamos mariadb / Mysql)   Fizemos uns testes, e percebemos que ficou bem lento, mas claro que, posso melhorar o acesso, trazendo o máximo das consultas por array, etc..
    Otimizar algumas coisas quem em uma rede local, não nos preocupamos a esse ponto.

    Salvo engano eu já ví uma aplicação acho que era de contabilidade(sistema em delphi) que rodava no navegador, porem com ( aws pelo navegador )

    Essa empresa usa   


    Aws, pelo visto com o sistema em Delphi.  


    https://www.supersoft.com.br/

    Alguem sabe mais 

     

     

  3. OverRide é um recurso fantastico do (x)Harbour. Você substitui um método dentro de uma classe por um customizado. Chame o OverRide no inicio da sua aplicação.

    No exemplo abaixo o método Initiate dentro da classe TDialog é substituido pela funcao xTDialog_Initiate. Então em algum lugar vc vai ter uma funcao xTDialog_Initiate recebendo os mesmos parametros que o método substituido recebe (no caso o initiate)

     

     

    Function Configure_Override()
    OVERRIDE METHOD Initiate   IN CLASS TDialog       WITH xTDialog_Initiate
    Return
     
    Function xTDialog_Initiate( hWndFocus, hWnd )
    Local SELF := HB_QSelf()
    /*
    SEU CODIGO
    */
    Return .t.
     
  4. sim, como trabalhei lá antes de ter a empresa eu segui a mesma linha de dicionário de dados deles, com a criação dos campos dinamicamente no formulário e no dicionário apontando as validações e se o campo é obrigatório ou não.

    Foi difícil desenvolver mas dps de pronto foi uma mão na roda por anos e anos.

    46 minutos atrás, marcioe disse:

    Top, estilo MICROSIGA / TOTVS.    

     

     

  5. Na versão do meu sistema em desktop usei por anos a estratégia de exibir os campos obrigatórios em negrito e em azul e os opcionais somente em preto (sem ser negrito).

    Na versão web eu mudei e deixei da mesma cor e apenas identifico os obrigatórios como negrito.

    Nunca tive reclamação de usuário nesse sentido. A tela abaixo é um formulário em fivewin do sistema.

     

    image.png.0f875c7af3346b7ddceee13f1cc61b4a.png

     

  6. Se vc quer uma solução visual, deixar o label dos campos obrigatórios em negrito e os opcionais sem ser negrito, não resolve?

    1 hora atrás, marcioe disse:

    Queria apenas de uma forma visual para que o usuário possa saber que é obrigatório o campo, 
    hoje já tenho validações, antes de gravar o registro, se por exemplo o campo NOME estiver em branco, se o campo que é obrigatório, e não estiver preenchido. Ele avisa com uma Dialog 

    Hoje já funciona assim, porem 
    Sem-t-tulo.jpg

    Porem só quando ele clica em gravar, que isso aparece. para o usuário

     

  7. 1 hora atrás, kapiaba disse:

    EBA!! Mais um para pagar as BREJAS Ricardo. Emotta, isso que mostras, é na ALTERAÇÃO. E na INCLUSÃO?  O Márcio quer mostrar, na INCLUSÃO quando o uçuário teclar <ENTER? no CAMPO GET VAZIO: "* Campo Obrigatório Gumento". Comprendes? ELE USA WORKSHOP.exe. 

    Abs y thanks pela participação. Brejas chegando fácil... kkkkkkkkkkkkkkkk

     

    Regards, saludos.

     

     

    Inclusão ou alteração não faz diferença. Isso é um formulário de cadastro, tanto na inclusão como na alteração o usuário precisa saber o que ele é obrigado a informar e o que é opcional.

    Sobre o Marcio querer isso na Inclusão é por sua conta isso? Não vi ele pedir isso ahhahahahahaa

  8. Desculpe se perdi algo na discussão, mas o mais simples pra identificar campos obrigatórios poderia ser exibir o label do campo em negrito, se não for obrigatório exibe o label sem ser negrito. Dessa forma basta vc ter duas fontes definidas, sendo uma negrito e outra normal.

    Além do aspecto visual vc tem outra necessidade nessa questão do obrigatório?

    Hoje essa é a tela de meu sistema (atualmente é web mas quando era xharbour/fivewin a ideia era a mesma)

     

    image.thumb.png.041c1c130af53a3c033983276cedf2da.png

  9. veja se essa função te ajuda

     

    Static Function DownLoadFile(cFile,cDestino)
    Local cEndereco := cFile
    Local oHttp
    Local cHtml
    Local lRet := .F.
    oHttp := TIpClientHttp():new( cEndereco )
    oHttp:Open(cEndereco)
    cHtml   := oHttp:readAll()
    If ValType(cHtml) == "C" .and. Len(cHtml) > 0
       fErase(cDestino)
       MemoWrit(cDestino,cHtml)
       lRet := .t.
    EndIf
     
    Return lRet
  10. Sunset por uma incrível coincidência um de meus clientes que ainda usam a versão desktop (fivewin) do sistema relatou esse mesmo erro e eu peguei pra resolver isso.

    O problema, no meu caso, era o limite de objetos criados na dialog. No caso deste cliente eram mais de 1800.

    Isso aconteceu pois em um ponto o programa, em vez de atualizar um objeto existente na dialog era criado um novo objeto. No meu caso era um TSAY.

    Eu resolvi isso no meu código facilmente corrigindo para que não fosse criado objetos novos e sim reaproveitado o que já existia e ficou tudo certo.

    Para o seu caso explica o motivo de algumas telas funcionarem por horas e depois de um tempo dar o erro. Veja no seu código os locais que criam novos objetos após a dialog já estar ativa, provavelmente é algo neste sentido.

    Espero que ajude.

  11. Eu nunca trabalhei com resources e faz um bom tempo que não trabalho com fivewin, mas esse problema tem cara de ser alguma perda de conexão da rede, mesmo que seja momentânea. 

    Experimente colocar o sistema localmente, se isso for possível, e veja se o erro ocorre. Mas é apenas um chute, se esse problema estivesse comigo eu iria por esse lado.

  12. 2 horas atrás, alex2002 disse:

    Então, no meu caso eu rodo o atualizador (em background) toda vez que o cara entra no sistema. Isso porque durante o dia pode ter uma bug corrigido urgentemente. 

    Quanto a abrir o EXE não demora muito. 

    Mas tudo isso é só para clientes que não usam a nuvem. Como hoje a maioria usa o TSPLUS a atualização é feita por nós mesmos.

     

    Alex, se pra abrir o executável não demora, pra checar o MD5 dele vai demorar menos ainda então. Mas fica a critério de cada um usar o que resolve o problema.

     

    Abraços

  13. 35 minutos atrás, alex2002 disse:

    No meu caso, antes era por data e hora.

    Depois que trocamos o servidor, passou a dar problema pq mudou o SO dele. Daí colocamos por tamanho e tem uns 15 anos que não temos problemas. Já colocamos em todo tipo de SO e tem rodado legal. 

    Comparar o hash é legal, mas é bem mais lento, pq ele vai ter que praticamente fazer um donwload do arquivo (ou subir o conteúdo na memória) para fazer comparação. No nosso caso aqui é sem chance, o pacote compactado tem mais de 30 megas, imagina aguardar isso tudo apenas para dizer se tem versão nova.

    Mas o que vale é ver o que mais funciona para você.

    Alex, seria legal você fazer um teste, mas acredito que é muito rápido obter o MD5. O importante é que não seja um processo executado a todo minuto, mas se for executado só algumas vezes por dia não terá problema.

    Agora se ficar lento pra você, realmente é melhor continuar checando data/hora/tamanho, mas se o usuário abre o executavel na máquina ele também faz download do executável e o executa, o que demora muito mais.

    Hoje em dia para o usuário abrir o seu programa (de 30mb) demora muito pra começar a executar?

  14. segue a funcao CompFile que retorna se os arquivos são iguais ou diferentes

     

    Function Teste()
    Local cFile1 := "arq1.txt"
    Local cFile2 := "arq2.txt"
    Local cFile3 := "arq3.txt"
    Local cCont1 := "testando texto para arquivo 1"
    Local cCont2 := "testando texto para arquivo 1"
    Local cCont3 := "testando texto para arquivo 3"
     
    MemoWrit(cFile1, cCont1)
    MemoWrit(cFile2, cCont2)
    MemoWrit(cFile3, cCont3)
     
    If CompFile(cFile1, cFile2)
      ? cFile1 + " é igual a " + cFile2
    Else
      ? cFile1 + " é diferente de " + cFile2
    EndIf
     
    If CompFile(cFile1, cFile3)
      ? cFile1 + " é igual a " + cFile3
    Else
      ? cFile1 + " é diferente de " + cFile3
    EndIf
     
    ? "fim"
    return
     
    Static Function CompFile(cFile1, cFile2)
    Local cHash1 := HB_MD5File( cFile1 )
    Local cHash2 := HB_MD5File( cFile2 )
     
    Return cHash1 == cHash2
  15. fala ai rochinha, a analogia foi boa hahahaha

    Em 09/04/2023 at 05:16, rochinha disse:

    Amiguinhos,

    
    Imagine que você tinha R$ 9,00, a mudança para 32 bits aumentou um digito e com isso você passou a ter R$ 99,00.

    Eu fico imaginando você imaginando isto, kkkkkk. Faz sentido, afinal agora a aplicação poderá usar os mesmos R$ 9,00.

     

  16. TSPlus funciona bem, para o propósito que é feito. Eu uso aqui na empresa para nosso sistema administrativo interno, feito por nós e que não é comercializado. Migrei tudo para o AZURE, usando o SQL como serviço na própria AZURE e em uma VM copiei os arquivos do sistema (EXE, DLLs, etc)

    Instalei o TSPLUS nessa VM e as pessoas que precisam acessar nosso sistema agora acessam pelo aplicativo que o TSPLUS disponibiliza (na pratica é um TS) mas tem uma versão para acessar via navegador mas eu não adquiri pois não precisava.

    Funciona muito bem.

    Agora se você deseja escalar sua aplicação, ou seja, fornecer o mesmo sistema (mesmo fonte, etc) para vários clientes, pra vc escalar as vendas usando o TSPLUS vai ficar caro, é possível mas é caro.  (não me refiro somente ao valor da licença do TSPLUS mas sim ao custo da VM para suportar muitos usuários)

    No meu caso, eu tenho um sistema de ponto desenvolvido nos anos 90 em clipper. Em 2000 reescrevi ele já usando FIVEWIN e em 2002 migrei para xharbour (com fivewin).  A concorrencia começou a ofertar a solução nativa na WEB e estava começando a ficar dificil concorrer, então eu reescrevi ele usando Ruby on Rails no backend e React.js no front. (isso já faz alguns anos)

    De fato é um trabalho imenso, do mesmo nível (ou até mais) ao que tivemos na migração de aplicação DOS para Windows (quem vivenciou vai saber do que estou falando). Mas é um trabalho necessário.

    Se eu fosse começar a migrar hoje confesso que olharia o modharbour, mas não tem segredo, mesmo se a escolha for ele você terá que reescrever muita coisa, pois a idéia de uma aplicação web é funcionar sem estado e na base do request/response.

    Meu conselho é, assim como nos anos 90 não existiu uma forma de pegar sua aplicação DOS, compilar e virar windows, agora em DESKTOP para WEB é a mesma coisa. Fivewin ajudou muito naquela época mas tem que ver se o modharbour pode ajudar tanto quanto desta vez.

     

    Tire todas as duvidas sobre o TSPLUS com o contato abaixo, ele me atendeu muito bem.

    Contato TSPLUS

    Everton - +55 11 96306-6544 (whatsapp) 

     

×
×
  • Create New...