![]() |
|
|
Planilha de Dimensionamento de Tubulações
Hidráulicas Água Fria e Água Quente CompletaNossa planilha automática de dimensionamento de tubulações de água fria e quente é uma ferramenta desenvolvida para auxiliar engenheiros e projetistas no cálculo rápido e preciso das redes hidráulicas de edificaçoes. Por meio da inserçao de dados como vazao, diâmetro da tubulaçao, comprimento da rede, material do tubo e coeficientes hidráulicos, a planilha realiza automaticamente os cálculos necessários para verificar velocidade da água, perda de carga e dimensionamento adequado das tubulaçoes. |
||
Delphi ::: Dicas & Truques ::: Imagens e Processamento de Imagens |
Como carregar uma imagem JPG, convertê-la em Bitmap e desenhá-la no formulário usando DelphiQuantidade de visualizações: 19059 vezes |
Em algumas situações nós precisamos carregar uma imagem JPG, convertê-la em Bitmap e desenhá-la em nosso formulário. Nesta dica eu mostro como isso pode ser feito. Vamos começar lendo a imagem JPG a partir do diretório da aplicação:
procedure TForm3.Button1Click(Sender: TObject);
var
bmp: TBitmap;
jpg: TJPEGImage;
begin
// uses Jpeg; // não esqueça
// vamos criar o bitmap
bmp := TBitmap.Create;
// vamos criar o JPG
jpg := TJPEGImage.Create;
try
// vamos carregar a imagem JPG
jpg.LoadFromFile('foto.jpg');
// vamos convertê-la para Bitmap
bmp.Assign(jpg);
// vamos desenhar o bitmap no formulário
// começando nas coordenadas x = 0; y = 0 a partir
// do canto superior esquerdo da área cliente do formulário
Form3.Canvas.Draw(0, 0, bmp);
finally
Jpg.Free;
Bmp.Free;
end;
end;
Veja que a técnica consiste em carregar a imagem JPG e convertê-la em Bitmap usando o método Assign() da classe TBitmap. Em seguida só precisamos usar o método Draw() do Canvas do formulário para desenhar a imagem já convertida. Caso você precise carregar a imagem JPG em tempo de execução, basta colocar um TOpenPictureDialog no formulário e alterar o código do evento Click do botão para:
procedure TForm3.Button1Click(Sender: TObject);
var
bmp: TBitmap;
jpg: TJPEGImage;
begin
// uses Jpeg; // não esqueça
if OpenPictureDialog1.Execute then
begin
// vamos criar o bitmap
bmp := TBitmap.Create;
// vamos criar o JPG
jpg := TJPEGImage.Create;
try
// vamos carregar a imagem JPG
jpg.LoadFromFile(OpenPictureDialog1.FileName);
// vamos convertê-la para Bitmap
bmp.Assign(jpg);
// vamos desenhar o bitmap no formulário
// começando nas coordenadas x = 0; y = 0 a partir
// do canto superior esquerdo da área cliente do formulário
Form3.Canvas.Draw(0, 0, bmp);
finally
Jpg.Free;
Bmp.Free;
end;
end;
end;
Vamos complicar um pouco mais? Que tal uma função que carrega a imagem JPG, faz a conversão para Bitmap e retorna o Bitmap para o chamador? Veja:
function jpg2bitmap(const imagem: String): TBitmap;
var
bmp: TBitmap;
jpg: TJPEGImage;
begin
// uses Jpeg; // não esqueça
// vamos criar o bitmap
bmp := TBitmap.Create;
// vamos criar o JPG
jpg := TJPEGImage.Create;
try
// vamos carregar a imagem JPG
jpg.LoadFromFile(imagem);
// vamos convertê-la para Bitmap
bmp.Assign(jpg);
except
bmp := nil;
end;
// vamos retornar o bitmap resultante
Jpg.Free;
Result := bmp;
end;
procedure TForm3.Button1Click(Sender: TObject);
var
bmp: TBitmap;
begin
// vamos obter o Bitmap a partir da função personalizada
bmp := jpg2bitmap('foto2.jpg');
// a imagem Bitmap foi obtida com sucesso?
if bmp <> nil then
begin
// vamos desenhar o bitmap no formulário
// começando nas coordenadas x = 0; y = 0 a partir
// do canto superior esquerdo da área cliente do formulário
Form3.Canvas.Draw(0, 0, bmp);
bmp.Free;
end
else
ShowMessage('Não foi possível obter o Bitmap');
end;
Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Portugol ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Portugol - Faça um algoritmo em Portugol que leia 9 números inteiros, guarde-os em uma matriz 3x3 e mostre os números paresQuantidade de visualizações: 1473 vezes |
|
Pergunta/Tarefa: Faça um algoritmo em Portugol que leia 9 números inteiros e guarde-os em uma matriz 3x3. Imprima a matriz no formato tabular, usando a melhor formatação que você conseguir. Em seguida, percorra a matriz novamente e imprima somente os números que são pares, todos na mesma linha e separados por espaço. Sua saída deverá ser parecida com:
Linha 1 e coluna 1: 8
Linha 1 e coluna 2: 1
Linha 1 e coluna 3: 5
Linha 2 e coluna 1: 3
Linha 2 e coluna 2: 9
Linha 2 e coluna 3: 30
Linha 3 e coluna 1: 7
Linha 3 e coluna 2: 23
Linha 3 e coluna 3: 10
Valores na matriz
8 1 5
3 9 30
7 23 10
Os valores pares são: 8 30 10
Veja a resolução completa para o exercício em Portugol, comentada linha a linha (fiz a resolução no Portugol Webstudio):
// Um algoritmo que lê uma matriz 3x3
programa {
funcao inicio() {
// variáveis usadas na resolução do problema
inteiro matriz[3][3]
inteiro i, j
// vamos pedir para o usuário informar os valores
// dos elementos da matriz, uma linha de cada vez
para (inteiro i = 0; i < 3; i++) {
para (inteiro j = 0; j < 3; j++) {
escreva("Linha ", (i + 1), " e coluna ", (j + 1), ": ")
leia(matriz[i][j])
}
}
// vamos mostrar a matriz da forma que ela foi informada
escreva("\nValores na matriz:\n\n")
para (inteiro i = 0; i < 3; i++) {
para (inteiro j = 0; j < 3; j++) {
escreva(matriz[i][j], " ")
}
// passa para a próxima linha da matriz
escreva("\n")
}
// agora vamos percorrer a matriz novamente e mostrar
// apenas os valores pares
escreva("\nOs valores pares são: ")
para (inteiro i = 0; i < 3; i++) {
para (inteiro j = 0; j < 3; j++) {
// é um número par?
se (matriz[i][j] % 2 == 0) {
escreva(matriz[i][j], " ")
}
}
}
}
}
|
PHP ::: Dicas & Truques ::: Strings e Caracteres |
Como acessar os caracteres de uma string individualmente em PHP usando índicesQuantidade de visualizações: 4 vezes |
|
Em algumas situações nós gostaríamos de acessar os caracteres individuais de uma palavra, frase ou texto em PHP. Isso pode ser feito por meio da notação de índices, ou seja, usando []. Veja um exemplo abaixo: <?php $nome = "Carlos de Jesus"; echo "O primeiro caractere é " . $nome[0]; ?> Ao executar este código PHP nós teremos o seguinte resultado: O primeiro caractere é C |
Firebird ::: Dicas & Truques ::: Tipos de Dados |
Como usar os tipos de dados DATE, TIME e TIMESTAMP do FirebirdQuantidade de visualizações: 30910 vezes |
|
No dialeto 3 (SQL DIALECT 3), o tipo de dados DATE do Firebird armazena apenas a data sozinha, ou seja, sem as horas. Esta forma de guardar apenas a data resulta em uma ocupação de 4 bytes (32 bits) na memória. A data armazenada pode variar de 01/01/0001 até 31/12/9999. No dialeto 1, (SQL DIALECT 1), o tipo DATE é o equivalente ao tipo TIMESTAMP do dialeto 3 (o tipo TIMESTAMP passou a existir somente a partir do dialeto 3). Veja um comando DDL CREATE TABLE que cria uma tabela do Firebird contendo um campo do tipo DATE: CREATE TABLE ALUNOS ( ID INTEGER NOT NULL, NOME VARCHAR(40) NOT NULL, NASCIMENTO DATE NOT NULL ); Aqui o campo ID é do tipo INTEGER, NOME é do tipo VARCHAR(40) e NASCIMENTO é do tipo DATE. Veja agora um comando DML INSERT INTO que insere um novo registro nesta tabela. Fique atento à forma como o valor da data é informado: INSERT INTO ALUNOS VALUES(1, 'OSMAR J. SILVA', '1981-11-28'); Veja que a data, assim como o valor para o campo NOME, foi informada entre aspas simples e seguindo o formato YYYY-MM-DD, ou seja, o ano, mês e dia separados por hifens. Para obter os dados inseridos pela query anterior, podemos usar o seguinte comando DML SELECT FROM: SELECT * FROM ALUNOS; Esta query resulta na exibição dos seguintes dados: ID NOME NASCIMENTO 1 OSMAR J. SILVA 28/11/1981 O tipo de dados TIME, disponível apenas a partir do dialeto 3 (SQL DIALECT 3) nos permite armazenar as horas, sem a data. Este tipo ocupa 4 bytes (32 bits) de memória e pode conter valores na faixa de 00:00 até 23:59:59.9999. Veja um comando DDL CREATE TABLE que cria uma tabela do Firebird contendo um campo do tipo TIME: CREATE TABLE COMPROMISSOS ( ID INTEGER NOT NULL, DESCRICAO VARCHAR(80) NOT NULL, DATA DATE NOT NULL, HORA TIME NOT NULL ); Veja que esta tabela possui 4 campos: ID do tipo INTEGER, DESCRICAO do tipo VARCHAR(80), DATA do tipo DATE e HORA do tipo TIME. Eis um comando DML INSERT INTO que mostra como inserir um registro nesta tabela: INSERT INTO COMPROMISSOS VALUES(10, 'ALMOÇO COM A ESPOSA', '2010-12-10', '19:00:00'); Note que, assim como fazemos com campos do tipo DATE, os valores para campos do tipo TIME também devem ser informados entre aspas simples. Veja um comando DML SELECT FROM que lista o registro inserido na query anterior: SELECT * FROM COMPROMISSOS; Esta query produz o seguinte resultado: ID DESCRICAO DATA HORA 10 ALMOÇO COM A ESPOSA 10/12/2010 19:00:00 O tipo TIMESTAMP, disponível apenas a partir do dialeto 3 (SQL DIALECT 3) nos permite armazenar a data e hora juntas. Este tipo ocupa 8 bytes (64 bits) de memória e é equivalente ao tipo DATE do dialeto 1. Veja um comando DDL CREATE TABLE que cria uma tabela do Firebird contendo um campo do tipo TIMESTAMP: CREATE TABLE COMPROMISSOS ( ID INTEGER NOT NULL, DESCRICAO VARCHAR(80) NOT NULL, DATA_HORA TIMESTAMP NOT NULL ); Veja que esta tabela possui três campos: ID é do tipo INTEGER, DESCRICAO é do tipo VARCHAR(80) e DATA_HORA é do tipo TIMESTAMP. Eis um comando DML INSERT INTO que mostra como inserir um registro nesta tabela: INSERT INTO COMPROMISSOS VALUES(20, 'ALMOÇO COM A ESPOSA', '2010-10-23 19:00:00'); Note que os valores para campos do tipo TIMESTAMP também devem ser informados entre aspas simples. Para finalizar, Veja um comando DML SELECT FROM que lista o registro inserido na query anterior: SELECT * FROM COMPROMISSOS; Esta query produz o seguinte resultado: ID DESCRICAO DATA_HORA 20 ALMOÇO COM A ESPOSA 23/10/2010 19:00:00 |
Nossas 20 dicas & truques de programação mais populares |
|
CSS - CSS3 - O que são CSS media queries e como usá-las em suas páginas web para criar designs responsivos JavaScript - Como construir uma determinada data e hora usando o construtor do objeto Date do JavaScript JavaScript - Como ordenar um array de strings em ordem alfabética em JavaScript - Vetores e matrizes em JavaScript |
Você também poderá gostar das dicas e truques de programação abaixo |
|
PHP - Como obter o caminho da raiz do site usando a variável global $_SERVER['DOCUMENT_ROOT'] do PHP |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |




