Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: Delphi ::: Delphi + Firebird ::: Inserção (adição, gravação) de dados

Como salvar uma imagem JPG em um campo BLOB do Firebird (usando dbExpress) e exibí-la de volta em um TImage

Quantidade de visualizações: 31083 vezes
Nesta dica mostro como realizar uma tarefa um pouco mais complicada: como salvar uma imagem JPG (o mesmo pode ser feito para Bitmaps e GIFs com pequenas modificações) em um campo BLOB de uma tabela do Firebird (usando dbExpress) e exibí-la de volta em um TImage. O fato de estarmos usando dbExpress complica um pouco mais, visto que não podemos contar com um componente TDBImage para a exibição da imagem recuperada do banco de dados.

Vamos começar criando a tabela no banco de dados Firebird. Para este exemplo usei uma tabela com três campos somente. Veja o comando SQL DDL CREATE TABLE:

CREATE TABLE PESSOAS (
  ID    INTEGER NOT NULL,
  NOME  VARCHAR(40),
......


Embora não esteja detalhado, o campo ID é auto-incremento. Tenha a certeza de criar o GENERATOR/SEQUENCE e o trigger necessários. Se estiver com dúvidas em relação a isso, pesquise minhas dicas sobre o assunto.

Uma vez criada a tabela, coloque um componente TSQLConnection (aba dbExpress) no formulário e efetue a conexão com a base de dados Firebird na qual você criou a tabela anterior. Agora coloque um componente TSQLDataSet (também na aba dbExpress) no formulário e ajuste sua propriedade Connection para o componente de conexão. Finalmente, coloque o código abaixo no evento Click de um botão:

procedure TForm1.Button1Click(Sender: TObject);
var
  nome: string;
  foto: TFileStream;
begin
  if OpenPictureDialog1.Execute then
    begin
      // nome da pessoa
      nome := Edit1.Text;

      // foto da pessoa
      foto := TFileStream.Create(OpenPictureDialog1.FileName, fmOpenRead);

      // vamos definir o comando SQL a ser executado
      SQLDataSet1.CommandText := 'INSERT INTO PESSOAS(NOME, FOTO) VALUES(:nome, :foto)';
......


Aqui a imagem JPG será selecionada a partir de um diálogo TOpenPictureDialog. Note também que o nome da pessoa vem de uma caixa de texto TEdit. Execute a aplicação, escolha uma imagem e salve-a na tabela do banco de dados.

A imagem foi salva com sucesso? Hora de exibí-la de volta em um componente TImage. Para isso coloque um componente TImage no formulário e cole o código abaixo no evento Click de um segundo botão:

procedure TForm1.Button2Click(Sender: TObject);
var
  id: Integer; // id da pessoa
  foto: TStream;  // um stream para o conteúdo do campo BLOB
  imagem: TJPEGImage;  // a imagem JPG
begin
  // uses Jpeg

  // id da pessoa
  id := 1;

  // vamos definir o comando SQL a ser executado
  SQLDataSet1.Close;
  SQLDataSet1.CommandText := 'SELECT * FROM PESSOAS WHERE ID = :id';
  SQLDataSet1.Params[0].Name := 'id';
  SQLDataSet1.Params[0].Value := id;
......


Aqui nós usamos o método CreateBlobStream() da classe TSQLDataSet para criar um stream a partir do campo BLOB da tabela PESSOAS e atribuí-lo à variável foto, do tipo TStream. Em seguida criamos um objeto da classe TJPEGImage, carregamos a imagem JPG a ser exibida a partir do stream foto e finalmente a exibimos no componente TImage. Não se esqueça de adicionar Jpeg á cláusula uses do seu formulário.

Link para compartilhar na Internet ou com seus amigos:

Java ::: Reflection (introspecção) e RTI (Runtime Type Information) ::: Passos Iniciais

Como usar o método getMethods() da classe Class - Como listar todos os métodos de uma classe ou interface Java em tempo de execução - Revisado

Quantidade de visualizações: 9036 vezes
O método getMethods() da classe Class permite obter um vetor contendo todos os métodos públicos de uma classe ou interface. Este método retorna um vetor de objetos da classe Method[] e pode atirar uma exceção SecurityException. Veja que os métodos herdados de e por superclasses da classe sendo investigada são também retornados.

O exemplo a seguir mostra como listar todos os métodos públicos da classe javax.swing.JButton (veja como usamos o método getName() da classe Method para obter o nome do método):

package arquivodecodigos;

import java.lang.reflect.*;
 
public class Estudos{
  public static void main(String args[]){
    // vamos carregar a classe JButton
    try{
      Class c = Class.forName("javax.swing.JButton");
 
      // obtém os nomes dos métodos
      Method[] metodos = c.getMethods(); 
......


Note que aqui nós estamos usando o método getName() da classe Method para retornar apenas o nome do método. Nesta seção você encontra exemplos de como obter também o tipo de retorno dos métodos de um determinada classe ou interface.

A execução desse código gera uma lista gigante de métodos. Vou mostrá-los abaixo para que você tenha uma idéia do funcionamento real:

getAccessibleContext(), getUIClassID(), isDefaultButton(), isDefaultCapable(), removeNotify(), setDefaultCapable(), updateUI(), getUI(), setAction(), setModel(), setUI(), addActionListener(), addChangeListener(), addItemListener(), doClick(), doClick(), getAction(), getActionCommand(), getActionListeners(), getChangeListeners(), getDisabledIcon(), getDisabledSelectedIcon(), getDisplayedMnemonicIndex(), getHideActionText(), getHorizontalAlignment(), getHorizontalTextPosition(), getIcon(), getIconTextGap(), getItemListeners(), getLabel(), getMargin(), getMnemonic(), getModel(), getMultiClickThreshhold(), getPressedIcon(), getRolloverIcon(), getRolloverSelectedIcon(), getSelectedIcon(), getSelectedObjects(), getText(), getVerticalAlignment(), getVerticalTextPosition(), imageUpdate(), isBorderPainted(), isContentAreaFilled(), isFocusPainted(), isRolloverEnabled(), isSelected(), removeActionListener(), removeChangeListener(), removeItemListener(), setActionCommand(), setBorderPainted(), setContentAreaFilled(), setDisabledIcon(), setDisabledSelectedIcon(), setDisplayedMnemonicIndex(), setEnabled(), setFocusPainted(), setHideActionText(), setHorizontalAlignment(), setHorizontalTextPosition(), setIcon(), setIconTextGap(), setLabel(), setLayout(), setMargin(), setMnemonic(), setMnemonic(), setMultiClickThreshhold(), setPressedIcon(), setRolloverEnabled(), setRolloverIcon(), setRolloverSelectedIcon(), setSelected(), setSelectedIcon(), setText(), setVerticalAlignment(), setVerticalTextPosition(), update(), contains(), getLocation(), print(), getSize(), isOpaque(), disable(), enable(), addAncestorListener(), addNotify(), addVetoableChangeListener(), computeVisibleRect(), createToolTip(), getActionForKeyStroke(), getActionMap(), getAlignmentX(), getAlignmentY(), getAncestorListeners(), getAutoscrolls(), getBaseline(), getBaselineResizeBehavior(), getBorder(), getBounds(), getClientProperty(), getComponentPopupMenu(), getConditionForKeyStroke(), getDebugGraphicsOptions(), getDefaultLocale(), getFontMetrics(), getGraphics(), getHeight(), getInheritsPopupMenu(), getInputMap(), getInputMap(), getInputVerifier(), getInsets(), getInsets(), getMaximumSize(), getMinimumSize(), getNextFocusableComponent(), getPopupLocation(), getPreferredSize(), getRegisteredKeyStrokes(), getToolTipLocation(), getToolTipText(), getToolTipText(), getTopLevelAncestor(), getTransferHandler(), getVerifyInputWhenFocusTarget(), getVetoableChangeListeners(), getVisibleRect(), getWidth(), getX(), getY(), grabFocus(), hide(), isDoubleBuffered(), isLightweightComponent(), isManagingFocus(), isOptimizedDrawingEnabled(), isPaintingForPrint(), isPaintingTile(), isRequestFocusEnabled(), isValidateRoot(), paint(), printAll(), putClientProperty(), registerKeyboardAction(), registerKeyboardAction(), removeAncestorListener(), removeVetoableChangeListener(), requestDefaultFocus(), requestFocus(), requestFocus(), requestFocusInWindow(), resetKeyboardActions(), reshape(), scrollRectToVisible(), setActionMap(), setAutoscrolls(), setBackground(), setBorder(), setComponentPopupMenu(), setDebugGraphicsOptions(), setDefaultLocale(), setDoubleBuffered(), setFocusTraversalKeys(), setFont(), setForeground(), setInheritsPopupMenu(), setInputMap(), setInputVerifier(), setMaximumSize(), setMinimumSize(), setNextFocusableComponent(), setOpaque(), setPreferredSize(), setRequestFocusEnabled(), setToolTipText(), setTransferHandler(), setVerifyInputWhenFocusTarget(), setVisible(), unregisterKeyboardAction(), firePropertyChange(), firePropertyChange(), firePropertyChange(), getRootPane(), getListeners(), paintImmediately(), paintImmediately(), repaint(), repaint(), revalidate(), setAlignmentX(), setAlignmentY(), add(), add(), add(), add(), add(), remove(), remove(), list(), list(), removeAll(), setFocusTraversalPolicyProvider(), transferFocusDownCycle(), validate(), getComponent(), getComponentCount(), getComponents(), getFocusTraversalPolicy(), invalidate(), isFocusCycleRoot(), isFocusCycleRoot(), setFocusTraversalPolicy(), addContainerListener(), applyComponentOrientation(), areFocusTraversalKeysSet(), countComponents(), deliverEvent(), doLayout(), findComponentAt(), findComponentAt(), getComponentAt(), getComponentAt(), getComponentZOrder(), getContainerListeners(), getFocusTraversalKeys(), getLayout(), getMousePosition(), insets(), isAncestorOf(), isFocusTraversalPolicyProvider(), isFocusTraversalPolicySet(), layout(), locate(), minimumSize(), paintComponents(), preferredSize(), printComponents(), removeContainerListener(), setComponentZOrder(), setFocusCycleRoot(), addPropertyChangeListener(), addPropertyChangeListener(), add(), remove(), toString(), getName(), contains(), size(), getLocation(), getParent(), setName(), list(), list(), list(), getSize(), location(), setSize(), setSize(), resize(), resize(), enable(), transferFocus(), transferFocusBackward(), addComponentListener(), addFocusListener(), addHierarchyBoundsListener(), addHierarchyListener(), addInputMethodListener(), addKeyListener(), addMouseListener(), addMouseMotionListener(), addMouseWheelListener(), bounds(), checkImage(), checkImage(), createImage(), createImage(), createVolatileImage(), createVolatileImage(), enableInputMethods(), getColorModel(), getComponentListeners(), getComponentOrientation(), getCursor(), getDropTarget(), getFocusListeners(), getFocusTraversalKeysEnabled(), getHierarchyBoundsListeners(), getHierarchyListeners(), getIgnoreRepaint(), getInputContext(), getInputMethodListeners(), getInputMethodRequests(), getKeyListeners(), getLocale(), getLocationOnScreen(), getMouseListeners(), getMouseMotionListeners(), getMouseWheelListeners(), getToolkit(), gotFocus(), hasFocus(), inside(), isBackgroundSet(), isCursorSet(), isFocusTraversable(), isFontSet(), isForegroundSet(), keyDown(), keyUp(), lostFocus(), mouseDown(), mouseDrag(), mouseEnter(), mouseExit(), mouseMove(), mouseUp(), move(), paintAll(), prepareImage(), prepareImage(), removeComponentListener(), removeFocusListener(), removeHierarchyBoundsListener(), removeHierarchyListener(), removeInputMethodListener(), removeKeyListener(), removeMouseListener(), removeMouseMotionListener(), removeMouseWheelListener(), setComponentOrientation(), setCursor(), setDropTarget(), setFocusTraversalKeysEnabled(), setFocusable(), setIgnoreRepaint(), show(), show(), transferFocusUpCycle(), getBackground(), getBounds(), getFocusCycleRootAncestor(), getFont(), getForeground(), getPeer(), getPropertyChangeListeners(), getPropertyChangeListeners(), getTreeLock(), isDisplayable(), isMaximumSizeSet(), isMinimumSizeSet(), isPreferredSizeSet(), isShowing(), isVisible(), nextFocus(), setBounds(), setBounds(), setLocale(), setLocation(), setLocation(), dispatchEvent(), getGraphicsConfiguration(), getMousePosition(), handleEvent(), isFocusable(), isLightweight(), isValid(), postEvent(), firePropertyChange(), firePropertyChange(), firePropertyChange(), firePropertyChange(), firePropertyChange(), action(), isEnabled(), isFocusOwner(), removePropertyChangeListener(), removePropertyChangeListener(), repaint(), repaint(), repaint(), wait(), wait(), wait(), equals(), hashCode(), getClass(), notify(), notifyAll(),

Esta dica foi revisada e atualizada para o Java 8.


C# ::: Dicas & Truques ::: Matemática e Estatística

Como calcular porcentagem em C# - Como efetuar cálculos de porcentagem em C#

Quantidade de visualizações: 33607 vezes
Cálculos de porcentagens estão presentes em boa parte das aplicações que desenvolvemos. Porém, há momentos em que a mente trava e não conseguimos lembrar com clareza como estes cálculos são feitos, principalmente em C#.

Esta anotação tem o objetivo de ser uma fonte de pesquisa para os momentos em que suas habilidades matemáticas insistirem em continuar ocultas.

Ex: 1 - Suponhamos que um produto que custe R$ 178,00 sofra um acréscimo de 15%. Qual o valor final do produto? Veja o código em C#:

// Algoritmo que calcula porcentagem em C#
using System;

namespace Estudos {
  class Principal {
    // função principal do programa C#
    static void Main(string[] args) {
      // variáveis usadas na resolução do problema
      double valor, percentual, valor_final;

      valor = 178.00; // valor original
      percentual = 15.0 / 100.0; // 15%
......


Ex: 2 - Um produto, cujo valor original era de R$ 250,00, teve um desconto de 8%. Qual foi seu valor final? Veja o código em C#:

// Algoritmo que calcula porcentagem em C#
using System;

namespace Estudos {
  class Principal {
    // função principal do programa C#
    static void Main(string[] args) {
      // variáveis usadas na resolução do problema
      double valor, percentual, valor_final;

      valor = 250.00; // valor original
      percentual = 8.0 / 100.0; // 8%
......


Ex: 3 - Em um concurso de perguntas e respostas, um jovem acertou 72 das 90 perguntas apresentadas. Qual foi a porcentagem de acertos? E a porcentagem de erros? Veja o código em C#:

// Algoritmo que calcula porcentagem em C#
using System;

namespace Estudos {
  class Principal {
    // função principal do programa C#
    static void Main(string[] args) {
      // variáveis usadas na resolução do problema
      double perguntas, acertos;

      perguntas = 90.0;
      acertos = 72.0;

      // mostra a porcentagem de acertos
      Console.WriteLine("Porcentagem de acertos: " +
......


Ex: 4 - Um aparelho de CD foi adquirido por R$ 300,00 e revendido por R$ 340,00. Qual foi a porcentagem de lucro na transação? Veja o código em C#:

// Algoritmo que calcula porcentagem em C#
using System;

namespace Estudos {
  class Principal {
    // função principal do programa C#
    static void Main(string[] args) {
      // variáveis usadas na resolução do problema
      double valor_anterior, novo_valor, porcentagem_lucro;

      valor_anterior = 300.0; // valor anterior
      novo_valor = 340.0; // valor novo

      // calcula a porcentagem de lucro
......


Ex: 5 - Uma loja repassa 5% do lucro a seus vendedores. Se um produto custa R$ 70,00, qual o valor em reais repassado a um determinado vendedor? Veja o código em C#:

// Algoritmo que calcula porcentagem em C#
using System;

namespace Estudos {
  class Principal {
    // função principal do programa C#
    static void Main(string[] args) {
      // variáveis usadas na resolução do problema
      double valor, percentual, comissao;

      valor = 70.0; // valor do produto
      percentual = 5.0 / 100.0; // 5%
......



Java ::: Java + MySQL ::: Passos Iniciais

Java MySQL - Como efetuar uma conexão Java + JDBC + MySQL usando o NetBeans IDE

Quantidade de visualizações: 7674 vezes
Se sua intenção é usar a linguagem Java em combinação com o banco de dados MySQL, o primeiro passo é aprender como se conectar a este banco de dados usando JDBC (Java Database Connectivity). Para isso, siga atentamente os passos abaixo:

a) Pesquise e baixe o driver Sun Microsystem's JDBC Driver for MySQL. A versão mais recente deste driver é chamada de MySQL Connector/J e pode ser baixada no endereço http://dev.mysql.com/downloads. Durante a autoria deste artigo, o nome do arquivo a ser baixado era semelhante à mysql-connector-java-5.1.10.zip.

b) Depois de descompactar o arquivo baixado, adicione uma referência para o Jar mysql-connector-java-5.1.10-bin.jar. Se você estiver usando NetBeans, crie uma nova aplicação. Em seguida clique com o botão direito em Bibliotecas -> Adicionar Jar/pasta e localize o jar. Em seguida clique o botão Open.

c) Hora de efetuar uma conexão com o banco de dados. Para este exemplo eu fiz uma conexão com o MySQL 5.0 (o nome da base de dados que usei foi "estudos"). Veja o código:

package estudosjavamysql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class EstudosJavaMySQL{
  public static void main(String[] args){
    // strings de conexão
    String databaseURL = "jdbc:mysql://localhost/estudos";
    String usuario = "root";
    String senha = "osmar1234";
    String driverName = "com.mysql.jdbc.Driver";
    
    try {
      Class.forName(driverName).newInstance();
      Connection conn = DriverManager.getConnection(databaseURL, usuario, senha);
......


Execute a aplicação. Se tudo correu bem você verá o resultado:

Conexão obtida com sucesso.


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções

Exercício Resolvido de Java - Escreva um método chamado inverter() que recebe um número inteiro e retorna este mesmo número invertido

Quantidade de visualizações: 6790 vezes
Pergunta/Tarefa:

Escreva um método Java chamado inverter() que recebe um número inteiro e retorna este mesmo número invertido. Este método deverá ter a seguinte assinatura:

public static int inverter(int numero){
  // sua implementação aqui
}
Este método deverá, obrigatoriamente, estar na classe principal (aquela que contém o método main()). Após a implementação do método inverter(), vá até o método main() e peça ao usuário para informar um número inteiro qualquer. Em seguida faça uma chamada ao método inverter() passando o valor informado como argumento, obtenha o retorno e exiba-o.

ATENÇÃO: Para a resolução deste exercício é permitido usar apenas os operadores aritméticos.

Sua saída deverá ser parecida com:

Informe um número inteiro: 487
O valor invertido é: 784
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java:

package estudos;

import java.util.Scanner;
 
public class Estudos{
  public static void main(String[] args) {
    // vamos fazer a leitura usando a classe Scanner
    Scanner entrada = new Scanner(System.in);
     
    // vamos pedir ao usuário que informe um número inteiro
    System.out.print("Informe um número inteiro: ");
    int numero = Integer.parseInt(entrada.nextLine());
     
    // fazer efetuar uma chamada ao método inverter() e obter o valor invertido
    int invertido = inverter(numero);
     
    // e exibir o resultado
    System.out.println("O valor invertido é: " + invertido);
......



GNU Octave ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o cateto oposto dadas as medidas da hipotenusa e do cateto adjascente em GNU Octave

Quantidade de visualizações: 864 vezes
Todos estamos acostumados com o Teorema de Pitágoras, que diz que "o quadrado da hipotenusa é igual à soma dos quadrados dos catetos". Baseado nessa informação, fica fácil retornar a medida do cateto oposto quando temos as medidas da hipotenusa e do cateto adjascente. Isso, claro, via programação em linguagem GNU Octave.

Comece observando a imagem a seguir:



Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados. A medida da hipotenusa é, sem arredondamentos, 36.056 metros.

Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras):

\[c^2 = a^2 + b^2\]

Tudo que temos que fazer é mudar a fórmula para:

\[a^2 = c^2 - b^2\]

Veja que agora o quadrado do cateto oposto é igual ao quadrado da hipotenusa menos o quadrado do cateto adjascente. Não se esqueça de que a hipotenusa é o maior lado do triângulo retângulo.

Veja agora como esse cálculo é feito em linguagem GNU Octave (script GNU Octave):

c = 36.056 # medida da hipotenusa
b = 30 # medida do cateto adjascente
  
# agora vamos calcular o comprimento da cateto oposto
......


Ao executar este código GNU Octave nós teremos o seguinte resultado:

A medida do cateto oposto é: 20.000878

Como podemos ver, o resultado retornado com o código GNU Octave confere com os valores da imagem apresentada.


Veja mais Dicas e truques de GNU Octave

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 11 usuários muito felizes estudando em nosso site.