Ir para o conteúdo
  1. Re: Programa não repete

    CrominhO
    Por CrominhO,

    ... Uns amigos meus tinham-me falado deste Tópico e acreditem que já nem me lembrava dele... Mas por acaso dei com ele, voltei a ler e não resisti. 

    Quando perguntarem porque é que o P@P está morto (outro topico), perguntem antes como é que existem tópicos como este, onde quem é Admin tem de ter razão à força, nem que seja pelo método, de baralhar e voltar a dar cartas... Felizmente, tópicos como este não são uma constante, diria até que são raros, mas que contribuem para o desaparecimento do forum, isso sem dúvida, e a prova é que há 4 anos que não Sigo Pascal nem Delphi, já para não falar que alem de não ajudar nesses quadros porque estou comprovadamente errado, ainda perdi a vontade de participar no forum, para além do estritamente necessário... Muito triste mesmo, mas quem gere é que sabe...

    • 46 respostas
  2. Re: Programa não repete

    CrominhO
    Por CrominhO,

    Volvidos 4 anos, depois de sair dos quadros de Pascal e Delphi e ainda não aprendi a diferença entre o Read e o ReadLN

    Eu pensei que seria assim, 

    Em 22/10/2014 às 21:13, CrominhO disse:

    (...) o READ (...) e o Cursor fica na mesma Linha,

    E ainda reforcei, 

    Em 23/10/2014 às 02:55, CrominhO disse:

    (...) um LineFeed ou CR e o valor final já não será somente o 'S' (...)

    Mas o @pwseo discordou, ou melhor veio clarificar, precisávamos todos de ser esclarecidos... Esperem, mas ele falou em Buffer?? 

    Em 23/10/2014 às 21:41, pwseo disse:

    Vim apenas clarificar alguns pormenores relativamente à Read e ReadLn. Segundo a documentação oficial, estas "funções" fazem essencialmente o mesmo, com excepção de um pormenor crucial: enquanto que a Read lê apenas o que lhe é pedido (e se houver mais input, deixa-o no buffer),

    Estou surpreso, provavelmente errado, peço então com gentileza a documentação que ele referiu, 

    e como até tenho paciência não só volto a explicar o que ja havia explicado como dou referência bibliográfica como ainda dou o exemplo (o 4º) dessa mesma referência, 

    Em 24/10/2014 às 03:57, CrominhO disse:

    (...)Depois de consultar um dos meus Books(Fundamental do Turbo Pascal 5, 5.5 e 6 - FCA - Vasco Cardoso)(...)

    (...)Cada instrução Read lê os valores seguidos ao último lido enquanto a instrução ReadLN, após ler os valores que tem a ler, salta de linha.(...)

    Mas afinal, esperem, parece que ainda não é desta, devo estar a falhar e não sei bem onde... Vamos comprovar então o que diz a Documentação que o @pwseo falou, 

    Citação

    read treats input as a stream of characters, with lines separated by a special end-of-line character. readln, on the other hand, will skip to the next line after reading a value, by automatically moving past the next end-of-line character:

    Olhem, SURPRESA,  então não é que a Documentação que ele diz que disse, diz exactamente aquilo que eu havia dito já 5 vezes, e que volto a referir mais uma lol, e que disse já agora dizia a documentação que lhe enviei e ainda o exemplo... Há qualquer coisa que me escapa... 

    Ainda nao está bem, mas vou tentar mais uma vez, 

    Citação

    Em 24/10/2014 às 20:21, CrominhO disse:(...) será CR (ASCII 0xd) e LF (ASCII 0xa) (...)

    Não, parece que ainda não... Bolas

    Mas Wait, há mais

    Citação

    Em 24/10/2014 às 21:41, pwseo disse:(...)Se tu tivesses razão, então o output deveria ser uma mudança de linha(...)

    Pois, mudança de Linha, não??? ja deve ir nas 10 vezes, tal como diz a tua documentação, como diz a que te enviei e como verdadeiramente é não?? 

    Talvez não, esperem, 

    Citação

    Em 24/10/2014 às 21:41 pwseo disse (...) Não tens que explicar mais nada, até porque a tua explicação está comprovadamente errada (ver link para o ideone que forneci acima).

    Pois aquele Link que diz que é mudança de Linha ??? 😕 ja parece conversa de malucos, mas devo continuar a estar mal, porque estou comprovadamente errado.. Não sei como nem porquê, mas estou... Interminável esta história... 

    opss o @thoga31 também respondeu entretanto, 

    Citação

    @pwseo tem estado sempre bem (...) Read ignora os whitespaces iniciais (i.e., espaço, Tab e New Line (...)

    Ora o @pwseo tem estado SEMPRE BEM, mas o Read e tal, mais uma voltinha, New Line ??? Será??? é que eu pensava que já tinha dito 20 vezes no minimo... 

    Desisto... Ficarei para sempre sem saber a Diferença entre o Read e o ReadLN... E continuo sem saber porque raio um é Read e outro é ReadLiNe, e porque um é Write e outro é WriteLiNe, iria jurar que que tinha a ver com o que falei mais de 20 vezes de mudança de linha... Mas tou errado, porque já existia o ReadBuffer, não puderam atribuir esse nome e apeteceu-lhes simplesmente acrescentar LINE para os distinguir... 

    De Referir que toda a documentação; a que eu meti, a que o @thoga31 e a que o @pwseo metemos, está toda Comprovadamente errada, porque toda fala em mudança de linha.

    • 46 respostas
  3. Re: Subtração por divisão sucessivas

    pwseo
    Por pwseo,

    @roberto96fs,

    O que já conseguiste fazer? Já tens aí um algoritmo que consegue resolver o problema que pretendes resolver... Tens alguma dúvida específica sobre como escrever isso em Python? E outra questão: conseguiste perceber o conceito por detrás do algoritmo utilizado?

    • 1 resposta
  4. Erro ao chamar uma função em outro projeto

    Juca
    Por Juca,

    Bom dia,

    Estou desenvolvendo um sistema em vb.net 2010. A solução contém cinco projetos, um EXE (Principal) e quatro DLL (Cadastro, Financeiro, Jurídico e Biblioteca). A Biblioteca.dll contém uma classe Utils com funções para validar CPF, encriptar Senha e outras. Referenciei a Biblioteca.dll no projeto Principal.exe.  Quando chamo fValidaCPF(txtCPF.text) do Projeto Principal.exe é apresentado um erro “Expressão não é um método”.

    '----------------------------------------------------------------------
    
    'Projeto Principal.exe
    
    '----------------------------------------------------------------------
    
    Imports Biblioteca
    
    Imports Biblioteca.Utils
    
    Imports System.Windows.Forms
    
    Public Class Principal
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    
            fValidaCPF(TextBox1.Text)
    
        End Sub
    
    End Class
    
    
    
    
    
    
    
    '----------------------------------------------------------------------
    
    'Projeto Biblioteca.dll
    
    'Valida CPF
    
    '----------------------------------------------------------------------
    
    Public Function FValidaCPF(ByVal CPF As String) As Boolean
    
        Dim i, x, n1, n2 As Integer
    
        CPF = CPF.Trim
    
        For i = 0 To dadosArray.Length - 1
    
            If CPF.Length <> 14 Or dadosArray(i).Equals(CPF) Then
    
                Return False
    
            End If
    
        Next
    
        'remove a maskara
    
        'If Len(CPF) > 11 Then
    
        CPF = CPF.Substring(0, 3) + CPF.Substring(4, 3) + CPF.Substring(8, 3) + CPF.Substring(12)
    
        'End If
    
        For x = 0 To 1
    
            n1 = 0
    
            For i = 0 To 8 + x
    
                n1 = n1 + Val(CPF.Substring(i, 1)) * (10 + x - i)
    
            Next
    
            n2 = 11 - (n1 - (Int(n1 / 11) * 11))
    
            If n2 = 10 Or n2 = 11 Then n2 = 0
    
            If n2 <> Val(CPF.Substring(9 + x, 1)) Then
    
                MsgBox("O CPF informado não é válido. Verifique se digitou corretamente.", _
    
                       MsgBoxStyle.Information, "GA .Net Consultoria")
    
                Return False
    
            End If
    
        Next
    
    
    
        MsgBox("O CPF informado é válido.", _
    
               MsgBoxStyle.Information, "GA .Net Consultoria")
    
    
    
        Return True
    
    End Function

     

    • 0 respostas
  5. Re: Simular Objetos/Re-uso de Código?

    pwseo
    Por pwseo,

    Yamix,

    Além do que já foi referido pelo Nuno, queria apenas salientar que existe uma outra opção, «entre o procedural e o orientado a objectos»: podes utilizar records que te permitem criar tipos de dados (ditos «complexos») que consistem na agregação de tipos de dados mais simples: podes, por exemplo, ter um tipo de dados Carro que agregue em si uma String para a marca e modelo, outra para a matrícula, e vários Real / Integer para coisas como a potência, consumo, entre outros.

    As diferenças desta abordagem para a programação orientada a objectos são inúmeras, mas de uma forma superficial, terias que ter funções/procedimentos globais para manipulação destes tipos de dados, ao invés de teres métodos que fazem parte de cada objecto. Por vezes não precisamos de todas as vantagens (e complexidade) associadas à orientação para objectos, pelo que é importante conhecer também as opções que ficam «a meio termo».

    Relativamente à organização do código e os comentários feitos pelo suposto professor, já outros comentaram (e muito bem), pelo que não vou repetir o que já foi dito. Queria apenas referir que acho muito correcta a tua percepção de que Java é uma má linguagem para quem nunca programou: obriga-te a pensar num paradigma que não é necessariamente o melhor para todas as situações e isso é especialmente verdade quando se está a começar a programar. Em relação a isto, Pascal (nas suas implementações modernas como Free Pascal, Delphi) é de longe muito mais pedagógico, permitindo começar no zero e evoluir a um bom ritmo para praticamente todos os conceitos de alto nível que se vê noutras linguagens imperativas (como Java).

    • 8 respostas
  6. Open Source Lisbon 2018

    Rui Carlos
    Por Rui Carlos,
    Citação

    Considerado o maior e mais conceituado evento de Open Source em Portugal, o Open Source Lisbon 2018 terá lugar na Cidade do Futebol no dia 27 de Setembro e revela agora os primeiros speakers confirmados.

    Com uma localização privilegiada e excelentes infraestruturas, a Cidade do Futebol é um espaço versátil e inovador, caracterizado pela sua funcionalidade, segurança e tecnologia de ponta. Além das suas fortes características, este espaço é uma ode à Portugalidade, visível através dos seus relvados com vista para o Tejo, da sala de exposição de conquistas nacionais futebolísticas, da decoração com estrofes do hino nacional e das cores do espaço, inspiradas na bandeira nacional.

    Além do local, o Comité de Organização do evento Open Source Lisbon revela ainda os primeiros speakers confirmados. Sob o temaOpen Source: driving Innovation, o evento teve o prazer de convidar Giovanni Bajo, Developer Relations da Team Digitale, equipa destacada para a transformação digital do Governo Italiano, Adam Hyde, Co-fundador da The Collaborative Knowledge Foundation, Ben Van’t ende, Partner & Community Strategist da Age of Peers, Deb Nicholson, Director of Community Operations na Software Freedom.

    Este evento, organizado pela Syone e coorganizado pela Caixa Mágica, tem a duração de um dia e está dividido em duas partes, a parte da manhã dedicada à visão estratégica e de negócios, e a parte da tarde de cariz mais técnico e funcional. O evento é gratuito, mas sujeito a inscrição prévia.

    Webpage: Open Source Lisbon 2018

    • 0 respostas
  7. Windows 10 to get disposable sandboxes for dodgy apps

    Rui Carlos
    Por Rui Carlos,
    Citação

    Microsoft is building a new Windows 10 sandboxing feature that will let users run untrusted software in a virtualized environment that's discarded when the program finishes running.

    The new feature was revealed in a bug-hunting quest for members of the Insider program and will carry the name "InPrivate Desktop." While the quest has now been removed, the instructions outlined the basic system requirements—a Windows 10 Enterprise system with virtualization enabled and adequate disk and memory—and briefly described how it would be used. There will be an InPrivate Desktop app in the store; running it will present a virtualized desktop environment that can be used to run questionable programs and will be destroyed when the window is closed.

    [...]

    Fonte: https://arstechnica.com/staff/2018/08/windows-10-to-get-disposable-sandboxes-for-dodgy-apps/

    • 0 respostas
  8. Re: Como fazer a minha contabilidade organizada (TOC)

    americob
    Por americob,

    Não percebeste o que escrevi.

    Um TOC só pode fazer a sua contabilidade ser for uma empresa de contabilidade. Se for uma empresa de engenharia, informática ou outra, mesmo sendo TOC tem de contratar um colega TOC para a fazer porque está impedido pelo Código Deontológico. Digamos que há conflito de interesses.

    • 5 respostas
  9. Re: Verificar se funcionário entrou ou saiu

    nelsonr
    Por nelsonr,

    Boa tarde footboyedit,

    esquecendo a parte do SQL, o que indica se o funcionario entrou ou saiu? Pela hora de picagem?
    Se estiver perto da hora de entrada é porque entrou, se tiver perto da hora de saida é porque saiu?

    Podes por exemplo fazer um select que te retorna a diferença de hora do campo Pica com cada um dos campos do horario da ficha do funcionario. Depois consideras o que tiver menor diferença.

    No entanto isso poderá não funcionar bem se o funcionar entrar por exemplo às 12h. Ficaria perto da hora de saida e iria considerar que saiu.

    Nesse caso poderás considerar o total de picas do dia. Se for impar é porque entrou, se for par é porque saiu
     

    Espero que ajude,
    nelsonr

    • 1 resposta
  10. Re: Verificar se funcionário entrou ou saiu

    footboyedit
    Por footboyedit,

    Olá a todos, precisava de uma ajudinha 

    Tenho 2 tabelas sql server:
     

    Funcionarios:
    
    Id                   1
    Nome                 José Ferreira
    HorarioEntrada1      08:00
    HorarioSaida1        12:30
    HorarioEntrada2      13:30
    HorarioSaida2        17:00
    
    Picagem:
    
    Id                   267384
    Func_Id              1
    Pica                 2018-08-08 12:32:34 

    O que quero fazer é ao percorrer todas os registos na tabela Picagem, verificar se o funcionário saiu ou entrou na empresa, de acordo com o horário do mesmo. Qual a forma mais simples e eficaz de resolver isto?

    Desde já, muito obrigado.

    • 1 resposta
  11. Re: System.NullReferenceException: 'A referência de objecto não foi definida como uma instância de um objecto.'

    nelsonr
    Por nelsonr,

    Bom dia Ghost,

    não indicas a linha de erro, mas de acordo com o outro tópico que criaste, será na segunda do MostraRegistos.

    Tal como tinha indicado na mensagem anterior, se não tens registos, o CurrentRow vai estar a NULL, o que provoca o erro quando tenta aceder às células.

    Adiciona uma verificação se a grelha tem linhas antes de fazeres aquela parte do código. Algo assim (não testado):

    Private Sub MostraRegistos()
    	RegistoStripLabel.Text = "Reclamação nº:" & RegistoAtual + 1
    
    	if DataGridView.Rows.Count=0 then return
    
    	txtReferencia.Text = dgvBaterias.CurrentRow.Cells("Referencia").Value.ToString
    	txtCliente.Text = dgvBaterias.CurrentRow.Cells("Cliente").Value.ToString
    	txtNCliente.Text = dgvBaterias.CurrentRow.Cells("NCliente").Value.ToString
    	txtFTCliente.Text = dgvBaterias.CurrentRow.Cells("FCliente").Value.ToString
    	dtpDFatura.Text = dgvBaterias.CurrentRow.Cells("DFatura").Value.ToString
    	txtNDevolucao.Text = dgvBaterias.CurrentRow.Cells("NDevolucao").Value.ToString
    	txtNCArmazem.Text = dgvBaterias.CurrentRow.Cells("NCArmazem").Value.ToString
    	txtNCCliente.Text = dgvBaterias.CurrentRow.Cells("NCCliente").Value.ToString
    	txtMEntrada.Text = dgvBaterias.CurrentRow.Cells("MEntrada").Value.ToString
    	cboDesignacao.Text = dgvBaterias.CurrentRow.Cells("Designacao").Value.ToString
    	cboObservacoes.Text = dgvBaterias.CurrentRow.Cells("Observacoes").Value.ToString
    End Sub 

    Espero que ajude,
    nelsonr

    • 3 respostas
  12. Re: System.NullReferenceException: 'A referência de objecto não foi definida como uma instância de um objecto.'

    Ghost
    Por Ghost,

    Boas Nelson

    o código onde dá o erro é o seguinte:

        Private Sub MostraRegistos()
            RegistoStripLabel.Text = "Reclamação nº:" & RegistoAtual + 1
    
            txtReferencia.Text = dgvBaterias.CurrentRow.Cells("Referencia").Value.ToString
            txtCliente.Text = dgvBaterias.CurrentRow.Cells("Cliente").Value.ToString
            txtNCliente.Text = dgvBaterias.CurrentRow.Cells("NCliente").Value.ToString
            txtFTCliente.Text = dgvBaterias.CurrentRow.Cells("FCliente").Value.ToString
            dtpDFatura.Text = dgvBaterias.CurrentRow.Cells("DFatura").Value.ToString
            txtNDevolucao.Text = dgvBaterias.CurrentRow.Cells("NDevolucao").Value.ToString
            txtNCArmazem.Text = dgvBaterias.CurrentRow.Cells("NCArmazem").Value.ToString
            txtNCCliente.Text = dgvBaterias.CurrentRow.Cells("NCCliente").Value.ToString
            txtMEntrada.Text = dgvBaterias.CurrentRow.Cells("MEntrada").Value.ToString
            cboDesignacao.Text = dgvBaterias.CurrentRow.Cells("Designacao").Value.ToString
            cboObservacoes.Text = dgvBaterias.CurrentRow.Cells("Observacoes").Value.ToString
        End Sub
    
    
        Private Sub PreencheDataSet()
            dsBaterias.Clear()
            Dim da = New OleDb.OleDbDataAdapter("SELECT * from Baterias", cnADONETConexao)
            da.Fill(dsBaterias, "Baterias")
            RegistoAtual = 0
            TotalRegistos = dsBaterias.Tables("Baterias").Rows.Count - 1
    
        End Sub

     

    • 3 respostas
  13. Re: System.NullReferenceException: 'A referência de objecto não foi definida como uma instância de um objecto.'

    nelsonr
    Por nelsonr,

    Boa tarde Ghost,

    se não tens linhas, então o CurrentRow não vai ter conteúdo (é Null), dai dar erro ao usares o get.

    Não mostraste o código que tens, mas faz uma verificação se tens linhas antes de fazer alguma coisa. Por exemplo com DataGridView.Rows.Count

     

    Espero que ajude,
    nelsonr

    • 3 respostas
  14. Re: System.NullReferenceException: 'A referência de objecto não foi definida como uma instância de um objecto.'

    Ghost
    Por Ghost,

    Boa tarde Pessoal

    tenho um problema, criei uma base de dados em access para abrir num programa que estou criando, mas a tabela que criei não contem registos e o programa não abre

    e dá erro....

    o programa só abre se tiver registos dentro da base de dados....

    como é que eu faço para abrir o programa com a base de dados sem registos, para depois dentro do programa adicionar....

    Preciso mesmo de ajuda pessoal

    Atenciosamente

    Ghost

    O erro que aparece no visual studio ao abrir o programa é o seguinte:

    System.NullReferenceException: 'A referência de objecto não foi definida como uma instância de um objecto.'

    System.Windows.Forms.DataGridView.CurrentRow.get retornou Nothing.

    • 3 respostas
  15. Re: Utilizar Webservices da AT

    antseq
    Por antseq,
    Em 10/08/2018 às 14:57, Hugo Costa disse:

    Boa tarde,

    Completando a informação deixada pelo RikFonseca, o TLS 1.2 não é compatível com o Windows XP, como poderão ver no seguinte endereço:

    https://blogs.msdn.microsoft.com/kaushal/2011/10/02/support-for-ssltls-protocols-on-windows/

    Deixo aqui onde podem verificar em que atualização foi disponibilizado o novo protocolo e como ativar:

    https://support.microsoft.com/en-us/help/4040243/how-to-enable-tls-1-2-for-configuration-manager

    https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-a-default-secure-protocols-in

     

    Mais uma vez obrigado ao RikFonseca e Hugo Costa.

    Voltei ao VS2015 +.net 3.5 e acrescentei estas linhas:

    //Tls=192 | Tls11=768 | Tls12=3072
    ServicePointManager.SecurityProtocol =
        SecurityProtocolType.Tls | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
    ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

    Para já parece estar funcionar em + computadores (excepto XP) mesmo no Windows 10 Home que antes não funcionava.

    (Em alternativa, ainda tenho a outra versão em VS2017 +.net 4.5 sem qualquer linha acrescentada)

    Cumprimentos.

    • 7595 respostas
  16. Re: Registar artigos mostrados no POS

    washalbano
    Por washalbano,

    Olá Rui!
    É isso mesmo!
    Você vai ter um tipo de Model(Arquivo que se comunica com o banco de dados), que vai executar uma função de busca e te devolver os dados.
    Aí você envia pra View(Arquivo responsável pela exibição dos dados no browser) e monta a exibição da forma que achar melhor
    Você pode se comunicar com o database usando MySqli ou PDO

    • 1 resposta
  17. Re: Utilizar Webservices da AT

    Hugo Costa
    Por Hugo Costa,
    6 minutos atrás, RikFonseca disse:

    Boa tarde,

    Quando não definimos o SecurityProtocol, é utilizado o protocolo que estiver definido por defeito no Windows... O que tem sido alterado nos ultimos tempos através do Windows Update. Por isso, forcei a utilização de TLS 1.2.

    O ServerCertificateValidationCallback serve para ignorar a validação do certificado remoto (o tal que foi alterado pela AT, cuja entidade emissora - COMODO - não consta nas entidades de certificação raiz). Se instalares o certificado em todas as máquinas, não é necessário estar a implementar isto...

    Relativamente à framework, eu estou a utilizar a 3.5 (por isso tive de utilizar o valor 3072 em vez da constante por não existir), e só tive problemas com máquinas que não tinham updates em dia... o erro algo semelhante a: «could not load protocol»...

    Não tenho a aplicação instalada em XP, mas como o XP não tem atualizações, pode não ter o protocolo instalado ou estar desativado no registry...

     

    Boa tarde,

    Completando a informação deixada pelo RikFonseca, o TLS 1.2 não é compatível com o Windows XP, como poderão ver no seguinte endereço:

    https://blogs.msdn.microsoft.com/kaushal/2011/10/02/support-for-ssltls-protocols-on-windows/

    Deixo aqui onde podem verificar em que atualização foi disponibilizado o novo protocolo e como ativar:

    https://support.microsoft.com/en-us/help/4040243/how-to-enable-tls-1-2-for-configuration-manager

    https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-a-default-secure-protocols-in

     

    • 7595 respostas
  18. Re: Utilizar Webservices da AT

    RikFonseca
    Por RikFonseca,
    39 minutos atrás, antseq disse:

    Boa tarde,

    Obrigado ao Portelinha, brsqueiros e RikFonseca pelas sugestões.

    No meu caso a aplicação de envio de guias (c# .net), é um programa à parte "add-on", isolado da aplicação principal (não .net) que só compilo ou actualizo "quando o rei faz anos" ou neste caso quando há problemas.

    Aproveitei para actualizar a mesma que estava em VS2015 : target .net 3.5, para VS2017 : target .net 4.5 e passou a funcionar sem alterar qualquer linha no código ( não utilizava a linha "ServicePointMana ger.SecurityProtocol=..." , nem acrescentei "ServerCertificateValidationCallback=..."

    O únicos problemas, por agora:
    - há clientes (ainda) com XP que continuam com o problema. provavelmente devido ao .net 4.5 não parece ser compatível.
    há alguém a comunicar guias (ainda) em XP? com o .net 4.5? ou conseguem enviar ainda com o .net 3.5?

    - algumas máquinas com o Windows 10 Home, parecem estar com o mesmo problema. já tiveram estes problema?

    Desde já obrigado, por qualquer sugestão.

     

    Boa tarde,

    Quando não definimos o SecurityProtocol, é utilizado o protocolo que estiver definido por defeito no Windows... O que tem sido alterado nos ultimos tempos através do Windows Update. Por isso, forcei a utilização de TLS 1.2.

    O ServerCertificateValidationCallback serve para ignorar a validação do certificado remoto (o tal que foi alterado pela AT, cuja entidade emissora - COMODO - não consta nas entidades de certificação raiz). Se instalares o certificado em todas as máquinas, não é necessário estar a implementar isto...

    Relativamente à framework, eu estou a utilizar a 3.5 (por isso tive de utilizar o valor 3072 em vez da constante por não existir), e só tive problemas com máquinas que não tinham updates em dia... o erro algo semelhante a: «could not load protocol»...

    Não tenho a aplicação instalada em XP, mas como o XP não tem atualizações, pode não ter o protocolo instalado ou estar desativado no registry...

     

    • 7595 respostas
  19. Re: Separar conteúdo de arquivo HTM com Pascal

    nunopicado
    Por nunopicado,
    Em 08/08/2018 às 21:09, Roberto Duha disse:

    Problema que ele não tem marcação de final de linha..... quando mando ler uma linha, ele tenta ler o arquivo todo (1.2Mb) e dá erro de execução.

    Qual o método que estás a usar para ler o ficheiro? O Lazarus consegue abrir ficheiros maiores do que esse sem problema, dependendo do método o usado.

    A minha recomendação é que usasses uma TStringList para ler o ficheiro, e depois processes tudo em memória até à hora de gravar.

    Por exemplo, algo deste género pode resolver:

    uses
        System.SysUtils
      , Classes
      ;
    
    var
      Lst: TStringList;
      i: Integer;
      s: string;
    
    begin
      Lst := TStringList.Create;
      try
        // Carrega o conteúdo do ficheiro
        Lst.LoadFromFile('mega.html');
    
        // Faz o parsing, eliminando as linhas que não importam, e o excedente das linhas que importem
        for i := Pred(Lst.Count) downto 0 do
          if Pos('<td', Lst[i]) = 0
            then Lst.Delete(i) // Elimina qualquer linha que não tenha um inicio de valor ('<td')
            else
              begin // Das linhas com valores, limpa o que não importa  
    
                Delete(s, 1, Pos('>', s)); // Limpa tudo o que está antes (até ao caracter '>')
    
                Delete(s, Pos('<', s), s.Length); // Limpa tudo o que está depois (do caracter '<')
    
                s := Trim(Lst[i]); // Limpa espaços antes e depois do valor final
    
                if s.IsEmpty or (s = '&nbsp') // Limpa valores que não façam falta ao resultado final, como eventualmente linhas vazias e com símbolos html
                  then Lst.Delete(i)
                  else Lst[i] := s;
              end;
    
        // Grava o resultado final 
        Lst.SaveToFile('E:\Users\nunopicado\Dropbox\mega.txt');
      finally
        Lst.Free;
      end;
    end.

     

    • 4 respostas
  20. Re: Utilizar Webservices da AT

    antseq
    Por antseq,
    23 horas atrás, antseq disse:

    Boa tarde,

    Tenho acesso limitado a internet e duas questões, agradeço desde já quem puder ajudar:

    1) liguei agora para a AT, 217206707, teclas 1/5/3 e disseram me que nada mudou do lado deles, nem o certificado!? Para que número é que ligaram para obter informações + técnicas?

    2) na minha aplicação .net, já tinha aquela linha ...ssl3 comentada há muito muito tempo e mesmo assim a aplicação não comunica guias. Há algo mais a fazer?

    Desde já obrigado.

    Boa tarde,

    Obrigado ao Portelinha, brsqueiros e RikFonseca pelas sugestões.

    No meu caso a aplicação de envio de guias (c# .net), é um programa à parte "add-on", isolado da aplicação principal (não .net) que só compilo ou actualizo "quando o rei faz anos" ou neste caso quando há problemas.

    Aproveitei para actualizar a mesma que estava em VS2015 : target .net 3.5, para VS2017 : target .net 4.5 e passou a funcionar sem alterar qualquer linha no código ( não utilizava a linha "ServicePointMana ger.SecurityProtocol=..." , nem acrescentei "ServerCertificateValidationCallback=..."

    O únicos problemas, por agora:
    - há clientes (ainda) com XP que continuam com o problema. provavelmente devido ao .net 4.5 não parece ser compatível.
    há alguém a comunicar guias (ainda) em XP? com o .net 4.5? ou conseguem enviar ainda com o .net 3.5?

    - algumas máquinas com o Windows 10 Home, parecem estar com o mesmo problema. já tiveram estes problema?

    Desde já obrigado, por qualquer sugestão.

     

    • 7595 respostas
  1. Ver Mais Actividade
×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.