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;