terça-feira, 22 de fevereiro de 2011

Curso Dreamweaver Total

curso Download   Curso Dreamweaver Total
Aulas Básicas e Iniciais: Preparamos aulas para quem nunca construiu um website, e ensinamos a dar os primeiros passos, com aulas conceituais e explicativas. Vamos te preparar para desenvolver qualquer projeto.
HTML e CSS: Tenha domínio do HTML e utilize uma ferramenta visual apenas para auxiliá-lo durante a etapa de produção. Javascript: Conheça técnicas de Js para a construção de menus, animações, e torne seus sites mais dinâmicos.
Design de Sites: Aprenda como planejar bem seu site, criando um design bonito e atraente para o seu público.
Linguagem PHP: Vamos à fundo construir programas com PHP, formulários, relatórios, geração de PDF, Banco de Dados e interatividade. Vamos à fundo nesta linguagem de programação para WEB.
Fireworks: Aprenda o básico da criação de layouts com o Fireworks para dar acabamento à seus projetos. Você entrando neste treinamento ganhará o treinamento de Fireworks TOTAL.
SEO: Entenda como fazer seu site se destacar nos principais buscadores do mercado.
Gênero: Curso
lançamento: 2011
Idioma: Português
Tamanho: 2.52 gb
Formato: avi

Dwonload - Opções
Parte 01
curso Download   Curso Dreamweaver Total curso Download   Curso Dreamweaver Totalcurso Download   Curso Dreamweaver Total
Parte 02
curso Download   Curso Dreamweaver Total curso Download   Curso Dreamweaver Totalcurso Download   Curso Dreamweaver Total
Parte 03
curso Download   Curso Dreamweaver Total curso Download   Curso Dreamweaver Totalcurso Download   Curso Dreamweaver Total

segunda-feira, 21 de fevereiro de 2011

Impressão de Código de Barras

Uma abordagem prática Argox PPLB
por Victory Fernandes e Augusto Frederico
                                                                                                             
Na Internet estão disponíveis diversos componentes para geração e impressão de Código de Barras utilizando o Delphi e impressoras Laser ou Jato de Tinta. Ao trabalharmos com diferentes impressoras, tivemos alguns problemas quanto à resolução, configuração de impressoras, impressão nas margens das etiquetas, impressão de grandes quantidades de etiquetas e etc, o que comprometia a confiabilidade do sistema.
Devido a estes e outros problemas, consideramos que a maneira mais simples, prática e profissional de se imprimir códigos de barras, é utilizando impressoras específicas para impressão de etiquetas e códigos de barras.
Neste artigo fazemos uma abordagem prática para as impressoras Argox, que utilizam linguagem de script PPLB, após este estudo, o leitor estará familiarizado com o conceito geral, e pronto para utilizar qualquer impressora do gênero.

Acessando a impressora
Caso deseje, o usuário da impressora pode utilizar softwares prontos disponíveis para download que acompanham a impressora ou são vendidos separadamente. Este não é o tipo de abordagem que desejamos aos nossos clientes. O ideal é que sejamos capazes de oferecer a funcionalidade de impressão de código de barras por dentro dos nossos programas, utilizando uma interface com a qual o usuário já esteja familiarizado. Para isso é necessário conhecer o formato de comunicação com a impressora.
A impressora em questão não requer nenhum tipo de driver específico para funcionar, bastando que lhe seja passada uma seqüência de comandos ASCII pela porta a qual esta conectada. Sendo assim o acesso pode ser feito até mesmo pelo MS-DOS com um comando do tipo:

COPY “MEU_ARQUIVO.TXT” LPT1          ou        COPY “MEU_ARQUIVO.TXT” COM1

Onde “MEU_ARQUIVO.TXT” é um arquivo de texto comum contendo o script em PPLB que se deseja executar e deve ser enviado para a porta paralela (LPT1) ou serial (COM)
Este tipo de abordagem de comunicação facilita, e muito, a implementação, uma vez que a nossa única preocupação será conhecer os comandos, utilizando os métodos padrões do Delphi para o envio das strings.

Conhecendo a Linguagem
Os comandos em PPLB obedecem a uma sintaxe geral do tipo:

·         A                  Comandos
·         p1,p2,p3       Parâmetros
·         [p1,p2,p3]     Parâmetros opcionais

Apesar da impressora disponibilizar uma infinidade de comandos e opções, tais como contadores, criação e armazenamento de formulários em memória, velocidade de impressão dentre outros. Vamos abordar alguns itens principais:
·         Configuração da Etiqueta
·         Impressão de Textos
·         Impressão de Códigos de Barras

De maneira geral a impressora trabalha com um buffer de impressão onde são armazenados os comandos recebidos, é como se a impressora montasse uma imagem virtual da etiqueta a ser impressa, dessa forma, sempre que se deseja imprimir uma etiqueta diferente, é necessário seguir um procedimento geral:
·         Antes de tudo, temos que executar a limpeza do buffer de impressão - Comando N.
·         Após fixaremos as dimensões da etiqueta bem como o seu gap (espaço entre as etiquetas). A altura e o gap, com o Comando Q. Para a largura, utilizamos o Comando q.
·         Com o Comando R definimos as coordenadas do ponto inicial da impressão.
·         Após esse processo, a impressora estará pronta para receber os comandos relativos a montagem da nova etiqueta – Comandos A (Texto) e B (Código de Barras).
·         Uma vez concluída a montagem da etiqueta, com o Comando P determina-se a quantidade de impressão e envia a autorização para imprimir.

Veremos agora a análise de cada um dos comandos citados separadamente:

Limpeza de Buffer
Antes de passarmos qualquer novo comando de impressão de etiqueta é necessário limpar o buffer de imagem da impressora através da passagem do Comando N, que não aceita nenhum parâmetro, para evitar que haja sobreposição dos conteúdos a serem impressos.

Dimensões da Etiqueta
Em seguida definiremos as dimensões da etiqueta. O comando Q é encarregado da altura e do espaço entre as etiquetas, gap. Para rolo contínuo o gap possuí valor igual a 0. Com a seguinte sintaxe: 
Qp1,p2
p1 comprimento de etiqueta (em pontos*)
p2 gap

A largura  é definida pelo comando q, com formato:
Qp1
p1 largura (em pontos*).

 Dimensões Máximas permitidas:

Modelo 203 dpi
Modelo 300 dpi
Largura (X)
0 a 811 pixels (101mm)
0 a 1299 pixels (108mm)
Comprimento(y)
0 a 8728 pixels (1090mm)
0 a 8728 pixels (727mm)
Tabela 01. Dimensões Permitidas.
Caso as dimensões não sejam corretamente fixadas poderão ocorrer erros de impressão, tais como: desposicionamento de impressão, impressão de etiquetas em branco, parada na impressora, dentre outros.

* nos modelos 203 dpi, existem 8 pontos(pixels) em cada milímetro linear,
nos modelos 300 dpi, existem 12 pontos(pixels) em cada milímetro linear.

Definição dos Eixos
Devemos determinar o ponto inicial da impressão, para isso utilizamos o Comando R para a definição dos eixos X e Y respectivamente.Com sintaxe:
Rp1,p2
p1  margem horizontal (X)
p2  margem vertical(Y)
 
Impressão de Textos
Para impressão de textos formatados na etiqueta, utilizamos o Comando A, cuja sintaxe é mostrada abaixo:

Ap1,p2, p3,p4, p5,p6, p7, “TEXTO”

Onde,
p1     Eixo Y em pontos (Vide tabela 1).
p2     Eixo X em pontos (Vide tabela 1).
p3     Rotação

 Valor
Descrição
0
Sem rotação
1
Rotação de 90º
2
Rotação de 180º
3
Rotação de 270º
Tabela 02. Rotação valores Permitidos.

p4     Fonte 
          1,2,3,4,5 Fontes residentes 1 a 5(realiza exemplo para melhores informações).     
                      A até Z   Fontes carregadas na memória.
p5     Valor de expansão horizontal do texto (1 a 24).
p6     Valor de expansão vertical do texto (1 a 24).
p7     Forma de impressão : N(normal); R(reverso).
“TEXTO      Informação a ser impressa.

Chamamos a função texto da seguinte forma:
  Texto_PPLB(175,                                     //eixo x
                        20,                                       //eixo y
                        0,                                         //rotação
                        3,                                         //tipo fonte
                        10,                                       //multiplicador horizontal,
                        10,                                       //multiplicador vertical
                         false,                                  //imprime reverso
                         Teste de impressão);

A Listagem 01 mostra o retorno do script PPLB após a chamada feita acima: 
N
A175,20,0,3,10,10,N,"Teste de Impressao"
P1                                                                                                   

Listagem 01. formatação de um texto: 

Os comandos N e P, indicarão o início e o término da formatação. P também indica a quantidade de cópias.
Impressão de Código de Barras
Para impressão de códigos de barras nos mais diversos formatos, utilizamos o Comando B, cuja sintaxe é mostrada abaixo:
Bp1,p2, p3,p4, p5,p6, p7,p8, “VALOR”
Onde,
·         p1     Eixo_Y (ver tabela 1)
·         p2     Eixo_X (ver tabela 1)
·         p3     Rotação

Valor
Descrição
1
Sem rotação
2
Rotação de 90º
3
Rotação de 180º
4
Rotação de 270º
Tabela 03. Rotação valores permitidos

p4     Tipo do Código de Barras

Valor
Tipo de Código de Barras
Dígitos
0
Código 128 UCC
Variável
1
Código 128(A,B,C automático)
Variável
1E
UCC/EAN
Variável
2
Intercalado 2 de 5 (ITF,125,Interleaved 2 de 5, intercalado 25 )
Variável
2C
Intercalado 2 de 5 com dígito verificador MOD10
Variável
2D
Intercalado 2 de 5 com dígito verificador humano legível
Variável
2G
German Postcode 
Variável
2M
Matrix 2 de 5 (Matriz 25)
Variável
2U
UPC intercalado 2 de 5
Variável
3
Código 39 (código 3 de 9)
Variável
3C
Código 39 com digito verificador
Variável
9
Código 93
Variável
E30
EAN-13(EAN/JAN-13)
Fixo
E32
EAN-13  2 dígitos adicionais
Fixo
E35
EAN-13 5 dígitos adicionais
Fixo
E80
EAN-8   (EAN-JAN-8)
Fixo
E82
EAN-8 2 dígitos adicionais
Fixo
E85
EAN-8 5 dígitos adicionais
Fixo
K
Codabar
Variável
P
Postnet
Fixo
UA0
UPC-A
Fixo
UA2
UPC-A 2 dígitos adicionais
Fixo
UA5
UPC-A  5 dígitos adicionais
Fixo
UE0
UPC-E
Fixo
UE2
UPC-E  2 dígitos adicionais
Fixo
UE5
UPC-E  5 dígitos a adicionais
Fixo
Tabela 04. Tipo de Código de Barras
·         p5     Espessura da barra fina(ver tabela 5).
·         p6     Espessura da barra larga(ver tabela 5).
·          
Tipo
Razão
Barra Fina x Grossa
Código de Barra
B2
1:2 a 1:3
Fina<Grossa
Código 39, Codabar, Intercalado 25, Matriz 25, Postnet e German Postcode
B3
2:3:4
Fina=Grossa
2 x Fina
3 x Fina
4 x Fina
Código 93, código 128, EAN-8, EAN-13, UPC-A, UPC-E, UCC/EAN e Código 128 UCC
Tabela 05. Tabela de valores de Barras
·         p7     Altura do código de barras (definido pelo usuário)
·         p8     Forma de impressão : N(normal); R(reverso).
·          “VALOR” Informação a ser impressa em código de barras

Codigo_Barra_PPLB(20,                //eixo x
                    20,                               //eixo y
                    0,                                 //rotação
                    E80,                             //tipo código Barra
                    3,                                 //barra fina
                    3,                                 //barra larga
                    41,                               //altura barra
                    true,                             //mostra valor
                    0123459);                    //valor  Código

A Listagem 02 mostra o retorno do script PPLB após a chamada feita acima: 
N
B20,20,0,E80,3,3,41,B,”0123459”
P1
Listagem 02. Exemplifica a formatação de um Código de Barras:
Os comandos N e P, indicarão o início e o término da formatação. P também indica a quantidade de cópias.

Comandos Finais da Etiqueta
Após passarmos todos dados para a etiqueta determinamos a quantidade de etiqueta a ser impressa e comando de impressão através do Comando P, com sintaxe:
P p1 [,p2]
p1 determina a quantidade de cópias, 1 até 65.535.
p2  quantidade de cópias de cada etiqueta, 1 até 65.535.

O Programa Exemplo
Veja na Figura 01 a tela do aplicativo demonstrativo criado:
 
Figura 01.Tela principal do exemplo de utilização de Impressora de Código de Barras

Este programa exemplifica a impressão de códigos de barras. Nele podemos:
·         Configurar todos os parâmetros de formatação dos comandos Q, q, R, A, B, P.
·         Adicionar e excluir produtos para impressão.
·         Visualizar a codificação em PPLB gerada para impressão das etiquetas.
·         Salvar um arquivo de script PPLB para impressão futura.
·         Abrir um arquivo de script PPLB para impressão.
·         Imprimir códigos de barras em qualquer impressora paralela compatível com PPLB.

Nele foram implementadas as chamadas às funções de impressão de texto e código de barras, descritas anteriomente, como mostrado:

Function Comando_N: String;
Function Comando_Q(p1, p2: string): String;
Function Comando_q(p1: string): String;
Function Comando_R(p1, p2: string): String;
Function Comando_A(p1, p2, p3, p4,P5,p6,p7,texto:string): String;
Function Comando_B(p1,p2,p3,p4,P5,p6,p7,p8,valor: String): String;
Function Comando_P(p1,p2: string): String;
O programa faz sucessivas chamadas a estas funções, de acordo com a quantidade de produtos contida no componente TListview e a quantidade de etiquetas por produto definida pelo  usuário, para gerar o script em PPLB  que é enviado para o componente TMemo.
Uma vez o script em PPLB pronto, utilizamos uma função de escrita na porta da impressora para enviar os comandos contidos no componente TMemo para a impressora instalada na porta paralela, como mostrado:

procedure DirectPrint(s: String);
var
  PTBlock : TPassThroughData;
begin
   PTBlock.nLen := Length(s);
   StrPCopy(@PTBlock.Data, s);
   Escape(printer.handle, PASSTHROUGH, 0, @PTBlock, nil);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 //impressao do codigo de barras
 if memo1.Lines.Count > 0 then
  begin
   Printer.BeginDoc;
   DirectPrint(memo1.Lines.Text);
   Printer.EndDoc;
  end;
end;
A PPLB_Unit
As chamadas dos comandos da impressora demonstradas durante o artigo foram feitas utilizando a PPLB_Unit.pas, uma Unit desenvolvida em Delphi de acordo com o manual de referência da linguagem PPLB para geração de script utilizado nas impressoras de código de barras Argox.
As vantagens de utilizar a PPLB_Unit incluem:
·         Completa abstração da camada de geração do script, sendo necessário apenas fazer chamadas às funções da Unit para os comandos desejados.
·         Velocidade na implementação da comunicação com a impressora
·         Geração de etiquetas com texto e código de barras de forma muito simples
·         Facilidade na geração de código PPLB

Maiores informações sobre a PPLB_Unit podem ser obtidas no site do produto em  http://www.igara.com.br/produto.php?cod_produto=84

Conclusão
Agora que você está familiarizado com as principais opções das impressoras, fica muito mais fácil partir para implementações mais elaboradas, que utilizem outros recursos não abordados neste artigo, como opções de contadores, temporizadores, impressão de imagens e logomarcas, impressão de formulários etc...
Maiores informações sobre impressoras de códigos de barras, bem como download de manuais podem ser encontradas no site do fabricante em http://www.argox.com.
Maiores informações sobre a PPLB_Unit podem ser obtidas no site do produto em  http://www.igara.com.br/produto.php?cod_produto=84


Alterando o limite de conexões ao IIS do Windows XP

O windows XP não foi feito para atuar como servidor, mas sim como máquina de usuário. Porém é frequente que façamos uso do windows XP durante o processo de desenvolvimento, então muitas vezes precisamos que o windows XP tenha um comportamento um pouco mais parecido com o de um servidor.

O IIS do windows XP vem configurado por padrão para um limite de no máximo 10 conexões simultâneas. Para algumas atividades de desenvolvimento isso pode ser prejudicial.

Podemos alterar esse limite de conexões simultâneas até um limite máximo de 40 conexões, limite definido pelo sistema operacional.

Para fazer essa alteração acesse o diretório adminScripts que estará dentro do diretório do IIS (por default é c:\inetpub) e execute a seguinte instrução, via prompt :

adsutil set w3svc/MaxConnections 40

Pronto, alteração realizada.

domingo, 20 de fevereiro de 2011

Enviando mensagens instantâneas via consumo de Web Service



Introdução Neste artigo iremos acessar via Delphi um web service de envio de mensagens instantâneas. Este web service envia mensagens para ICQ, MSN Messenger, AIM (AOL Instant Messenger) e Yahoo Messenger.
Desenvolvendo o exemplo
O web service que utilizaremos está disponível no site http://www.bindingpoint.com. Crie um novo projeto e salvaremos os arquivos. Adicionaremos 2 Tedits, 1 Tmemo, 1 TRadioGroup e um Tbutton com propriedades name edtNome, edtPara, mmTexto, rdgrpOpcao e btnEnviar respectivamente. Limparemos as propriedades Text dos edtNome, edtPara e mmTexto e no rdgrpOpcao na propriedade Items digitaremos "ICQ, MSN, AIM, Yahoo" (Cada palavra em uma linha necessariamente nesta ordem).
Importaremos o WSDL deste site. Assim conheceremos os serviços disponíveis pelo web service. Para isto iremos em File / New / Other. Na Guia WebServices selecionaremos a opção WSDL Importer.

Uma tela Wizard será aberta solicitando o endereço do WSDL. Digitaremos http://www.bindingpoint.com/ws/imalert/imalert.asmx?wsdl e clicaremos em Next.

Será exibido o código gerado. Clicaremos em Finish e salvaremos o arquivo gerado com o nome de imalert.pas.

Em seu formulário adicione a unit imalert, utilizando o menu File / Use Unit.
No evento OnClick do btnEnviar colocaremos o seguinte código:
procedure TForm1.btnEnviarClick(Sender: TObject); var vResult: SendResult; begin case rdgrpOpcao.ItemIndex of 0: GetInstantMessageAlertSoap.SendICQ('', edtNome.Text, edtPara.Text, mmTexto.Text); 1: GetInstantMessageAlertSoap.SendMSN('', edtNome.Text, edtPara.Text, mmTexto.Text); 2: GetInstantMessageAlertSoap.SendAIM('', edtNome.Text, edtPara.Text, mmTexto.Text); 3: GetInstantMessageAlertSoap.SendYahoo('', edtNome.Text, edtPara.Text, mmTexto.Text); end; case vResult of FAILED: ShowMessage('Falha no envio da mensagem.'); SENT: ShowMessage('Mensagem enviada com sucesso.'); UNREACHABLE: ShowMessage('Destino não encontrado.'); UNAUTHORIZED: ShowMessage('Mensagem recusada. Sem autorização.'); end; end;
Conclusão
Provavelmente você está se questionando sobre a utilidade de um software que envia, mas não recebe mensagens. Este software seria muito útil, por exemplo, em um sistema de vendas, onde automaticamente o cliente receberia uma mensagem avisando que o produto que estava esperando chegou.
Ferramentas Utilizadas:

Borland Delphi 6
Web Service disponível em: http://www.bindingpoint.com

Como consumir WebServices em Delphi

Como consumir WebServices em Delphi

E ai pessoal , tudo bem? Espero que sim…
Como é de praxe neste blog(e na minha vida em geral), vamos direto ao assunto: WebServices já fazem parte da rotina dos programadores, seja qual for a plataforma, e alias em Delphi é algo muito simples de se fazer.
Primeira coisa, se quiserem testar a aplicação de vocês, recomendo que façam um cadastro no Byjg , assim vocês terão acesso a um excelente serviço de busca de CEP’s, que será usado como exemplo.
Bom, feito o cadastro abram o Delphi (no meu caso a Versão 7) e faça File->New->Other aba WebService, e abra “WSDL importer”
Na Caixa que segue digite o endereço do WDSL,no caso, http://www.byjg.com.br/site/webservice.php/ws/cep?WSDL, isto fará a importação de uma interface necessária para a utilização do WEBSERVICE.Depois de avançar finalize, assim você verá que será criada uma unit chamada CEP com o seguinte código.
CODE
// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL     : http://www.byjg.com.br/site/webservice.php/ws/cep?WSDL
// Encoding : utf-8
// Version  : 1.0
// (27/3/2010 13:28:27 – 1.33.2.5)
// ************************************************************************ // unit cep;
interface
uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
type
  // ************************************************************************ //
  // The following types, referred to in the WSDL document are not being represented
  // in this file. They are either aliases[@] of other types represented or were referred
  // to but never[!] declared in the document. The types from the latter category
  // typically map to predefined/known XML or Borland types; however, they could also
  // indicate incorrect WSDL documents that failed to declare or import a schema type.
  // ************************************************************************ //
  // !:string          – “http://www.w3.org/2001/XMLSchema”
  ArrayOfstring = array of WideString;          { “urn:CEPService” }
  // ************************************************************************ //
  // Namespace : urn:http://www.byjg.com.br
  // soapAction: urn:CEPServiceAction
  // transport : http://schemas.xmlsoap.org/soap/http
  // style     : rpc
  // binding   : CEPServiceBinding
  // service   : CEPService
  // port      : CEPServicePort
  // URL       : http://www.byjg.com.br/site/webservice.php/ws/cep
  // ************************************************************************ //
  CEPServicePort = interface(IInvokable)
  ['{EC28595B-95D2-DE51-E5B1-57B81D4826D3}']
    function  obterVersao: WideString; stdcall;
    function  obterLogradouro(const cep: WideString): WideString; stdcall;
    function  obterLogradouroAuth(const cep: WideString; const usuario: WideString; const senha: WideString): WideString; stdcall;
    function  obterCEP(const logradouro: WideString; const localidade: WideString; const UF: WideString): ArrayOfstring; stdcall;
    function  obterCEPAuth(const logradouro: WideString; const localidade: WideString; const UF: WideString; const usuario: WideString; const senha: WideString): ArrayOfstring; stdcall;
  end;
function GetCEPServicePort(UseWSDL: Boolean=System.False; Addr: string=”; HTTPRIO: THTTPRIO = nil): CEPServicePort;
implementation
function GetCEPServicePort(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): CEPServicePort;
const
  defWSDL = ‘http://www.byjg.com.br/site/webservice.php/ws/cep?WSDL’;
  defURL  = ‘http://www.byjg.com.br/site/webservice.php/ws/cep’;
  defSvc  = ‘CEPService’;
  defPrt  = ‘CEPServicePort’;
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = ”) then
  begin
    if UseWSDL then
      Addr := defWSDL
    else
      Addr := defURL;
  end;
  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
  else
    RIO := HTTPRIO;
  try
    Result := (RIO as CEPServicePort);
    if UseWSDL then
    begin
      RIO.WSDLLocation := Addr;
      RIO.Service := defSvc;
      RIO.Port := defPrt;
    end else
      RIO.URL := Addr;
  finally
    if (Result = nil) and (HTTPRIO = nil) then
      RIO.Free;
  end;
end;
initialization
  InvRegistry.RegisterInterface(TypeInfo(CEPServicePort), ‘urn:http://www.byjg.com.br’, ‘utf-8′);
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(CEPServicePort), ‘urn:CEPServiceAction’);
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfstring), ‘urn:CEPService’, ‘ArrayOfstring’);
end.
Repare que há uma interface chamada “CEPServicePort”, e uma função chamada “GetCEPServicePort” que retorna um objeto do tipo da interface citada.Em resumo, é só usar está função para pegar o objeto e utilizar as funções de de busca de Cep citadas nesta parte:
  CEPServicePort = interface(IInvokable)
  ['{EC28595B-95D2-DE51-E5B1-57B81D4826D3}']
    function  obterVersao: WideString; stdcall;
    function  obterLogradouro(const cep: WideString): WideString; stdcall;
    function  obterLogradouroAuth(const cep: WideString; const usuario: WideString; const senha: WideString): WideString; stdcall;
    function  obterCEP(const logradouro: WideString; const localidade: WideString; const UF: WideString): ArrayOfstring; stdcall;
    function  obterCEPAuth(const logradouro: WideString; const localidade: WideString; const UF: WideString; const usuario: WideString; const senha: WideString): ArrayOfstring; stdcall;
  end;
Muito bem, mas vamos mastigar um pouco, tem algumas manha ainda, vá até a a paleta WEBServices, e arraste um componente HTTPRIO.
Neste componente, você encontrará todas as propriedades necessárias para se conectar a um webService, no entanto configure apenas o proxy de houver algum, porque o restante das configurações serão retornados pela função “function GetCEPServicePort(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): CEPServicePort; ” Reparem que, o ultimo parâmetro de função é exatamente um componente HTTPRIO, pois a função ira usar parte de suas configurações(que não sejam relacionadas ao serviço em si, mas em relação a rede proxy etc.), para retornar um objeto filho de HTTPRIO (sim um filho, olha esse retorno Result := (RIO as CEPServicePort); , pegando o componente e fazendo o polimorfismo ).
Depois da explicação terica vamos ao código:
CODE
procedure TForm1.Button1Click(Sender: TObject);
var ser: CEPServicePort;
begin       ser:= GetCEPServicePorT(false,”,HTTPRIO1);
      memo1.text:=    ser.obterLogradouroAuth(Edit1.Text,’usuario’,senha’); // o usuario e senha são aqueles que você cadastrou no site dito no começo do artigo
end;
Simplesmente um botão que quando clicado, faz instãncia de um CEPServicePort, atraves da função getCEPServicePort,usando parte da configuração feita no componente ,HTTPRIO1;
Depois é só usar qualquer método declarado na interface CEPServicePort , e no nosso caso usaremos o método obterLogradouroAuth., e simplesmente  jogar o valor do Lagradouro em um MEMO,

Ressaltando que quase todos os WebServices trabalham da mesma forma, alguns métodos de interfaces geradas retornam tipos especificos, mas basta usá-los pois estarão disponíveis na unit baixada através do WSDL;
é isso ai… qualquer dúvida ou sugestão? deixe nos recados!

Delphi 2010 RTM - Full Download

Video Aula - Delphi Super Avançado.


Conteúdo:

-Biometria (impressão digital)
-XML
-Criptografia
-Report Builder
-Rave report
-Fast Report
-Orientação a Objetos
-Criação de componentes
-Conexões com Oracle, SQL Server, MySQL, PostgreSQL e Firebird (usando componentes Zeos, Ado, DBExpress e BDE)
-Controle de login
-Tabelas virtuais.

DVD1 - DVD2