delphi 2007

Embed Size (px)

Citation preview

Curso de Tecnologia em Automao Industrial DISCIPLINA: PROFESSOR: Informtica II Adilson Moretti CDIGO: SEMESTRE: 2010/2

Apostila Delphi 2007Linguagens de Programao um conjunto de termos (vocabulrio) e de regras (sintaxe) que permite a formulao de instrues a um computador (VELLOSO, 2003). Existe uma enorme diversidade de linguagens de programao, umas mais adaptadas a um determinado tipo de processo e outras mais ajustadas a outros. Uma linguagem de programao faz a comunicao entre um programador e um programa tradutor. Esse programa, que independente de mquina/computador, a partir de um conjunto de instrues/comandos escritos em uma linguagem de programao de alto nvel, faz com que o computador as execute. O que uma Linguagem de Programao Visual As linguagens de programao visual, ou ferramentas visuais, so linguagens desenvolvidas para ambientes grficos. Estas linguagens possuem a chamada sintaxe visual, pois incorporam figuras, formulrios, animaes, diagramas ou cones para facilitar e agilizar o desenvolvimento dos programas. As linguagens de programao visual possuem um ambiente visual baseado em um conjunto de ferramentas e uma interface para acessar a estas ferramentas. Caractersticas das Linguagens de Programao Visual As principais caractersticas de uma Linguagem Visual so permitir que um sistema seja desenvolvido mais rapidamente do que numa linguagem tradicional e reduzir o tempo de manuteno. Isto ocorre em funo dos seguintes aspectos: a interface montada atravs de componentes j disponveis; torna-se desnecessrio escrever uma boa parte do cdigo de um programa em funo do mesmo ser gerado automaticamente; possuem geradores ou editores de telas, relatrios, etiquetas, consultas, entre outros; combinam recursos de anlise orientada a objetos e a eventos com gerenciadores de banco de dados.

Tipos de Linguagens Visuais Algumas das principais linguagens de Programao Visual disponveis no mercado so: Linguagem Visual Borland Delphi Dbase FoxPro Microsoft Access Power Builder Realizer SQL Windows Visual Basic Visual C++ Visual J++ Visual Objects Visual Realia Linguagem de Implementao Object Pascal Dbase Xbase Acces Basic Powerscript Basic SAL Visual Basic C++ Java XBase orientado a objetos Cobol

Delphi, como Soluo para Desenvolvedores Muitas vezes nos perguntamos, e somos questionados, no porque de adotar o Delphi como a linguagem para o desenvolvimento de sistemas? Inicialmente, necessrio conhecer que o Delphi oferece um rpido caminho para o desenvolvimento de aplicaes nos ambientes: Windows vista, Windows 95, , Windows 98, , Windows Millenium e Windows NT(2000); Bancos de dados do tipo Cliente/Servidor: Oracle, Informix, InterBase, SyBase e Microsoft SQL Server; Alta performance, em sistemas crticos; Base de Dados locais e aplicaes do tipo network; Ambiente grfico, visual e multimdia.

possvel criar, dentre outros, os seguintes tipos de aplicaes em Delphi: Us-lo como a linguagem de desenvolvimento para bancos do tipo Cliente/Servidor;

Ambiente heterogneo para captura e envio de informaes em diversos tipos de arquivos de dados; Um pacote corporativo de aplicaes inteligentes e interpretadores de dados. Incorporando DLLs e EXEs externos; Pacotes multimdia com desenho e animao; Genricos utilitrios do Windows; Criao de bibliotecas (DLL) para leitura por outras aplicaes.

Delphi 2007 for Win32 O Delphi for Win32 o nico IDE que suporta a criao de aplicaes de cdigo nativo compatveis com Windows 2000, XP, E TAMBM Vista. O Delphi permite que voc distribua as aplicaes para qualquer delas. Isso cria a flexibilidade de utilizar o OS que melhor atenda s suas necessidades, mesmo quando desenvolvendo para outras plataformas Windows mais populares. O Delphi for Win32 capacita o desenvolvimento de aplicaes suportadas pelo Vista a partir do familiar ambiente Win32, a fcil criao de aplicaes web que suportam AJAX, e uma dinamizada conectividade a banco de dados corporativos. O novo VCL for the Web permite que voc construa rpida e visualmente pginas web interativas e de pronta-resposta, e aplicaes que suportam tcnicas AJAX. A nova arquitetura de banco de dados DBX4 dinamiza a conectividade a banco de dados e agrega suporte s mais recentes verses de bancos de dados SQL. O DBX4 uma infra-estrutura de banco de dados de cdigo nativo ou gerenciado que simplifica o desenvolvimento de data drivers e suporta pooling de conexo.

Edies do Delphi for Win32 Delphi 2007 for Win32 Professional Edition O Delphi 2007 for Win32 Professional foi feito para indivduos ou departamentos que querem utilizar a abordagem de desenvolvimento RAD visual do Delphi no desenvolvimento Win32 com suporte a Windows Vista e tcnicas do AJAX na construo de pginas web interativas. O Professional tambm inclui drivers para conexo com Interbase e MySQL 4.1/5.X. Delphi 2007 for Win32 Enterprise Edition O Delphi 2007 for Win32 Enterprise destinado a organizaes de desenvolvimento corporativo que precisam de suporte AJAX para aplicaes web mais complexas e suporte a conectividade a banco de dados corporativos. O Enterprise inclui todas as caractersticas do Professional e ainda suporte a Bancos de Dados Enterprise SQL (Oracle 10g, MS SQL Server 2000/2005, Informix 9x, IBM DB2 8.x, Sybase 12.5) e aplicaes web interativas com suporte AJAX. O Enterprise ainda inclui funes aperfeioadas para a Plataforma de Modelagem Visual Together, incluindo novos diagramas (de seqncia, colaborao, distribuio, Use Case, atividade e diagramas de componentes), suporte a design Patterns, XMI 1.1 Import/Export, gerao de documentao, alm de auditorias e mtricas.

IDE - Ambiente Integrado de Desenvolvimento DELPHI 2007 Neste item ser estudado o IDE (Integrated Developer Environment Ambiente Integrado de Desenvolvimento) do DELPHI. O DELPHI possui um conjunto de ferramentas que permitem facilitar e agilizar a construo de programas, permitindo uma melhor interao entre o programador e o computador.

Figura 1 IDE Delphi 2007

Janela MAIN A janela MAIN, ou janela principal, controla o funcionamento do DELPHI. Esta janela pode ser dividida em: * Menu Principal: contm as opes de utilizao do DELPHI; * Botes Speed Bar: contm botes que agilizam determinadas funes do DELPHI;

Menu Principal

Figura 2 Janela MAIN Botes Speed Bar

Janela FORM O FORM a tela onde o desenvolvedor constri sua aplicao. A partir de um FORM que se estabelece a interao USURIO-COMPUTADOR, atravs de botes, rtulos e outros componentes, estabelecendo-se funes, mtodos ou eventos que sero ativados. Os componentes so dispostos dentro da rea til do FORM. possvel a incluso de objetos visuais e no-visuais, sem restries.

Form Designer

Figura 3 a janela FORM

Janela OBJECT INSPECTOR A janela OBJECT INSPECTOR contm propriedades e eventos dos componentes inseridos em um FORM, e do prprio FORM. utilizado em conjunto com a rea de Composio de Janelas (Form Designer) e o Editor de Cdigos (Code Editor), auxiliando na criao e personalizao (configurao) dos componentes. na janela Properties (Propriedades), por exemplo, que se estabelecem as caractersticas de cada componente, como nome, fonte, altura, largura, etc. J na janela Events (Eventos) estabelecem-se aes a serem tomadas pelo componente a partir de um evento associado ao mouse, teclado, etc.

Figura 4 Janela OBJECT INSPECTOR

Janela STRUCTURE PANEL Mostra todos os objetos criados no formulrio atual, obedecendo, inclusive, nveis em relao a objetos contineres (que podem ter em si outros objetos, tal qual um formulrio).

Figura 5 Janela STRUCTURE PANEL

Janela CODE EDITOR A janela CODE EDITOR, ou editor de cdigo, onde se desenvolve o programa fonte. neste editor que se encontra a estrutura sinttica propriamente dita da Linguagem DELPHI. Cabe ressaltar, no entanto, que boa parte do cdigo escrito gerado pela prpria linguagem.

Code Editor

Figura 6 - A Janela CODE EDITOR

Nomenclatura Para nomear os componentes podemos usar uma conveno muito usada, onde as primeiras letras, minsculas, identificam o tipo do componente e o restante identifica a funo deste, assim, btnSair, seria o boto de sair. Se a funo do componente for um nome composto esse nome deve ser escrito com os primeiros nomes abreviados e com letras de caso varivel, como em btnRelVendas, que seria o boto do relatrio de vendas ou btnRelVenProduto, que seria o boto do relatrio de vendas por produto. Propriedades As propriedades so caractersticas dos componentes, como foi mostrado anteriormente. Para alterar propriedades em cdigo use a sintaxe de ponto, como mostrado abaixo. Tipos de Propriedade Tipo String Button1.Caption := 'Fechar'; Label1.Caption := Edit1.Text + '/' + Edit2.Text;

Tipo Numrico Button2.Height := Button2.Height * 2; Width := Button1.Width + Button2.Width + 12; Tipo Enumerado BorderStyle := bsDialog; Panel1.Color := clWindow; Propriedades Aninhadas de Classe Memo1.Lines.Text := 'E agora, Jos?'; Label1.Font.Color := clBlue; Propriedades Aninhadas de Conjunto BorderIcons := [biSystemMenu, biMaximize]; Label1.Font.Style := [fsBold, fsItalic];

Propriedades Comuns Propriedade Descrio Align Determina o alinhamento do componente Canvas Superfcie de desenho, do tipo TCanvas, onde pode se desenhar a imagem do componente Caption Legenda do componente (& indica tecla de atalho para alguns componentes) Color Cor do componente ComponentCount O nmero de componentes possudos Components Matriz de componentes possudos Ctl3D Define a aparncia 3D do componente Enabled Define se o componente est ativo, se pode ser usado Font Fonte utilizada no componente Height Altura HelpContext Nmero utilizado para chamar o Help on-line Hint String utilizada em dicas instantneas Left Posio esquerda Name Nome do componente PopupMenu Menu de contexto do componente ShowHint Define se o Hint ser mostrado TabOrder A ordem de tabulao do componente, usada quando o usurio tecla TAB TabStop Indica se o componente ser selecionado quando o usurio teclar TAB Tag Propriedade no utilizada pelo Delphi, que pode ser usada como propriedade personalizada Top Posio superior Visible Define se o componente est visvel Width Largura

Eventos Os Eventos acontecem em resposta a uma ao do usurio ou do prprio sistema, ao programar um mtodo de evento, devemos levar em considerao que este s ser executados quando o evento acontecer. Uma das tarefas mais importantes na programao baseada em eventos determinar quais eventos sero usados e qual a ordem desses eventos, por exemplo, quando o usurio clicar em um boto, qual evento acontecer primeiro, OnEnter, OnMouseDown ou OnClick? Os eventos podem ser compartilhados entre componentes, dessa Forma, voc pode ter um boto na barra de ferramentas que faz a mesma coisa que uma opo de menu. Para isso, basta escolher o evento na lista em vez de clicar duas vezes no Object Inspector. Podemos tambm mudar os mtodos de evento em cdigo, pois os eventos tambm so propriedades e podem ser usados como tal. Voc pode atribuir um evento de outro componente ou diretamente o nome do mtodo, como mostrado abaixo. Button1.OnClick := Edit1.OnExit; Button2.OnClick := Edit2.Click; Eventos Comuns Evento OnChange OnClick OnDblClick OnEnter OnExit OnKeyDown OnKeyPress OnKeyUp

Descrio O contedo do componente alterado O componente acionado Duplo-clique no componente O componente recebe o foco O componente perde o foco Tecla pressionada Uma tecla pressionada e solta Tecla solta

Fundamentos Object Pascal

Classes Classes so tipos de objetos, uma classe declarada na clusula type da seo interface e os mtodos so definidos na seo implementation. Examine o cdigo de um Form para identificar os elementos de sua classe. interface type TFrmSomar = class(TForm) EdtA: TEdit; EdtB: TEdit; BtnSoma: TButton; procedure BtnSomaClick(Sender: TObject); private { Private declarations } public { Public declarations } end;

implementation procedure TFrmSoma.BtnSomaClick(Sender: TObject); begin ShowMessage(EdtA.Text + EditB.Text); end;

Objetos Um Objeto tratado como uma varivel cujo tipo uma classe. A declarao de objetos igual declarao de uma varivel simples, tendo no lugar do tipo a classe do objeto. var FrmSomar: TFrmSomar; Literais Valores literais diferente. Tipo Inteiro Inteiro Hexadecimal Real Caractere String

so valores usados em atribuies e expresses. Cada tipo tem uma sintaxe Definio Seqncia de dgitos decimais (0 a 9), sinalizados ou no Seqncia de dgitos hexadecimais (0 a F), precedidos por um sifro ($) Igual ao tipo Inteiro, mas pode usar separador decimal e notao cientfica Letra entre apstrofos ou o caracter # seguido de um nmero inteiro entre 0 e 255 (ASCII) Seqncia de caracteres delimitada por apstrofos

Instrues Os programas so compostos por instrues, que so linhas de cdigo executvel. Exemplos de instrues simples so atribuies, mensagens entre objetos, chamadas de procedimentos, funes e mtodos, como mostradas abaixo. As instrues podem ser divididas em vrias linhas, o que indica o fim de uma instruo o ponto e vrgula no final. Quando uma instruo quebrada, costuma-se dar dois espaos antes das prximas linhas, para melhorar a leitura do cdigo. Caption := 'Gabba Gabba Hey!'; Form2.ShowModal; Application.MessageBox('Voc executou uma operao ilegal, o programa ser finalizado.', 'Falha geral', MB_ICONERROR); Voc pode usar vrias instrues agrupadas em uma instruo composta, como se fosse uma s instruo. Uma instruo composta delimitada pelas palavras reservadas begin e end. Toda instruo, simples ou composta, terminada com um ponto-e-vrgula.

if CheckBox1.Checked then begin ShowMessage('O CheckBox ser desmarcado.'); CheckBox1.Checked := False; end; Estilo de Codificao As instrues e todo o cdigo de uma Unit devem ser distribudos para facilitar o mximo a leitura. Para isso, podemos usar a identao, geralmente de dois espaos para indicar os nveis de cdigo. Procure criar um estilo prprio, que melhor se molde sua realidade. Se for desenvolver em grupo, melhor que todos usem o mesmo estilo para evitar confuses. Comentrios Existem 3 estilos de comentrio no Delphi, como mostrado abaixo. (* Comentrio do Pascal Padro *) { Comentrio do Turbo Pascal } // Comentrio de linha do C++ Cuidado com as diretivas de compilao, pois elas so delimitadas por chaves e podem ser confundidas com comentrios. A diretiva de compilao mostrada abaixo includa em todas as Units de Forms. {$R*.DFM} Tipos de Dados Padro O Delphi trata vrios tipos de dados padro, segue uma descrio sucinta desses tipos. Tipos Inteiros So tipos numricos exatos, sem casas decimais. O tipo Integer o tipo inteiro padro. Tipo ShortInt SmallInt Longint Byte Word Integer Cardinal Tamanho Bytes 1 2 4 1 2 4 4 em Valor Mnimo -128 -32768 -2147483648 0 0 -2147483648 0 Valor Mximo 127 32767 2147483647 255 65535 2147483647 2147483647

Tipos Reais So tipos numricos com casas decimais. O tipo Double o tipo real padro. Tipo Tamanho em Valor Mnimo Valor Mximo Dgitos Bytes Significativos -39 38 Real 6 10 10 11-12 Single 4 10-45 1038 7-8 -324 308 Doubl 8 10 10 15-16 Extended 10 10-4932 104932 19-20 18 18 Comp 8 -10 10 19-20

Currency

8

-1012

1012

19-20

Tipos Texto Os tipos texto podem operar com caracteres simples ou grupos de caracteres. O tipo texto padro o tipo string. Tipo Descrio Char Um nico caractere ASCII String Texto alocado dinamicamente, pode ser limitado a 255 caracteres conforme configurao Pchar String terminada em nulo (#0), usada geralmente nas funes da API do Windows O operador + pode ser usado para concatenar strings e voc pode usar uma varivel do tipo string como uma lista de caracteres. ShowMessage('5 letra do ttulo da janela: ' + Caption[5]); Label1.Text := '2 letra do Edit: ' + Edit1.Text[2]; TDateTime O tipo TDateTime guarda data e hora em uma estrutura interna igual ao tipo Double, onde a parte inteira o nmero de dias desde 31/12/1899 e a parte decimal guarda a hora, minuto, segundo e milissegundo. As datas podem ser somadas ou subtradas normalmente. Existem vrias rotinas de manipulao de datas e horas, usadas com o tipo TDateTime, veja algumas abaixo. Rotina Descrio Date Retorna a data do sistema Now Retorna a data e hora do sistema Time Retorna a hora do sistema DayOfWeek Retorna o dia da semana de uma data especificada DecodeDate Decodifica um valor TDateTime em Words de dia, ms e ano DecodeTime Decodifica um valor TDateTime em Words de hora, minuto, segundo e milissegundos EncodeDate Retorna um TDateTime a partir de Words de dia, ms e ano EncodeTime Retorna um TDateTime a partir de Words de hora, minuto, segundo e milissegundos No help de cada uma das funes acima voc vai encontrar alguns exemplos, veja os colocados abaixo. if DayOfWeek(Date) = 1 then ShowMessage('Hoje Domingo') else ShowMessage('Hoje no Domingo'); var A, M, D: Word; begin DecodeDate(Date, A, M, D); ShowMessage(Format('Dia %.2d do ms %.2d de %d.', [D, M, A])); end;

Operadores Os operadores so usados em expresses e a ordem em que as expresses so executadas depende da precedncia desses operadores. Veja abaixo a lista de operadores em ordem descendente de precedncia. Operador Descrio Operadores Unrios @ Endereo Not No booleano ou bit voltado para no Operadores Multiplicativos e de direo de Bit * Multiplicao ou interseo de conjuntos / Diviso de Real Div Diviso de Inteiro Mod Resto de diviso de Inteiros And E booleano ou bit voltado para e Shl Deslocamento de bits esquerda Shr Deslocamento de bits direita Operadores Aditivos + Adio ou unio de conjuntos Subtrao ou diferena de conjuntos Or Ou booleano ou bit voltado para ou Xor Ou exclusivo booleano ou bit voltado para ou exclusivo Operadores Relacionais = Igual Diferente < Menor > Maoir = Maior ou igual Para forar uma expresso de menor precedncia a ser executada antes, voc pode usar os parnteses, como mostrado abaixo. (5 - 2) * 3; (A > B) and (A < C) Para fazer potenciao, use a funo Power, abaixo temos que A igual a A elevado a 4. A := Power(A, 4); Estruturas de Deciso If O if uma estrutura de deciso usada para realizar instrues em determinadas condies. O if considerado uma s instruo, por isso, s encontramos o ponto-e-vrgula no final. O else opcional. if Opn.Execute then Img.Picture.LoadFromFile(Opn.FileName);

if Nota < 5 then ShowMessage('Reprovado') else ShowMessage('Aprovado'); Case Permite que o fluxo da execuo seja desviado em funo de vrias condies de acordo com o valor do argumento, que tem que ser ordinal, caso o valor do argumento no corresponda a nenhum dos valores listados, podemos incluir um else.

case Ch of ' ': ShowMessage('Espao'); '0'..'9': ShowMessage('Dgito'); '+', '-', '*', '/': ShowMessage('Operador'); else ShowMessage('Caractere especial'); end; case CbbBorda.ItemIndex of 0: BorderStyle := bsDialog; 1: BorderStyle := bsSingle; 2: BorderStyle := bsSizeable; end; Estruturas de Repetio While O lao while executa uma instruo at que uma condio seja falsa. I := 10; while I >= 0 do begin ShowMessage(IntToStr(I)); Dec(I); end; For O lao for executa uma instruo um nmero determinado de vezes, incrementando uma varivel de controle automaticamente a cada iterao. Caso seja preciso que a contagem seja decremental, pode-se usar downto em vez de to. for I := 1 to ComponentCount do ShowMessage('O ' + IntToStr(I) + ' Componente ' + Components[I - 1].Name); for I := Length(Edit1.Text) downto 1 do ShowMessage(Edit1.Text[I]); Repeat O lao repeat executa instrues at que uma condio seja verdadeira.

I := 1; repeat S := InputBox('Acesso', 'Digite a senha', ''); Inc(I); if I > 3 then Halt; until S = 'flamengo'; Quebras de Lao Em qualquer um dos laos mostrados podemos usar o procedimento Break para cancelar a repetio e sair do lao, podemos tambm forar a prxima iterao com o procedimento Continue. I := 1; while true do begin Inc(I); if I < 10000000 then Continue; ShowMessage('Chegamos a dez milhes'); Break; end; Tipos Definidos Pelo Usurio O usurio tambm pode declarar tipos no definidos pelo Delphi. Essas declaraes so feitas na seo type, da interface ou implementation, sendo que na implementation esses tipos no podero ser usados em outras Units. Dificilmente voc ter que definir tipos, a no ser classes, pois os tipos padro do Delphi so o bastante para a maioria das aplicaes. Strings Limitadas Caso se deseje limitar o nmero de caracteres que uma string pode receber, podemos criar um tipo de string limitada. TNome = string[40]; TEstado = string[2]; Records O tipo record uma forma de criar uma nica estrutura com valores de diferentes tipos de dados. Cada um dos dados de um record chamado de campo. TData = record Ano: Integer; Mes: TMes; Dia: Byte; end; var Festa: TData; begin Festa.Ano := 1997; Festa.Mes := Mai;

Festa.Dia := 8; end; Arrays Arrays fornecem uma forma de criar variveis que contenham mltiplos valores, como em uma lista ou tabela, cujos elementos so do mesmo tipo. Veja abaixo alguns exemplos de arrays de dimenses variadas. TTempDia = array [1..24] of Integer; TTempMes = array [1..31, 1..24] of Integer; TTempAno = array [1..12, 1..31, 1..24] of Integer; var TD: TTempDia; I: Integer; begin for I := 1 to 24 do TD[I] := StrToIntDef(InputBox('Temperaturas', 'Digite a temperatura na hora ' + IntToStr(I), ''), 30); end; Um array pode ser definido como constante tipada, onde todos os seus elementos devem ser inicializados. FAT: array[1..7] of Integer = (1, 2, 6, 24, 120, 720, 5040); O tipo dos elementos de um array pode ser qualquer um, voc pode ter uma array de objetos, de conjuntos, de qualquer tipo que quiser, at mesmo um array de arrays. TTempMes = array [1..31] of TTempDia; TBtnList = array [1..10] of TButton; Procedimentos, Funes e Mtodos As aes de um objeto devem ser definidas como mtodos. Quando a ao no pertence a um objeto, como uma transformao de tipo, essa ao deve ser implementada em forma de procedimentos e/ou funes.

Procedimentos Procedimentos so sub-rotinas, que realizam uma tarefa e no retornam um valor. A declarao de um procedimento feita na seo interface e a definio, na seo implementation. Ao chamar o identificador do procedimento, com os parmetros necessrios, esse procedimento ser executado. Veja abaixo o exemplo de uma unit com a implementao um procedimento. unit Tools; interface procedure ErrorMsg(const Msg: string); implementation

uses Forms, Windows; procedure ErrorMsg(const Msg: string); begin Application.MessageBox(PChar(Msg), 'Operao invlida', MB_ICONERROR); end; end. Funes Funes so muito semelhantes a procedimentos a nica diferena que as funes retornam um valor. O tipo do valor de retorno deve ser informado no cabealho da funo. Na implementao da funo deve-se atribuir o valor de retorno palavra reservada Result ou ao identificador da funo. Pode-se ento usar a funo em expresses, atribuies, como parmetros para outras funes, em qualquer lugar onde o seu valor possa ser usado. function Average(A, B: Double): Double; begin Result := (A + B) / 2; end; Mtodos Mtodos so funes ou procedimentos que pertencem a alguma classe, passando a fazer parte de qualquer objeto dessa classe. Na implementao de um mtodo precisamos indicar qual a classe qual ele pertence. Para chamar um mtodo em algum lugar no pertencente sua classe, como procedimentos, funes ou mtodos de outras classes, deve ser indicado o objeto que deve executar o mtodo. Os mtodos usam os mesmos nveis de encapsulamento dos atributos.

type TFrmMsg = class(TForm) LblMsg: TLabel; BtnOk: TButton; BtnCancelar: TButton; ImgMsg: TImage; public procedure ShowMsg(const Msg: string); end; procedure TFormMsg.ShowMsg(const Msg: string); begin LblMsg.Caption := Msg; ShowModal; end;

Parmetros Existem trs tipos de passagem de parmetros, que devem ser indicados na declarao da funo ou procedimento. Parmetros de tipos diferentes devem ser separados por ponto e vrgula. function MultiStr(const S: string; N: Double; var Erro: Integer): string; Quando no indicado o tipo de passagem, passado o valor do parmetro, como constante.

Ao usar a palavra-chave var, no ser enviado o valor do parmetro e sim uma referncia a ele, tornando possvel mudar o valor do parmetro no cdigo do procedimento. Como alternativa voc pode passar um parmetro por referncia constante, para isso use a palavra const antes da declarao do parmetro.

With Usado para facilitar o acesso s propriedades e mtodos de um objeto. with Edt do begin CharCase := ecUpperCase; MaxLenght := 10; PasswordChar := '*'; Text := 'Brasil'; end; Existem Vrias Funes De Manipulao De Strings, Veja Algumas Das Mais Importantes Mostradas Abaixo. Funo Descrio AnsiCompareTex Compara 2 strings sem sensitividade de maisculas/minsculas t AnsiLowerCase Converte todas as letras de uma string para minsculas AnsiUpperCase Converte todas as letras de uma string para maisculas Copy Retorna parte de uma string Delete Apaga parte de uma string Insert Insere uma string em outra Length Nmero de caracteres de uma string Pos Posio de uma string em outra Trim Remove todos os espaos de uma string TrimLeft Remove os espaos esquerda de uma string TrimRight Remove os espaos direita de uma string Format Formata uma string com uma srie de argumentos de vrios tipos Por exemplo, para comparar o texto de dois Edits, poderamos usar a funo AnsiCompareText. if AnsiCompareText(EdtA.Text, EdtB.Text) = 0 then ShowMessage('O texto dos dois Edits so iguais.'); A funo Format especialmente til na formatao de strings, veja alguns exemplos. ShowMessage(Format('O nmero %d a parte inteira do nmero %f.', [10, 10.5])); ShowMessage(Format('Este texto%sfoi formatado%susando o caractere #%d.', [#13, #13, 13])); ShowMessage(Format('O preo do livro %s %m.', ['Como Programar em Delphi', 50.7])); Um detalhe que deve ser observado que as propriedades dos objetos no podem ser usadas como variveis em funes. Veja a declarao do procedimento Delete no help. procedure Delete(var S: string; Index, Count:Integer);

Digamos que voc deseje apagar as 5 primeiras letras de um Edit, como a string do Delete varivel, no poderia usar o cdigo abaixo. Delete(Edit1.Text, 1, 5); Para voc poder fazer a operao desejada, teria que usar uma varivel como varivel auxiliar. var S: string; begin S := Edit1.Text; Delete(S, 1, 5); Edit1.Text := S; end; Tipos Ordinais Tipos ordinais so tipos que tem uma seqncia incremental, ou seja, voc sempre pode dizer qual o prximo valor ou qual o valor anterior a um determinado valor desses tipos. So tipos ordinais o Char, os tipos inteiros, o Boolean e os tipos enumerados. Algumas rotinas para ordinais so mostradas abaixo. Funo Descrio Dec Decrementa varivel ordinal Inc Incrementa varivel ordinal Odd Testa se um ordinal mpar Pred Predecessor do ordinal Succ Sucessor do ordinal Ord Ordem de um valor na faixa de valores de um tipo ordinal Low Valor mais baixo na faixa de valores High Valor mais alto na faixa de valores Por exemplo, use o cdigo abaixo no evento OnKeyPress de um Edit e veja o resultado. Inc(Key); Rotinas de Converso As principais rotinas de converso esto listadas na tabela abaixo. Caso voc tente usar uma dessas rotinas em uma converso invlida, pode ser gerada uma exceo. Rotina Descrio Chr Byte em Char StrToInt String em Integer IntToStr Integer em String StrToIntDef String em Integer, com um valor default caso haja erro IntToHex Nmero em String Hexadecimal Round Arredonda um nmero real em um Integer Trunc Trunca um nmero real em um Integer StrToFloat String em Real FloatToStr Real em string FormatFloat Nmero real em string usando uma string de formato DateToStr TDateTime em string de data, de acordo com as opes do Painel de Controle StrToDate String de data em TDateTime

TimeToStr StrToTime DateTimeToStr StrToDateTime FormatDateTime Val Str

TDateTime em Strind de Hora String de hora em TDateTime TDateTime em string de data e hora String de data e hora em TDateTime TDateTime em string usando uma string de formato String em nmero, real ou inteiro Nmero, real ou inteiro, em String

Veja alguns exemplos de como usar essas rotinas. Converso de dados uma operao muito comum na programao em Object Pascal, seria interessante dar uma olhada no help de cada uma das funes acima. var I: Integer; D: Double; S1, S2: string; begin D := 10.5; I := Trunc(D); S1 := FloatToStr(D); S2 := IntToStr(I); ShowMessage(S1 + #13 + S2); end; var A, B, Soma: Bouble; begin A := StrToFloat(EdtA.Text); B := StrToFloat(EdtB.Text); Soma := A + B; ShowMessage(Format('%f + %f = %f', [A, B, Soma]); end; Funes matemticas predefinidas O Object Pascal tem vrias funes predefinidas, parte das quais listamos a seguir : Abs(x) ArcTan(x) Cos(x) Dec(x) Exp(x) Frac(x) Inc(x) Int(x) Ln(x) ODD(x) Sqr(x) Sqrt(x) Retorna o valor absoluto de x. Retorna o valor do arco tangente de x (em radianos). Retorna o cosseno de x (x em radianos). Decrementa (subtrai 1) uma varivel inteira x. Retorna o valor de e elevado a x , onde e a base dos logaritmos neperianos. Retorna a parte fracionria do real x. Incrementa (soma 1) uma variavel inteira x. Retorna a parte inteira do real x. Retorna o logaritmo neperiano de x. Retorna True se x for impar. Retorna o quadrado de x. Retorna a raiz quadrada de x.