[tutorial 06]delphi - if, then, begin, else

Upload: francis-js

Post on 10-Feb-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/22/2019 [Tutorial 06]Delphi - If, Then, Begin, Else

    1/13

    DELPHI > [tutorial 06]delphi - If, Then, Begin, Else.Escrito em 25/02/07, visitado 3476 vezes.

    Autor: Rikezenho[size=4][color="#FF0000"][b]DELPHI: OBJECT PASCAL - AULA 06, IF, THEN, BEGIN, ELSE[/b][/color][/size]

    Ol, hoje iremos abordar as clusulas de condies.

    [i]If[/i] significa [u]Se[/u].[i]Then[/i] significa [u]Ento[/u].[i]Begin[/i] significa [u]Comear[/u].[i]Else[/i] significa [u]Seno[/u].

    Com isso j d pra imaginar alguma coisa n?

    [b]IF:[/b]A sintaxe :[code]If Condio ThenBegin

    [Cdigos]End;[/code]

    Traduzindo com exemplo:[code]Se Label1.Caption = 'Wow!' EntoComece[Cdigos]End;[/code]

    Ou seja, o programa v a condio, verifica ela, e se retornar verdadeiro executar o blocoabaixo do BEGIN. Caso no seja, ele ignorar esta parte do cdigo.Toda vez que voc for comear um bloco de cdigo em uma clusula IF, lembre-se de colocar oBEGIN. importante.

    Ah, e como o IF uma clusula, voc deve marcar o ponto de finalizao do bloco, ento voctem que colocar mais um END;.

    Mas...Como eu fao uma "excesso"?Por exemplo, o programa checa a condio. Da ela retorna falsa. Como fao pra criar uma outracondio relacionada a essa? a que entra o ELSE.Sintaxe:[code]If Condio ThenBegin[Cdigos]End

    ElseBegin[Cdigos]End;[/code]

    Repare em uma coisa. O END do IF no possui ponto e vrgula! Por qu?O ELSE no aceita ponto e vrgula antes dele, ento, use um END sem ponto e vrgula.Repare tambm que o ELSE tambm tem um begin. E que o END dele tem ponto e vrgula!!

  • 7/22/2019 [Tutorial 06]Delphi - If, Then, Begin, Else

    2/13

    Esses so dados importantes que voc no pode esquecer, so muito importantes.O ELSE representa um seno do IF. Caso o IF seja falso, vai l e entra o ELSE.Lembre-se que o ELSE no obrigatrio. Use somente quando necessrio!

    O IF tem tambm operadores de comparao, que so muito importantes tambm.Veja quais so:

    [code]= Igual a> Maior que< Menor que>= Maior ou igual a

  • 7/22/2019 [Tutorial 06]Delphi - If, Then, Begin, Else

    3/13

    CONFIRMAR DIRETRIO

    procedure TForm1.Button1Click(Sender: TObject);beginif DirectoryExists(Edit1.Text) thenLabel1.Caption := Edit1.Text + ' exists'

    else Label1.Caption := Edit1.Text + ' does not exist';end;Topo

    HINT COM QUEBRA DE LINHA

    Para incluir mais de uma linha no Hint voc deve utilizar o evento OnMouseMovede cada componente. Veja abaixo como ficar o cdigo em um Edit por exemplo.

    procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);beginEdit1.hint := 'Primeira Linha'+#13+'Segunda Linha'+#13+ 'Terceira Linha'+#13+'Quarta Linha';end;

    Obs. No esquecer de mudar para TRUE o evento ShowHint.Topo

    TESTE SE H DISCO NO DRIVE "A"

    function TForm1.TemDiscoNoDrive(const drive : char): boolean;varDriveNumero : byte;EMode : word;beginresult := false;DriveNumero := ord(Drive);if DriveNumero >= ord('a') thendec(DriveNumero,$20);EMode := SetErrorMode(SEM_FAILCRITICALERRORS);tryif DiskSize(DriveNumero-$40) -1 thenResult := true else messagebeep(0);

    finallySetErrorMode(EMode);end;end;

    procedure TForm1.Button1Click(Sender: TObject);beginif TemDiscoNoDrive('a') thenShowMessage('Tem disco no drive A:')

  • 7/22/2019 [Tutorial 06]Delphi - If, Then, Begin, Else

    4/13

    else ShowMessage('No tem disco no drive A:');end;Topo

    VERIFICA SE O FORM, J ESTA ATIVO

    procedure TForm1.Button1Click(Sender: TObject);varFound : Integer;beginFound := -1;for i := 0 to Screen.FormCount - 1 doif Screen.Forms[i] is TForm2 then Found := i;if Found >= 0 then Screen.Forms[Found].Showelsebegin

    Form2 := TForm2.Create(Self);Form2.Show;end;

    end;Topo

    PEGANDO O NOME DO USURIO E A EMPRESA DO WINDOWS

    Uses Registry;

    Procedure GetUserCompany; var reg: TRegIniFile;beginreg := TRegIniFile.create('SOFTWARE\MICROSOFT\MS SETUP (ACME)\');Edit1.Text := reg.ReadString('USER INFO','DefName','');Edit2.Text := reg.ReadString('USER INFO','DefCompany','');reg.free;end;Topo

    COMO CRIAR UMA TELA DE ABERTURA (SPLASH SCREEN)

    Aps ter criado o formulrio principal, crie um Formulrio para a Splah Screen. que iremoschamar de FormAbertura (d o nome que voc quiser).

    * Depois de criar os dois forms, clique no menu View, na opo Project Source. Encontrando alinha em que o form de abertura criado e apague-a.

  • 7/22/2019 [Tutorial 06]Delphi - If, Then, Begin, Else

    5/13

    Linha que deve ser apagada:begin

    Application.CreateForm(TFormabertura, FormAbertura); {Esta linha deve ser apagada}end;

    * Agora insira as linhas abaixo antes da criao dos demais form do seu aplicativo:

    beginAberturaForm:=TFormAbertura.Create(Application);AberturaForm.show; {Os outros form devem ser criados a partir daqui}FormAbertura.Hide; {Esconde o FormAbertura}FormAbertura.Free; {Libera Memria}

    Application.Run;End;Topo

    COMO VALIDAR A ENTRADA EM UMA CAIXA DE TEXTO

    procedure Edit1KeyPress(Sender: TObject; var Key: Char);beginIf not(key in['0'..'9',#8]) thenbeginbeep;{somente delphi 2.0 ou 3.0} key:=#0;end;end

    Topo

    CONFIGURANDO A TECLA "ENTER" PARA FUNCIONAR COMO "TAB"

    obs.:(1) a propriedade KEYPREVIEW do form ser igual TRUE;obs.:(2) a propriedade DEFAULT dos botes ser igual FALSE;

    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);beginIf Key = #13 thenBegin

    Key:=#0;If (Sender is TEdit) and (Sender is TComboBox) thenTEdit(Sender).Perform(WM_KeyDown,VK_Tab,0)ElsePerform(Wm_NextDlgCtl,0,0);End;

    Topo.............................................................................................

  • 7/22/2019 [Tutorial 06]Delphi - If, Then, Begin, Else

    6/13

    AnsiLowerCase Converte todos os caracteres de uma string para minsculo;

    Sintaxe:AnsiLowerCase(const S: string): string;

    Exemplo:

    Procedure Tform1.Button1Click(Sender: TObject);VarX:String;BeginX:=Label1.caption;Label1.caption:=AnsiLowerCase(X); { Label1 ficar tudo em letras minsculas }End;

    AnsiUpperCase Converte todos os caracteres de uma string para maisculo;

    Sintaxe:AnsiUpperCase(const S: string): string;

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);VarX:String;BeginX:=Label1.caption;Label1.caption:=AnsiUpperCase(X); { Label1 ficar tudo em letras maisculas }End;

    Break Interrompe totalmente o loop das condies for, while, ou repeat;

    Sintaxe:Break;

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);varS: String;beginWhile true DobeginS := Edit1.text;If S = ' ' Then Break; { Interrompe o loop }

    Label1.Caption := S;end;end;

    CloseFile Fecha um arquivo aberto;

    Sintaxe:CloseFile(var F);

  • 7/22/2019 [Tutorial 06]Delphi - If, Then, Begin, Else

    7/13

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);varF: TextFile;beginif OpenDialog1.Execute thenbegin

    AssignFile(F, OpenDialog1.FileName);Reset(F);Edit1.Text := Str(FileSize(F));CloseFile(F); { Fecha o arquivo }end;end;

    Continue Continua na prxima condio for, while, ou repeat;

    Sintaxe:Continue;

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);varS: String;beginWhile true DobeginS := Edit1.text;If S = ' ' Then Continue; { Voltar para o prximo loop }Label1.Caption := S;end;end;

    Eof Retorna um valor lgico se fim de arquivo;

    Sintaxe:Eof(var F): Boolean;

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);varF1, F2: TextFile;Ch: Char;begin

    if OpenDialog1.Execute then beginAssignFile(F1, OpenDialog1.Filename);Reset(F1);if SaveDialog1.Execute then begin

    AssignFile(F2, OpenDialog1.Filename);Rewrite(F2);While not Eof(F1) Do { Executa enquanto no for fim do arquivo F1 }beginRead(F1, Ch);

  • 7/22/2019 [Tutorial 06]Delphi - If, Then, Begin, Else

    8/13

    Write(F2, Ch);end;CloseFile(F2);end;CloseFile(F1);end;end;

    Exit Sai imediatamente de um bloco corrente;

    Sintaxe:Exit;

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);beginrepeatif KeyPressed then Exit; { Se alguma tecla pressionada sair do bloco repeat }

    Memo1.Lines := ?Xx?;until False;end;

    FileOpen Abre um arquivo especfico;

    Sintaxe:FileOpen(const FileName: string; Mode: Word): Integer;

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);beginMyFileHandle := FileOpen(EXISTS.TXT); { Abre o arquivo EXISTS.TXT }end;

    GotoXY Move o cursor para as coordenadas dadas dentro da tela;

    Sintaxe:GotoXY(X, Y: Byte);

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);

    beginGotoXY(10,25); { Posiciona o ponteiro do mouse no pixel 10 , 25 }end;

    Int Retorna a parte inteira de um argumento;

    Sintaxe:Int(X: Real): Real;

  • 7/22/2019 [Tutorial 06]Delphi - If, Then, Begin, Else

    9/13

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);varR: Real;begin

    R := Int(123. 456); { Mostra ?123.0? }R := Int(-123.456); { Mostra ?-123.0? }end;

    KeyPressed Determina se uma tecla foi pressionada no teclado;

    Sintaxe:KeyPressed: Boolean;

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);var

    A,B:integer;beginB:=1;repeat

    A:=A+B;Label1.Caption := str(A);until KeyPressed; { Repetir at alguma tecla ser pressionada }end;

    Now Retorna a data e hora corrente;

    Sintaxe: { Formato da data e hora }Now: TDateTime;

    Exemplo:Procedure TForm1.Button1Click(Sender: TObject);beginLabel1.Caption := 'A data e hora ' + DateTimeToStr(Now); { Mostra a hora e data }end;

    Sqr Retorna um nmero ao quadrado;

    Sintaxe:Sqr(X: Real): (Real);

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);varS, Temp: String;

  • 7/22/2019 [Tutorial 06]Delphi - If, Then, Begin, Else

    10/13

    beginStr(Sqr(5.0):2:1, Temp); { Retorna 25.0 }S := '5 ao quadrado ' + Temp;MessageDlg(S, mtInformation, [mbOk], 0);end;

    Str Converte um valor numrico para uma string;

    Sintaxe:Str(X [: Width [: Decimals ]]; var S);

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);varX, Temp: String;

    A: Integer;begin

    A:=A+1

    Str(A:2:1, Temp); { Transforma A em string de tamanho dois e uma casa decimal }X := 'O nmero ' + Temp;MessageDlg(X, mtInformao, [mbOk], 0);end;

    Val Converte um valor string para sua representao numrica;

    Sintaxe:Val(S; var V; var Code: Integer);

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);varI, Code: Integer;beginVal(Edit1.Text, I, Code); { Converte o contedo de Edit1 para um valor }end;

    If ... Then ... Else If, then, e else especifica a condicional sobre a qual uma declarao serexecutado.

    Sintaxe:If then else ;

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);varidade:integer;beginidade := Edit1.text;

  • 7/22/2019 [Tutorial 06]Delphi - If, Then, Begin, Else

    11/13

    If (idade < 1) or (idade > 120) thenLabel2.caption := ?Voc no est dizendo a verdade.? {Executa se idade120}ElseLabel2.caption := ?Ok!?; { Executa se idade no for < 1 ou > 120 }end;

    Case ... of O procedimento Case usado para ramificar um cdigo dependendo do resultadoou valor encontrado neste cdigo.

    Sintaxe:Case ofelse

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);var

    tecla:char;begintecla := Edit1.text;Case tecla of?A?..?Z?, ?a?..?z?:Label2.caption:=?Voc digitou uma letra?;{Executa se digitado uma letra}?0?..?9?:Label2.caption:=?Voc digitou um nmero? { Executa se digitado um nmero }elseLabel2.caption:=?Voc digitou um caracter especial?; { Executa se digitado outra tecla }end;

    Repeat ... until Os procedimentos entre Repeat e until executado na seqncia enquantouma condio seja satisfeita.

    Sintaxe:Repeatuntil ;

    Exemplo:Procedure Tform1.Button1.Click(Sender: TObject);vara, b : integer;beginb := 1;Repeat

    a := a + b;Label3.caption := str (a) + str(b);until a = 1000; { Se a de 1000 , seno }end;

    While .. Do A declarao While controla a execuo repetida de uma declarao simples oucomposta.

  • 7/22/2019 [Tutorial 06]Delphi - If, Then, Begin, Else

    12/13

    Sintaxe:While do

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);var

    a, b : integer;beginb := 1;While a < 1001 Do { Enquanto a for < que 1001 executa o bloco, seno }begina := a + b;Label3.caption := str (a) + str(b);end;end;

    For .. Do O loop For .. Do uma declarao que ser executada at que a varivel de controleseja satisfeita.

    Sintaxe:For := To ou Downto Do Exemplo:Procedure Tform1.Button1Click(Sender: TObject);varcont, x : integer;beginFor cont := 1 To 100 Do { Repete o bloco 100 vezes }beginx := x + cont;Label4.caption := str(x);end;

    end;

    Goto / Label: A instruo Goto permite que voc salte de onde est no momento para um linharotulada especfica. Um rtulo definido usando-se a palavra label.

    Sintaxe:Goto ;Label ;

    Exemplo:Procedure Tform1.Button1Click(Sender: TObject);var

    resp : char;a, b : integerbeginb := 1;Label inicio: { A linha rotulada como inicio }a := a +b;Label2.caption := str(a);Label3.caption := ?Deseja somar mais um?;Edit1.visible := True;

  • 7/22/2019 [Tutorial 06]Delphi - If, Then, Begin, Else

    13/13

    resp := Edit1.text;If (resp = ?S? or ?s? or ?Y? or ?y?) then Goto inicio; { Volta para o rtulo }end;

    RunError Este comando emite um nmero de erro que voc introduz como motivo de falha de

    programa.

    Sintaxe:RunError [ ( Errorcode: Byte ) ];

    Exemplo:Procedure Tform1.Form1Load(Sender: TObject);varI : Char;Cont : Integer;beginrepeatI := Edit1.text;

    If I := ?Q? then RunError (230); { Emite ao usurio o erro 230 }until FALSE;end;

    ShowWindow A funo ShowWindow modifica o estado de visibilidade da janela.

    Sintaxe:ShowWindow(Wnd: HWnd; CmdShow: Integer): Bool;

    Parmetro DescrioWnd Identifica a janela.CmdShow Especifica como a janela ser mostrada. Este parmetro pode ser um dos seguintesvalores:

    Valor SignificadoSW_HIDE Esconde a janela atual e ativa uma outra janela.SW_MINIMIZE Minimiza a janela especfica.SW_RESTORE Ativa e mostra uma janela. Se a janela est minimizada ou maximizada, oWindows restaura ela para o tamanho e posio original.SW_SHOW Ativa uma janela e mostra ela na posio e tamanho corrente.SW_SHOWMAXIMIZED Ativa uma janela e mostra ela como uma janela maximizada.SW_SHOWMINIMIZED Ativa uma janela e mostra ela como um cone.SW_SHOWMINNOACTIVE Mostra uma janela como um cone. A janela que est atualmenteativada permanece ativa.SW_SHOWNORMAL Ativa e mostra uma janela. Se a janela estiver minimizada ou maximizadao Windows restaura ela para a posio e tamanho original.

    Exemplo:Procedure Tform1.Form1Load(Sender: TObject);ShowWindows (Tform2 : Hwnd ; SW_SHOW : integer)

    Esta ai velho alguns comandos basicos do delphi pesquise na internet vc parece que no sabeusar o {google ou yahoo cade} espero que vc agora aprende a no sugar informaes dosoutros, faa o seu trabalho de casa primeiro antes de perguntar.