Quer aprender Delphi for PHP?

Caros amigos delphianos, estão com dificuldades em encontrar um bom material sobre Delphi for PHP? Visite a Comunidade Delphi so PHP e veja algumas notícias sobre as novas tendências desta ferramenta. Lá você vai encontrar dicas, downloads, artigos, videos e muito mais sobre o Delphi for PHP. Para se cadastrar é muito simples, rápido e seguro. Clique aqui e seja o mais novo membro da Comunidade Delphi so PHP e bons estudos.

No mais até a próxima.


sexta-feira, 29 de agosto de 2008

Delphi tour


Caso não deseje receber mais este e-Journal clique aqui.

Em breve, você poderá se escrever...

Veja mais informações sobre o evento:

O que é o Global Assembly Cache (GAC) ?

O Global Assembly Cache nada mais é do que um pasta de disco especial onde todos os assemblys compartilhados deverão ser colocados. No Windows XP ele esta localizado na pasta : :\Windows\assembly , conforme figura abaixo.


Novamente podemos fazer uma comparação com o modelo COM de registro de componentes.
Se o componente não é encontrado no mesmo diretório da aplicação, a aplicação procura-o no GAC, do mesmo modo com o COM pesquisa o registro.

Nota:os componentes .NET não precisam ser registrados no registro do WIndows como no modelo COM.

Desta forma os componentes .NET não precisam ser registrados como os componentes COM , e , se você tiver um assembly que será usado por múltiplas aplicações ele é armazenado no GAC. (Isto somente é possível se eles tiverem um nome compartilhado)

Se o assembly não for localizado no diretório local nem no GAC você ainda pode ter um endereço de localização no arquivo de configuração. A CLR pode então fazer o download do assembly e armazenar o assembly no cache de download.

Para colocar e remover assemblies do GAC você tem que ter privilégios de administrador do sistema por questão de segurança.

Você pode ter diferentes versões do mesmo assembly carregadas no GAC ao mesmo tempo , e, mesmo se um componente estiver rodando no GAC você pode incluir outra versão do mesmo componente.

Nota : Você pode ver a hierarquia de assemblies contidos no GAC usando o comando : tree gac no prompt do DOS. O resultado é exibido na figura abaixo. Como você pode ver o GAC é uma estrutura complexa de diretório que permite múltiplas versões de qualquer grupo e usa nomes fortes especiais para garantir que não seja possível um conflito de nome. Um assembly é armazenado em um diretório especial que usa o número de versão e um ID gerado individualmente.

quinta-feira, 28 de agosto de 2008

Participe dos Eventos e Webcasts MSDN


O MSDN e a comunidade de usuários realizam centenas de eventos on-line e presenciais por ano. Localize eventos que serão realizados em breve, incluindo palestras, workshops, eventos de grupos de usuários, treinamentos especiais e Webcasts. Os Webcasts MSDN são transmissões ao vivo com duração de 60 a 90 minutos, realizadas por especialistas na plataforma Microsoft, que detalham recursos presentes em produtos, solucionam dúvidas de usuários e fazem demonstrações de novas tecnologias. O conteúdo dos webcasts é gravado e disponibilizado em até 15 dias depois do evento no Media Center do MSDN. O conteúdo dos eventos presenciais é disponibilizado também no Media Center, desde que as apresentações tenham sido cedidas pelos palestrantes.

Quer saber mais, clique aqui

quarta-feira, 27 de agosto de 2008

Abrindo um pop up no Delphi for PHP

Colocar este script no caption de um label. Isso você pode fazer dinâmicamente no clique do label...

...
function abrir(pagina,largura,altura) {
//pega a resolução do visitante
w = screen.width;
h = screen.height;
//divide a resolução por 2, obtendo o centro do monitor
meio_w = w/2;
meio_h = h/2;
//diminui o valor da metade da resolução pelo tamanho da janela, fazendo com q ela fique centralizada
altura2 = altura/2;
largura2 = largura/2;
meio1 = meio_h-altura2;
meio2 = meio_w-largura2;
//abre a nova janela, já com a sua devida posição
window.open(pagina,'','height=' + altura + ', width=' + largura + ', top='+meio1+', left='+meio2+'');
}
...

Função para obter IP Externo

Função para retornar o IP externo baseado em uma URL.

using System.IO;
using System.Net;
...
public static string GetIP(string _URL)
{
//Cria uma requisição para a URL
WebRequest rq = WebRequest.Create(_URL);

//obtém o response a partir do request
HttpWebResponse rp = (HttpWebResponse)rq.GetResponse();
//obtém um stream contendo a resposta retornada pelo servidor
Stream ds = rp.GetResponseStream();
//Cria um StreamReader para leitura
StreamReader rd = new StreamReader(ds);
//Lê os dados
string responseFromServer = rd.ReadToEnd();
//fecha os objetos
rd.Close();
ds.Close();
rp.Close();
//procura por indexafor fixo no resultado
string URL = "IP";
int i = responseFromServer.IndexOf(URL) + URL.Length + 2;
//captura o IP descoberto
URL = string.Empty;
while (!(responseFromServer[i].ToString() == "<"))
{
URL += responseFromServer[i];
i += 1;
}

return URL.Trim();
}

Percorrendo as Rows de um DataView

Existem duas maneiras mais práticas de ser percorrer um DataView. Veja como no código abaixo:

A Primeira seria utilizando o FOR

// Levando em conta que já estamos com um DataTable populado...tbPessoa
DataView dtView = new DataView(tbPessoa);
DataRowView drView;
for (int i = 0; i < dtView.Count; i++)
{
drView = dtView[i];
MessageBox.Show(drView["Nome"].ToString());
}

A Segunda seria utilizando o WHILE

// Levando em conta que já estamos com um DataTable populado...tbPessoa
DataView dtView = new DataView(tbPessoa);
DataRowView drView;
IEnumerator rowsEnum = dtView.GetEnumerator();
while (rowsEnum.MoveNext())
{
drView = (DataRowView)rowsEnum.Current;
MessageBox.Show(drView["Nome"].ToString());
}

Enviando Email a partir de uma aplicação Windows com C#

Crie uma aplicação C# e coloque 4 componentes txt(renomei respectivamente para txtServidorSmtp, txtRemetente, txtDestinatario, txtAssunto e um componente de texto com o nome txtTexto). Pronto, agora é só seguir o código abaixo:

//Definindo Remetente
MailAddress endRemetente = new MailAddress(txtRemetente.Text);

//Definindo Destinatário
MailAddress endDestinatario = new MailAddress(txtDestinatario.Text);

//Definindo Email
MailMessage msg;

msg = new MailMessage(endRemetente, endDestinatario);

msg.Subject = txtAssunto.Text;

msg.Body = txtTexto.Text;

//Definindo Envio
SmtpClient smtp = new SmtpClient(txtServidorSmtp.Text);
smtp.Send(msg);

Criando uma classe de conexão no C#

Abaixo uma classe de conexão bem simples...

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;

namespace Persistencia
{
public static class Banco
{

public static OleDbConnection conexao = new OleDbConnection();

public static void AbrirConexao()
{
conexao.ConnectionString = @"Aqui fica a string de conexão";
conexao.Open();
}

public static void FecharConexao()
{
if (conexao.State == ConnectionState.Open)
{
conexao.Close();
conexao.Dispose();
}
}

public static void ExecutarComando(string textoComando)
{
if (conexao.State != ConnectionState.Open)
{
AbrirConexao();
}
OleDbCommand comando = new OleDbCommand();
comando.CommandText = textoComando;
comando.Connection = conexao;
int registrosAfetados = comando.ExecuteNonQuery();
}

public static OleDbDataReader SelecionarRegistros(string textoComando)
{
if (conexao.State != ConnectionState.Open)
{
AbrirConexao();
}
OleDbCommand comando = new OleDbCommand();
comando.CommandText = textoComando;
comando.Connection = conexao;
return comando.ExecuteReader();
}
public static OleDbDataReader SelecionarUmRegistro(string textoComando)
{
if (conexao.State != ConnectionState.Open)
{
AbrirConexao();
}
OleDbCommand comando = new OleDbCommand();
comando.CommandText = textoComando;
comando.Connection = conexao;
return (OleDbDataReader)comando.ExecuteScalar();
}

}
}

terça-feira, 26 de agosto de 2008

Aguardem novas postagens sobre C#

Olá pessoal, aguardem que estou para postar algumas dicas sobre C# e ASP .Net logo logo...

No mais até breve.

Sugestões a Comunidade Delphi so PHP

Sugestões a Comunidade Delphi so PHP

Olá membros da Comunidade Delphi so PHP, estamos abertos a sugestões e dicas sobre novas funcionalidade na Comunidade. Quem quiser deixar alguma sugestão para melhorias e mudanças, é só entrar em contato com a administração .

No mais, agradecemos o apoio de todos.

Algumas funções que facilitam e muito...

Algumas funções que facilitam e muito o desenvolvimento do programador. Por exemplo:

Imagina que você tem 50 campos na tela e tem que desabilitar todos, já viu né...Assim você só vai fazer isso: HabilitaCampo(true ou false), simples assim... :D

procedure HabilitaCampo(Value: Boolean);
var
i: integer;
begin
for i := 0 to pred(ComponentCount) do
begin
// Se for Edit...
if (components[i] is TEdit) then
(Components[i] as TEdit).Enabled:= value;

// Se for TComboBox...
if (components[i] is TComboBox) then
(Components[i] as TComboBox).Enabled:= value;

// E assim por diante...
end;
end;

Da mesma forma segui para limpar todos os campos de uma só vez...

procedure LimpaCampos();
var
i: integer;
begin
try
for i := 0 to pred(ComponentCount) do
begin
// Se for Edit...
if (components[i] is TEdit) then
(Components[i] as TEdit).Clear;

// Se for TComboBox...
if (components[i] is TComboBox) then
(Components[i] as TComboBox).ItemIndex = -1;
end;
end;

Validar campo obrigatório segui o mesmo esquema...
Obs: A tag é utilizado para definir se o campo vai ser obrigatório ou não. Ex:
0 - Default do componente...
1 - para os campos que serão obrigatório.

function VerificaCampObrigatorio: Boolean;
var
i: integer;
begin
Result := true;
for i := 0 to (ComponentCount) do
begin
// Se for Edit...
if (components[i] is TEdit) then
begin
if ((Components[i] as TEdit).Tag = 1) and ((Components[i] as TEdit).Text = '')then
begin
MessageDlg((Components[i] as TEdit).Hint,mtInformation,[mbOK],0);
(Components[i] as TEdit).SetFocus;
Result := false;
exit;
end;
end;
end;
end;

Espero que ajude, até mais.

Validando email

Utilize para validar e-mail...

function fCheckEmail(Email : String): Boolean;
var
s : String;
ePos : Integer;
begin
ePos := pos('@',Email);
if (epos > 1) then
begin
s := copy(eMail, epos + 1, Length(eMail));
if (pos('.', s)> 1) and (pos('.', s) < length(s)) then Result := true
else Result := False;
end
else Result := False;
end;

Pode ser muito bem utlizado no evento onexit do Edit...

Até a próxima dica.

Manipulando hora/minuto minuto/hora

Veja abaixo duas função muito uteis no dia-á-dia...

function HoraMinutos(value: string) : integer;
var
iHoras, iMinutos : integer;
begin
iHoras := StrToInt(copy(value,1,2)) * 60;
iMinutos := StrToInt(copy(value,4,2));
Result := iHoras + iMinutos;
end;

function MinutosHora(value: integer) : string;
var
sHora, sMinutos : string;
begin
sHora := fnLPad(IntToStr(value div 60),2,'0');
sMinutos := fnLPad(IntToStr(value mod 60),2,'0');
Result := sHora + ':' + sMinutos;
end;

Criptografia de senha de banco de dados

Veremos agora uma excelente função de criptografia. Muito utilizado para criptografar senha de banco de dados.

function Criptografar(Mstr, Mchave, Moperacao: String): String;
var
i, iTamanhoString, iPos, IPosLetra, iTamanhoChave: Integer;
begin
Result := Mstr;
iTamanhoString := Length(Mstr);
iTamanhoChave := Length(Mchave);
for i := 1 to iTamanhoString do
begin
iPos := (i mod iTamanhoChave);
if iPos = 0 then iPos := iTamanhoChave; iPos := iPos + 7;
if Moperacao = 'DESCRIPTOGRAFAR' then iPosLetra := Ord(Result[i]) + iPos
else iPosLetra := Ord(Result[i]) - iPos;
Result[i] := Chr(iPosLetra);
end;
end;

Que tal utilizar o LPad e RPad no delphi?

Que tal utilizar o LPad e RPad no delphi?

function LPad(value:string; tamanho:integer; caractere:char): string;
var
i : integer;
begin
Result := value;
if(Length(value) > tamanho)then
exit;
for i := 1 to (tamanho - Length(value)) do
Result := caractere + Result;
end;

function RPad(value:string; tamanho:integer; caractere:char): string;
var
i : integer;
begin
Result := value;
if(Length(value) > tamanho)then
exit;
for i := 1 to (tamanho - Length(value)) do
Result := Result + caractere;
end;

Muito legal né? até a próxima.

Delphi - Converter uma valor em real

Olá pessoal, abaixo uma função simples para converter um valor. É muito utilizada para display na tela.

{ Functions }
function fConvertValue(Value: string): string;
begin
Result := '';
if (pos('.', Value) = 0) then
begin
if (Value <> '') then
begin
Value := FormatFloat('##,##0.00', StrToFloat(Value));
Result := Value;
end;
end
else
begin
Value := StringReplace(Value,'.','', [rfReplaceAll]);
Result := Value;
end;
end;

Como fechar uma janela GtkWindow ao clicar em um botão

Como fechar uma janela GtkWindow ao clicar em um botão

// função que será chamado ao clicar no botão
function fechar($janela){
$janela->destroy();
}

if(!class_exists('gtk')){
die("Por favor carregue o módulo php-gtk2
no seu php.ini\\r\\n");
}

$wnd = new GtkWindow();
$wnd->set_default_size(250, 150);
$wnd->connect_simple('destroy', array('gtk', 'main_quit'));

// Cria um layout fixo
$layout = new GtkFixed();

// Cria um botão
$btn = new GtkButton("Fechar Janela");
// Define o tamanho do botão
$btn->set_size_request(100, 25); // define largura e altura
// Define o evento clicked para o botão
$btn->connect_simple('clicked', 'fechar', $wnd);
// Adiciona o botão ao layout
$layout->put($btn, 10, 10);

// Adiciona o layout à janela do aplicativo
$wnd->add($layout);

$wnd->show_all();
$wnd->set_title("Estudos PHP-GTK");
Gtk::main();

Quer saber mais, clique aqui.

Entendendo o que são construtores

Entendendo o que são construtores

Um construtor é uma função definida na própria classe que é automaticamente chamada no momento em que a classe é instanciada (atráves do operador new). O construtor deve ter o memso nome que a classe a que pertence. Veja o exemplo:

class conta {
var $saldo;
function conta() {
$this->saldo = 0;
}

function saldo() {
return $this->saldo;
}

function credito() {
$this->saldo += $valor;
}
}

Podemos perceber que a classe conta possui um construtor, que inicializa a variavel $saldo com o valor zero(0).
Um construtor pode conter argumentos, que são opcionais, o que torna esta ferramenta mais poderosa. No exemplo acima, o construtor da classe conta pode receber como argumento um valor, que seria o valor inicial dfa conta.
Vale observar que era para classes derivadas, o construtor da classe pai não é automaticamente herdado quando o construtor da classe derivada é chamado.

Quer saber mais, clique aqui

Utilizando a variável $this

Variavel $this
Na difinição de uma classe, pode-se utilizar a variavel $this, que é o próprio objeto. assim, quando uma classe é instanciada em um objeto, e uma função desse objeto na definição da classe utiliza a variavel $this, essa variavel signfica o objeto que estamos utilizando.

Como exemplo da utilização de classes e objetos, podemos utilizar a classe conta, que define uma conta bancária bastante simples, com funções para ver saldo e fazer um crédito.

Exemplo:
Class conta{
var $saldo;
function saldo(){
return $this->saldo;
}

function credito(){
$this->saldo += $valor;
}
}

// a variavel interna não foi inicializada, e não contém valor algum.
$minhaconta = new saldo;
$minhaconta->saldo();

// Retorna 50
$minhaconta->credito(100);
$minhaconta->saldo();

segunda-feira, 25 de agosto de 2008

Comunidade Delphi so PHP


Olá pessoal, é como muito alegria que estou publicando a nova cara da Comunidade Delph so PHP. A pedidos dos membros, fizemos algumas alteração e melhorias, como:
Uma área de publicação de vídeo-aulas, que os próprios membros poderão fazer...
Outra coisa que foi perdida pelos membros, foi um fórum próprio da Comunidade. Isso também foi feito e pode ser acessado, clique aqui para acessar o fórum da Comunidade Delphi so PHP. Com isso a área que existia as dúvidas, perdeu o sentido, já que possuímos um fórum!
A Comunidade está bem mais rápida e com um visual bem melhor que a anterior. Claro que a primeira Comunidade foi feita muito rápida, pois estávamos precisando de algum site feito em Delphi for PHP, já que estavam falando que não existia um desenvolvido em Delphi for PHP.

domingo, 24 de agosto de 2008

Dicas de Delphi for PHP.

Só para começar, aqui vão alguns dicas de Delphi for PHP:

---------------------------------------------------------------------
Estrutura da função switc no PHP.

switch($type) {
case 1: #GIF
$img = 'img1';
break;
case 2: #JPEG
$mg = 'img2';
break;
case 3: #PNG
$img = 'img3';
break;
default: #Unsupported format
return '';
}

---------------------------------------------------------------------
OOP - Classe de mensagem

Aqui vai uma classe básica de mensagem...

class TMensagem
{
function __construct($message)
{
$this->Message = strip_tags($message);
}

function GetMensagem()
{
return $this->Message;
}
}

---------------------------------------------------------------------
Pega extensão de um arquivo.

Um função para pegar a extensão de um determinado arquivo...

function pegaExtensao($file){
$ext = explode('.',$file);
$ext = array_reverse($ext);
return $ext[0];
}

---------------------------------------------------------------------
Frameworks Ajax, PHP + AJAX

XAJAX
http://xajax.sourceforge.net/

SAJAX (trabalha também com outras linguagens)
http://www.modernmethod.com/sajax/

Symfony
http://www.symfony-project.com/

AjaxAC
http://ajax.zervaas.com.au/

XOAD
http://www.xoad.org/

CPAINT (trabalha também com outras linguagens)
http://cpaint.booleansystems.com/

Muito simples né. No mais até uma póxima dica.

Seja bem vindo ao meu blog

Olá pessaol, estou muito feliz em poder compartilhar com vocês a nova cara da comunidade Delphi so PHP.

Parceria