Delphi é uma lingugem de programação desktop, mobile e web desenvolvida pela Embarcadero. Para usar o Delphi com eficiência, baixe o RAD Studio Community no Windows ou o Lazarus IDE no Linux. Para o desenvolvimento com Delphi/Pascal segue-se a regra: O que o Delphi faz é problema dele, o que você faz é problema seu. Portanto, não exclua ou modifique quaisquer linhas que não tenha produzido você mesmo. No repositório abaixo estão todos os meus projetos acadêmicos e anotações sobre Delphi, confira. Vale lembrar que o repositório está em construção, com apenas algumas coisas por hora. A pasta win32 é gerada automaticamente, compondo-se do projeto executável e arquivo debug, portanto pode ser removida ao compartilhar os códigos. O arquivo .pas possui o código programável back-end do formulário de janela, o .dfm possui o código gerado do formulário de janela desenhado. Para os códigos a seguir, usaremos o formato RAD Studio como base de desenvolvimento e estrutura de arquivos. Mais detalhes de código e projeto na prática, acesse meu repositório de exemplos de projetos Delphi abaixo (Github).
========== ATALHOS ==========
F12: Tela / Editor de código
SHIFT+F12: Abre janela forms
CNTRL+F21: "units"
F11: "object inspector"
Cntrl+d: identação
Cntrl+Shift+v: Na variavel, fará a declaração da mesma
========== EXECUTAR ==========
1-Salva tudo ctrl + shift + s
2-Compila ctrl + f9
3-Roda F9
Criar novo projeto: new > Windows VCL Application
Abrir Projetos Antigos: File > Reopen //Tem que abrir o projeto > .dproj
========== Propriedades ==========
Usuário não pode alterar: caption
Usuário pode alterar: text
========== Conversões ==========
v := Real; //Var Real
n1 := StrToFloat(EdN1.Text); //String para Float
lbRes.Caption := FloatToStr(r); //Float para String
========== PROJETO ==========
Criar pasta do Projeto, ddmmyy
Salva Unit: Fontes - uNome
No Delphi Save Project As > Salva Pasta do projeto(salva fora de APP,DCU e Fontes) - prjNome
DCU Project/options: Output Directory(APP) UnitOutput(DCU) - Delphi Compiler
Executável gerado: PastaProjeto > win64 > debug > application. Esse será enviado ao cliente
Abrir: Sempre abrir o projeto pronto no prjNomeProjeto.dproj
=== Enviar Zip do Projeto ===
Enviar somente:
- Delphi Form
- Delphi Source File
- Delphi Project File (2 arquivos)
- Arquivo RES (se possui img)
========== COMPONENTES DO PROJETO ==========
name: btnClicar
caption/text(user pd alterar)/texthint: descrição no elemento
event: onclick…
ÁREA DE VARIÁVEIS GLOBAIS: Colocar abaixo do var
VAR LOCAIS: var i : integer; //depois do procedure, antes do begin //dentro do begin, atribuir i := 3;
========== VALOR DE FORMULÁRIO ==========
(Sempre é String, precisa converter e desconverter)
n1 := StrToInt(EdN1.Text);
res := n1+n2;
lblRes.Caption := IntToStr(res); //ou lblRes.Caption := IntToStr(StrToInt(EdN1.Text)+(StrToInt(edN2.Text)));
COMENTÁRIO: // Linha e { } ou {* *} Bloco
========== EXEMPLO DE CÓDIGO EM EVENTO ==========
procedure TForm1.btnDividirClick(Sender: TObject);
var n1,n2,res : Real;
begin
n1 := StrToFloat(edN1.Text);
n2 := StrToFloat(edN1.Text);
res := n1/n2;
lblMult.Caption := IntToStr(res);
listBox.Clear; //limpa listBox
End;
========== ARITMÉTICOS ==========
Adição +
Subtração -
Multiplicação *
Divisão /
Divisão de Integer Div (2 div 1)
Resto da Divisão de Integer Mod (2 mod 1)
========== RELACIONAIS ==========
Atribuição :=
Igualdade =
Diferente < >
Menor <
Maior >
Menor ou Igual <=
Maior ou Igual >=
========== LÓGICOS ==========
Negação Not
Acréscimo And
Escolha Or
========== IF ==========
If (x < 0) Then
begin
y:= 1;
k:= k + 1;
end
Else
begin
y:= 2 * x;
k:= x;
end;
========== CASE ==========
Case (x) Of
begin
0: lblPop.Caption := 'x é zero';
1: lblPop.Caption := 'x é um';
2: lblPop.Caption := 'x é dois';
end;
========== FOR ==========
//Regressivo: for cont := num downto 1 do
for c := 1 to StrToInt(edtVal.Text) do
begin
lblRes.Caption := lblRes.Caption + ' ' + (IntToStr(n+1));
inc(n)
end;
========== WHILE DO ==========
//1º verifica depois faz
while (v<10) do
begin
lblRes.Caption := lblRes.Caption + ' ' + IntToStr(v+1);
inc(v);
end;
========== REPEAT UNTIL ==========
//1º faz depois verifica
repeat
begin
lblRes.Caption := lblRes.Caption + ' ' + IntToStr(v+1);
inc(v);
end;
until (v>9);
implementation
{$R *.dfm}
//Funções globais aqui
function parImpar(num: Integer): string;
//Vars da função aqui
begin
if (num mod 2 = 0) then
begin
Result := 'Par';
end
else
begin
Result := 'Impar';
end;
end;
procedure TForm1.btnCalcClick(Sender: TObject); //Procedures não possuem retorno(Result)
//Funções locais aqui
var v: Integer;
begin
v := StrToInt(edtVal.Text);
lblRes.Caption := parImpar(v);
end;
(Array gráfico inverte ordem coluna/linha que codificável)
StringGrid[coluna,linha]
ArrayCodificavel[liha,coluna]
(Declarações em var - globais)
matriz : array[1..3, 1..3] of integer; //matriz[linhas,colunas]
mat3d : array[1..12, 1..10, 1..3] of integer; //matriz tridimencional(cubo)
vet : array of Integer; //array de tamanho dinâmico
tam : integer = 0;
(Procedures OnClick)
//Arrays fixos, percorrendo a atribuindo
var col, num, lin : integer;
for lin := 0 to sgMat.RowCount-1 do
begin
sgMat.Cells[0,lin+1] := IntToStr(lin+1); //sg: Objeto StringGrid
end;
for col := 0 to sgMat.ColCount-1 do
begin
sgMat.Cells[col+1,0] := IntToStr(col+1);
end;
num := 0;
for lin := 1 to sgMat.RowCount-1 do
begin
for col := 1 to sgMat.ColCount-1 do
begin
sgMat.Cells[col,lin] := IntToStr(num);
matriz[lin,col] := StrToInt(sgMat.Cells[col,lin]);
inc(num,2);
end;
end;
Randomize;
for col := 0 to sgVet.ColCount-1 do
begin
sgVet.Cells[col,1] := IntToStr(Random(2));
vetor[col] := StrToInt(sgVet.Cells[col,1]);
end;
//Array dinâmico
begin
SetLength(vet, tam+1);
tam := tam + 1;
vet[tam-1] := Random(100);
ListBox1.Items.Add('vet['+(tam-1).ToString+']='+(vet[tam-1]).ToString)
end;
Pontos = Record
X,Y: Integer;
Cor: string;
OnOff: Boolean;
End;
TRegistro = Class
Nome: String;
Telefone: String;
Cidade: String;
End;
var
Form1: TForm1;
PontosTela: Array [1..1024] of Pontos;
//Arq: File of Pontos;
TXT: TextFile;
//Adicionar conteúdo aos elementos
PontosTela[1].X := 300;
PontosTela[1].Y := 679;
PontosTela[1].Cor := 'Vermelho';
PontosTela[1].OnOff := True;
PontosTela[2] := PontosTela[1];
ShowMessage(PontosTela[2].X.ToString);
Procedure AddRecord(Lista:TStringList; strNome, strTelefone, strCidade:String);
Var RecNum: Integer;
Begin
Lista.AddObject(strNome, TRegistro.Create);
RecNum := Lista.Count-1;
With TRegistro(Lista.Objects[RecNum]) do Begin
Nome := strNome;
Telefone := strTelefone;
Cidade := strCidade;
End;
End;
//Importar dados de arquivo
const nmarq = '..\..\uRegistros.pas';
begin
if FileExists(nmarq) then
begin
Memo1.Lines.LoadFromFile(nmArq);
ListBox1.Items.LoadFromFile(nmArq);
end
else
begin
MessageDlg('Arq. não encontrado!', mtError, [mbOk], 0);
end;
end;
var
Lista: TStringList;
x: Integer;
begin
Lista := TStringList.Create;
AddRecord(Lista,'Joao' ,'1','Belo Horizonte');
AddRecord(Lista,'Ana' ,'2','São Paulo');
AddRecord(Lista,'Iris' ,'3','Rio de Janeiro');
AddRecord(Lista,'Zilda' ,'4','Curitiba');
AddRecord(Lista,'Bety' ,'5','Salvador');
AddRecord(Lista,'Silva' ,'6','Osasco');
AddRecord(Lista,'Marcia','7','Niteroi');
Lista.Sorted := True;
//Adiciona
For x := 0 to Lista.Count-1 do
Begin
Memo1.Lines.Add ( TRegistro(Lista.Objects[x]).Nome + ' ' +TRegistro(Lista.Objects[x]).Telefone+ ' ' +TRegistro(Lista.Objects[x]).Cidade );
End;
//Finaliza Record Lista
For x := 0 to Lista.Count-1 do
Begin
Lista.Objects[x].Destroy;
End;
Lista.Free;
End;
1- Instalar Firebird 2.5 32bits, e selecionar opção "mover fpclient.dll para pasta System"
2- Instalar FlameRobin 32bits, configurar BD com User(SYSDBA) Senha(masterkey), Charset(Win1252) e demais parâmetros pessoais
Elaborado por Mateus Schwede
ubsocial.github.io