bnobre
Membro Pro Verificado-
Total de ítens
1.747 -
Registro em
-
Última visita
-
Days Won
4
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que bnobre postou
-
Uso de Interface nos componentes do ACBr
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Oi @Daniel Simoes, Vou ver sim, mas a grande maioria pelo que reparei não usa. Legal essa sua técnica de receber eles como parâmetros. -
Uso de Interface nos componentes do ACBr
um tópico no fórum postou bnobre Object Pascal - Delphi & Lazarus
Olá a todos, Aqui nos meus estudos sobre POO reparei que nos componentes do ACBr não se faz o uso das Interfaces do Delphi e muitos programadores sugerem que é mais interessante programar orientado a interfaces do que a objetos. Tem algum motivo em especial para não se fazer o uso de Interfaces nos componentes? Desde já agradeço a atenção -
Olá a todos, Na codificação das units do ACBr, muitas vezes é usado a letra A no início do nome dos parâmetros, como por exemplo na unit ACBrJSON (AValue): function AddElement(const AValue: string): TACBrJSONArray; overload; function AddElement(const AValue: Integer): TACBrJSONArray; overload; function AddElementJSON(AValue: TACBrJSONObject): TACBrJSONArray; overload; function AddElementJSONString(const AValue: string): TACBrJSONArray; overload; O que significa e porque usam esse padrão? Desde já agradeço a atenção
-
Dúvida sobre destruição da Classe
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Finalmente descobri o significado da linha abaixo: TJsonObject(FValue.O) Está aplicando um Typecast, dizendo que FValue.O trata-se de um TJsonObject. Fonte: https://docwiki.embarcadero.com/RADStudio/Athens/en/Expressions_(Delphi)#Typecasts Já FValue é um um Record onde o field O recebe valores do tipo ponteiros. Portanto FValue.O possui o endereço de memória onde estão gravados objetos json, daí o TypeCast para trata-los como tal. Só ainda não consegui descobrir em qual linha o FValue.O recebe esses endereços. -
Dúvida sobre destruição da Classe
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Exato... Por isso que estou tentando entender O PORQUE Estou no caminho certo em meu entendimento? -
Dúvida sobre destruição da Classe
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Oi pessoal... Acho que a "mágica" está aqui: (Linha 2301 da unit JsonDataObjects_ACBr) function TJsonDataValue.GetObjectValue: TJsonObject; begin if FTyp = jdtObject then Result := TJsonObject(FValue.O) //******************* Aqui else if FTyp = jdtNone then Result := nil else begin TypeCastError(jdtObject); Result := nil; end; end; Quando o tipo armazenado é um objeto(jdtObject) ele retorna o TJsonObject(FValue.O). O FValue.O é um ponteiro, apontando para o local onde está o objeto da lista de arrays em questão. O detalhe é que eu não entendi esse código TJsonObject(FValue.O). Basicamente ele usa o nome da classe como se fosse uma função e o parâmetro é o ponteiro. Isso executa alguma propriedade ou função dentro da classe TJsonObject? Se sim qual? -
Dúvida sobre destruição da Classe
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Sim... Na verdade parece que a "mágica" acontece com o uso de ponteiros na classe TJsonDataValue da unit JsonDataObjects_ACBr. Muito interessante -
Dúvida sobre destruição da Classe
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Oi @Daniel Simoes, tudo bom? Não, na verdade se tento destruir o objeto gera o erro "invalid pointer value", pois conforme o @valterpatrick explicou, o objeto (LJsonObject) está apontando para dentro de outro objeto (LJSon) que já foi destruído, portanto esse endereço de memória não existe mais. Estou apenas estudando o código e melhorando meus conhecimentos na IDE. -
Dúvida sobre destruição da Classe
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Oi meu amigo... Tudo bom? Obrigado pela explicação, faz sentido. Só não consegui achar no código onde exatamente isso acontece. Na linha 81 da unit ACBrConsultaCNPJ.WS.BrasilAPI acontece a criação do objeto: LJsonObject := LJSon.ItemAsJSONObject[I]; Como você disse, está dentro do LJSon, pois inclusive usa uma propriedade desse objeto, a ItemAsJSONObject. Tal propriedade usa a função GetItemAsJSONObject (linha 886 da unit ACBrJSON) para leitura. É aqui que estou me perdendo nesse conceito de "dentro do objeto"... Dentro dessa função temos a seguinte estrutura (removi as diretivas de compilação, exemplo está somente para Windows): function TACBrJSONArray.GetItemAsJSONObject(const AIndex: Integer): TACBrJSONObject; var LJSON: TJsonObject; begin LJSON := FJSON.Items[AIndex].ObjectValue.Clone; try Result := TACBrJSONObject.Create(LJSON); Result.OwnerJSON := True; FContexts.Add(Result); except LJSON.Free; raise; end; end; Suponho que a linha que faz criar o objeto "dentro" do LJson do exemplo é a linha: LJSON := FJSON.Items[AIndex].ObjectValue.Clone; Mas ao tentar estudar esse ObjectValue e esse Clone estou me perdendo. Vou tentar estudar esse código para ver se compreendo melhor. Desde já agradeço a ajuda -
Olá a todos, Estou dando uma estudada nos componentes do ACBr e me deparei com uma dúvida na classe TACBrConsultaCNPJWSBrasilAPI presente na unit ACBrConsultaCNPJ.WS.BrasilAPI. A mesma possui uma procedure Executar onde é implementado um código que varre um array de objetos Json e preenche a resposta. São declarados dois objetos para tal LJSon que representa o array e o LJsonObject que representa cada objeto dentro do array. Porém ao final o LJsonObject não precisa ser destruído... Na verdade reproduzi o código e se tentar destruir dá erro. Fui indo cada vez mais fundo nas classes usadas (units ACBrJSON e JsonDataObjects_ACBr), porém não consegui entender o motivo de não precisar destruir o objeto. Alguém poderia me explicar? Desde já agradeço a atenção
-
Hub de Integração com Marketplaces
bnobre replied to bnobre 's tópico in Dúvidas não relacionadas ao ACBr
Bom dia @Juliomar Marchetti... Respondendo!!! -
OAuth2 com Url de Redirect Pública
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Cara... Verdade!!! Você usa ou conhece alguém que usa a Integração com o Mercado Livre + Delphi e aplicou essa técnica nessa etapa em que fiquei empacado??? -
OAuth2 com Url de Redirect Pública
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Olá @Daniel Simoes... Tudo bom??? Agora você falou grego pra mim O que seria essa API Web? Poderia me dar um exemplo? Desde já agradeço a atenção -
OAuth2 com Url de Redirect Pública
um tópico no fórum postou bnobre Object Pascal - Delphi & Lazarus
Olá a todos, Estou tentando fazer o processo de autenticação no Mercado Livre usando o Delphi + Httpsend (Synapse) e o mesmo usa o protocolo de autorização OAuth2. O processo na verdade é simples, basta acessar o respectivo link com o os parâmetros responsetype = code, client_id e redirect_uri e será retornado o Código de Autorização após o devido login, aonde o mesmo será usado para a geração dos Tokens. O problema é capturar esse Código de Autorização automaticamente, para não ter que ficar digitando esse link manualmente e nem copiar esse código manualmente. Pelo que pesquisei, normalmente em aplicações desktop quando esse procedimento de autorização OAuth2 é concluído logo em seguida o link de redirect manda o navegador para um endereço local (http://localhost:1500 por exemplo) onde a aplicação está escutando e assim captura o Código de Autorização na URL, exemplo: https://github.com/rvk01/google-oauth2/blob/master/google_oauth2.pas A questão é que o Mercado Livre não deixa especificar endereços locais no redirect_uri das aplicações que serão usadas na integração. Na verdade pelo que li deixava no passado, porém agora não. Portanto se ele não redireciona para um endereço local, minha aplicação não consegue ficar escutando e consequentemente não consigo capturar o parâmetro onde está o Código de Autorização retornado após o login na plataforma. Como vocês fazem nesse caso em particular para a captura automática desse Código de Autorização? Desde já agradeço a atenção -
Hub de Integração com Marketplaces
bnobre replied to bnobre 's tópico in Dúvidas não relacionadas ao ACBr
Olá... Tudo bem? Você comentou "a gente". Você fornece esse serviço? Se sim poderia detalhar mais? Desde já agradeço a atenção -
Hub de Integração com Marketplaces
um tópico no fórum postou bnobre Dúvidas não relacionadas ao ACBr
Olá a todos, Estamos querendo integrar nosso sistema PDV com soluções de marketplace do mercado, como Shoppe, MercadoLivre, dentre outros. Como todo dia novos marketplaces surgem no mercado, assim como questões técnicas mudam a todo momento nos atuais, os hubs de integração parecem a escolha mais assertiva. Alguém que utilize recomenda algum? Desde já agradeço a atenção -
Executável compilado - Código Exposto
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Sim sim... O foco realmente é dificultar para a visualização no Bloco de Notas, com ferramentas profissionais e escaneamento da memória não tem jeito, vai passar. Mas com o foco no Bloco de Notas, creio que o caminho é uma criptografia para embaralhar a string e dificultar o acesso a chave da criptografia, com as técnicas citadas pelo @Daniel Simoes (tabela ASCII com símbolos). Acho que é isso!!! -
Executável compilado - Código Exposto
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Olá meu amigo, tudo bom? Eu só não entendi o momento da aplicação desse teu exemplo. Como a String com conteúdo sensível fica exposta o objetivo é ocultá-la, daí a necessidade de criptografá-la, pois o conteúdo exposto ficará ilegível. Porém toda a criptografia precisa de uma chave e ela também ficaria exposta pelo fato de ser String, daí a dica interessante do @Daniel Simoes de usar símbolos fora do alfabeto com o padrão ASCII para a chave e quebrar a mesma em várias partes, pois mesmo ela ficando exposta se misturaria com o resto do código dificultando os hackers básicos... Em que momento você aplica essa técnica que você mencionou acima??? -
Executável compilado - Código Exposto
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Porém agora me surgiu outra dúvida... Tenho que ter essa preocupação com valores Inteiros também ou essa exposição só ocorre para os tipos String? -
Executável compilado - Código Exposto
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Hummmmm... Você está usando valores ASCII que não tem representação no teclado tradicional, exceto pelo #(45) = "-" e #(76) = "L". Eu não me atentei que podia usar valores ASCII que representassem símbolos. https://www.ascii-code.com/ Agora ficou legal!!! -
Executável compilado - Código Exposto
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Isso aí ficou legal hein @Daniel Simoes Mas a questão das constantes em ASCII é irrelevante, visto que conforme eu mostrei acima o resultado final escrevendo literalmente ou em ASCII dá na mesma. -
Executável compilado - Código Exposto
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Realizei outro teste aqui com o uso de caracteres em ASCII conforme sugerido, mas não mudou em nada, continua exibindo como se tivesse escrito a String de forma direta: -
Executável compilado - Código Exposto
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Olá meu amigo, Estava testando aqui... Quando atribuo pelo Object Inspector o valor aparece literal no bloco de notas, porém quando atribuo no *.pas em Runtime, ao contrário do que pensei ele continua aparecendo, não mais de forma literal, porém em Unicode conforme você relatou... Caramba!!! -
Executável compilado - Código Exposto
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Ainda pra complementar o meu entendimento até o momento com a leitura de todos os comentários e observações. Vejamos o próprio exemplo do amigo @Daniel Simoes, onde é usado a função StrCrypt do ACBrUtil.FilesIO, que possui a seguinte assinatura: Eu sou obrigado a passar a String que quero criptografar, além da chave criptográfica, como por exemplo executando o código abaixo em RunTime: Nesse momento não tem jeito, antes de efetuar a criptografia tenho que informar os dados de forma literal e eles irão para a tabela Resources, agora não sei se vai dar para ler pelo bloco de notas(exemplo do OLÁ EU SOU UMA STRING) ou não (como no meu caso que relatei). Supondo que não se consiga ler pelo bloco de notas, ainda dá pra ler em memória como o amigo @TiagoTecchio observou e isso mesmo compactando pelo UPX. -
Executável compilado - Código Exposto
bnobre replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Concordo meu amigo... Agora que eu sei dessa "característica", gostaria de saber a técnica usada pelos programadores em Delphi para minimizar tal situação. Pelo relato dos amigos do fórum que são programadores Delphi de longa data, creio que é focar na questão da criptografia e mascaramento da chave criptográfica usando os caracteres ASCII, porém sabendo que não é nada 100%.
