Para quem não compreendeu 100% algum conteúdo ou quem queira estudar novamente o conteúdo da faculdade, segue um link muito interessante.
É isso ai, todo o conteúdo da faculdade em vídeo e de graça, bom proveito.
procedure TFRMPRINCIPAL.Sair1Click(Sender: TObject); begin Close; end;
procedure TForm1.Button1Click(Sender: TObject);
var
A,B,C,D,R1,R2:double;
begin
try
A := strtofloat(edta.Text);
B := strtofloat(edtB.Text);
C := strtofloat(edtC.Text);
if A <> 0 then
begin
D := (B*B)-(4*A*C);
if D >= 0 then
begin
R1 := ((-1*B)+SQRT(D))/(2*A);
R2 := ((-1*B)-SQRT(D))/(2*A);
EDTR.Text := FloatToStr(R1);
EDTR2.Text := FloatToStr(R2);
{ // exibir resultado em outro form
final.Edit1.Text := FloatToStr(R1);
final.Show;
} end else
begin
ShowMessage('Erro na operação!! Delta menor que zero.');
end;
end else
begin
ShowMessage('Valor de A deve ser diferente de zero (0).');
end;
except on e:exception do
ShowMessage(e.message);
end;
end;
procedure TfrmCidades.Button1Click(Sender: TObject); begin DM.ClientDataSet1.ApplyUpdates(0); end;
procedure TExemplo.GerarSQLInsert(ds:dataset);
var
C,R: Integer;
sql: StringBuilder;
caminho, arquivo:string;
arq: System.IO.FileInfo;
dir: System.IO.Directory;
stream: System.IO.StreamWriter;
begin
{$REGION 'Cria SQL Insert'}
sql := StringBuilder.Create;
// Inicia transação na banco
sql.appendLine('BEGIN TRANSACTION');
sql.appendLine('GO');
sql.AppendLine('');
// Registros Encontrados
for R := 0 to ds.Tables[0].Rows.Count - 1 do
begin
// Inicia comando Insert com Nome da Tabela
sql.AppendLine('INSERT INTO '+txbNomeTabela.Text+' (');
// Recupera Campos/Atributos
for C := 0 to ds.Tables[0].Columns.Count - 1 do
begin
// Se não for última coluna precisa vírgula
if C <> ds.Tables[0].Columns.Count -1 then
sql.AppendLine(ds.Tables[0].Columns.Item[C].ColumnName+', ')
else
sql.AppendLine(ds.Tables[0].Columns.Item[C].ColumnName);
end;
// Fecha Atributos
sql.AppendLine(') ');
// Dado de cada Atributo
sql.AppendLine('VALUES (');
for C := 0 to ds.Tables[0].Columns.Count - 1 do
begin
// Se não for última coluna precisa vírgula
if C <> ds.Tables[0].Columns.Count -1 then
begin
if ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM <> '' then
begin
// Verifica se o tipo é double
if NumeroValido(ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM) then
sql.AppendLine(ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM+', ')
else // Se não deve ser string e precisa aspas
sql.AppendLine(' '''+ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM+''', ');
end
else
sql.AppendLine('NULL, ');
end
else
begin
// Verifica se tem valor
if ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM <> '' then
begin
// Verifica se o tipo é double
if NumeroValido(ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM) then
sql.AppendLine(ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM)
else // Se não deve ser string e precisa aspas
sql.AppendLine(' '''+ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM+''' ');
end
else
sql.AppendLine('NULL');
end;
end;
// Fecha Dados
sql.AppendLine(')');
sql.AppendLine('GO');
sql.AppendLine('');
end;
sql.AppendLine('');
// Encerra transação e grava registros
sql.appendLine('COMMIT');
sql.appendLine('GO');
{$ENDREGION}
// Exibe
// lblScript.Text := sql.ToString;
{$REGION 'Cria Arquivo SQL Insert e Desce para o Usuário'}
try
caminho := Server.MapPath('.')+'\SQL\';
arquivo := 'SQL_INSERT_'+txbNomeTabela.Text+'.sql';
// verifica / cria diretório se não existe
if dir.Exists(caminho) = False then
dir.CreateDirectory(caminho);
// cria arquivo
arq := System.IO.FileInfo.Create(caminho+arquivo);
// Insere SQL no arquivo
stream := System.IO.StreamWriter.Create(caminho+arquivo);
stream.WriteLine(sql.ToString);
stream.Close();
// download do arquivo
ScriptManager.RegisterStartupScript(Page, Page.GetType(), Guid.NewGuid().ToString(),'window.open("/SQL/'+arquivo+'","downsql","menubar=no,scrollbars=no,WIDTH=15,HEIGHT=15");', true);
except on ex:exception do
response.write('Erro durante criação do arquivo.
Detalhes: '+ex.message);
end;
{$ENDREGION}
end;
// Função que verifica se o número é válido (é um número ou não)
function TExemplo.NumeroValido(Numero: String): Boolean;
Var
N: Double;
begin
Result := False;
try
N := Convert.ToDouble(Numero);
Result := True;
Except
Result := False;
end;
end;
procedure TExemplo.ListarArquivos;
var
caminho, na:string;
lista: ArrayList;
i: integer;
begin
caminho := Server.MapPath('.');
lista := ArrayList.Create;
gvSQL.DataSource := System.IO.Directory.Getfiles(caminho+'\sql');
gvSQL.databind();
for I := 0 to gvSQL.rows.Count - 1 do
begin
na := gvSQL.Rows.item[i].cells[3].Text;
// Substitui o caminho até o diretório dos arquivos por '' -> nada
na := na.replace(caminho+'\sql\','');
lista.add(na);
end;
gvSQL.DataSource := lista;
gvSQL.databind();
end;
< asp:gridview backcolor="White" bordercolor="#999999" borderstyle="Solid" borderwidth="1px" cellpadding="3" font-size="Small" forecolor="Black" gridlines="Vertical" id="gvSQL" runat="server">
< columns>
< asp:buttonfield commandname="LER" text="Carregar">< /asp:buttonfield>
< asp:buttonfield commandname="DOWNLOAD" text="Download">< /asp:buttonfield>
< asp:buttonfield commandname="EXCLUIR" imageurl="~/imagens/exc.gif" text="Excluir">< /asp:buttonfield>
< /columns>
< footerstyle backcolor="#CCCCCC">< /footerstyle>
< pagerstyle backcolor="#999999" forecolor="Black" horizontalalign="Center">< /pagerstyle>
< selectedrowstyle backcolor="#000099" font-bold="True" forecolor="White">< /selectedrowstyle>
< headerstyle backcolor="Black" font-bold="True" forecolor="White">< /headerstyle>
< alternatingrowstyle backcolor="#CCCCCC">< /alternatingrowstyle>
< /asp:gridview>
procedure TExemplo.gvSQL_RowCommand(sender: TObject; e: System.Web.UI.WebControls.GridViewCommandEventArgs);
var
caminho,arquivo:string;
arq: System.IO.FileInfo;
reader: System.IO.StreamReader;
begin
// Se o comando é EXCLUIR
if e.commandname = 'EXCLUIR' then
begin
// Pega o caminho até o diretório
caminho := Server.MapPath('.')+'\SQL\';
// o Nome do arquivo SQL
arquivo := GVSQL.Rows.Item[convert.ToInt32(e.commandargument)].Cells[3].Text;
// Cria arquivo
arq := System.IO.FileInfo.Create(caminho+arquivo);
// Se arquivo existe -> com certeza existe
if arq.Exists then
arq.Delete; // Deleta
// Atualiza Lista dos Arquivos
ListarArquivos;
end;
// Se o comando é para baixar o arquivo -> DOWNLOAD
if e.commandname = 'DOWNLOAD' then
begin
// Pega nome arquivo
arquivo := GVSQL.Rows.Item[convert.ToInt32(e.commandargument)].Cells[3].Text;
// Redireciona usuário para endereço do arquivo, vai pedir pra baixar...
Response.redirect('/SQL/'+arquivo);
end;
// Se for pra ler -> exibir na textbox conteúdo do arquivo
if e.commandname = 'LER' then
begin
caminho := Server.MapPath('.')+'\SQL\';
arquivo := GVSQL.Rows.Item[convert.ToInt32(e.commandargument)].Cells[3].Text;
reader := StreamReader.Create(caminho+arquivo);
// Lê arquivo até o fim e joga string para textbox
txbSQL.text := reader.ReadToEnd;
reader.Close();
end;
end;
Olá pessoal, lendo meus feed/RSS hoje vi um artigo interessante sobre licenças e alguns links interessantes, como programo atualmente com Delphi for ASP.NET na empresa, cliquei em um que me chamou a atenção, Delphi Grátis, verifiquei e realmente existe mas o software vem com algumas limitações, ainda assim é possível desenvolver muitas coisas legais. Mais detalhes no site da Code Gear - Turbo e tutoriais na Turbo Explorer.
Pesquisando outras alternativas ao software pirata para quem está habituado com o Delphi encontrei o Lazarus (Win32), que roda em Linux, FreeBSD, MacOSX e Windows, também temos o Free Pascal e o Kylix. Segundo meus colegas Sipmann e Allan, o Lazarus funcionou muito bem no Ubuntu 9.04 e eles recomedaram o uso do mesmo já que o Kylix está descontinuado.
Bom, concluí com esta breve consulta ao oráculo que existem muitas alternativas ao uso de software pirata e que vale a pena utilizálos para garantir a segurança do seu computador e do seu bolso, até.
Olá pessoal, neste pequeno tutorial pretendo mostrar um exemplo simples de envio de e-mail em ASP.NET utilizando os serviços do Gmail e DELPHI 2007 for .NET, dica do Edinei.
Primeiramente vamos criar uma nova aplicação, File -> New -> ASP.NET Web Application.
Feito isso, adicione três TextBox, um Button e uma Label, renomeie a propriedade ID das textboxes para: txbdestinatario, txbassunto e txbmensagem respectivamente, a Label para lblretorno e o Button para btnenviar, aumente o tamanho das textboxes de acordo com sua preferência e mude a propriedade textMode da txbmensagem para “Multiline”. Apague o que tiver na propriedade Text da lblretorno e mude a propriedade Text do btnenviar para “Enviar E-mail”. O formulário deve ficar parecido com o da imagem abaixo.
O txtdestinatario vai receber o endereço de e-mail que se deseja enviar uma mensagem, txbassunto o assunto e txbmensagem a mensagem, a lblretorno irá mostrar se o e-mail foi enviado com sucesso ou se ocorreu algum erro durante o envio e o btnenviar chamará a função de envio de e-mail.
Para usar as funções de envio de e-mail do .NET, é necessário adicionar as seguintes bibliotecas na uses.
Uses
System.Net.Mail, System.Net.Configuration, System.Text, System.Net;
procedure TDefault.btnEnviar_Click(sender: TObject; e: System.EventArgs);
var
EmailRemetente: string;
NomeRemetente: string;
Mail: MailMessage;
Client: SmtpClient;
begin
Mail := MailMessage.create;
Client := SmtpClient.create;
EmailRemetente := 'seuEmail@gmail.com'; // O e-mail do remetente
NomeRemetente := 'Seu Nome'; // O nome do remetente
try
Mail.&To.Add(txbDestinatario.text); // Destinatário
Mail.From := MailAddress.create(EmailRemetente, NomeRemetente, System.Text.Encoding.UTF8);
Mail.Subject := txbassunto.text; // Assunto do E-mail
mail.SubjectEncoding := System.Text.Encoding.UTF8;
mail.Body := txbmensagem.text; // Mensagem do e-mail
mail.BodyEncoding := System.Text.Encoding.UTF8;
mail.IsBodyHtml := true;
mail.Priority := MailPriority.High; // Prioridade do E-Mail
client.Credentials := NetworkCredential.create(EmailRemetente, 'AquiSuaSenha'); // usuário e senha do Gmail
client.Port := 587; // Esta porta é a utilizada pelo Gmail para envio
client.Host := 'smtp.gmail.com'; // Definindo o provedor que irá disparar o e-mail
client.EnableSsl := true; // Gmail trabalha com Server Secured Layer
try
client.Send(mail);
lblretorno.text := 'E-mail enviado com sucesso!';
except on erro:exception do
lblretorno.text := 'Erro ao tentar enviar e-mail. '+erro.message;
end;
finally
client.free;
mail.free;
end;
end;
Minhas anotações sobre a apresentação do artigo "Desenvolvimento de uma aplicação utilizando SOA: um estudo de caso" por Roberto Felipe Caliendo e Daniel Luís Notari durante o V ERBD em Ijuí.
---
SOA: organizar o desenvolvimento de software com base nas regras de negócio da empresa com acesso de forma distribuída.
SOAP: Simple Object Acess Protocol
WSDL: Web Service Description Language
Repositório UDDI: Universal Description, Discovery and Integration
MOTIVAÇÃO
os sistemas existentes hoje não estão aptos a trocar informações automaticamente pois são feitos em linguagens diferentes, com formas de armazenamento diferentes etc.
OBJETIVO
implementar alguns serviços nque pudessem ser reutilizados utilizando RSS (realy simple syndication??), web services abertos ao publico que queira se cadastrar e selecionar suas preferencias de leitura, web service de email e outro de operações diversas...
ARQUITETURA Microsoft
- SQL Server
- turbo delphi for dotnet
- IIS
DESENVOLVIMENTO EM CAMADAS: aplicação - webservice - negócio - BD
CONCLUSÕES
- SOA: necessidade de planejar, definir corretamente interface do serviço, diferentes aplicações consomem o mesmo serviço, trocar informações.
- Dificuldades técnicas para montagem de ambiente de desenvolvimento
- Disponibilidade webservice: CEP - Correios, era grátis passou a ser pago.
- Precisa ser testado em larga escala, viabilidade, problemas com muitos acessos...
E-mails: rfcaliendo@gmail.com, daniel.notari@ucs.br
Até.
Olá pessoal, tive que fazer hoje uma função para diminuir 6 meses de uma data e decidi compartilhar um exemplo disso e outras funções similares que podem ser bastantes úteis.
Abaixo exemplos de procedimentos feitos no DELPHI 2007 for ASP.NET (RAD STUDIO), para executá-los você pode adicionar um button ou no próprio page load chamar estes procedimentos.
procedure Tteste.DiminuirData;
var
data: tdate;
begin
data := convert.ToDateTime(TextBox1.text);
data := data - convert.ToInt32(TextBox3.text);
// a função ToDateTime converto o de TDate para DateTime
// a função ToShortDateString vai retirar as horas, minutos e segundos e exibir no formato brasileiro (dd/MM/yyyy)
TextBox2.text := Convert.ToDateTime(data.tostring).ToShortDateString;
end;
procedure Tteste.Diferenca;
var
data1, data2: tdate;
dias:integer;
begin
data1 := convert.Todatetime(TextBox1.text);
data2 := convert.Todatetime(TextBox2.text);
dias := convert.ToInt32(data1) - convert.ToInt32(data2);
TextBox3.text := dias.tostring;
end;
...
var
coluna1, coluna2 : BoundField;
begin
coluna1 := boundfield.create;
coluna2 := boundfield.create;
try
coluna1.DataField:='NOME';
coluna1.HeaderText:='Nome';
coluna2.DataField:='ENDERECO';
coluna2.HeaderText:='Endereço';
//datafield é o nome do campo que busca no BD
//header é o que aparece como cabecalho da coluna adicionada
//se vc pressionar ctrl+space poderá ver as outras propriedades que podem ser configuradas
gridview.columns.insert(0,coluna1);
gridview.columns.insert(1,coluna2);
//faz a consultaq sql no banco para trazer os dados para grid
gridview.datasource := 'select...';
gridview.databind;
finally
coluna1.free;
coluna2.free;
end;
end;