20 Truques e Dicas de Delphi – Parte 1

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest
Share on tumblr
Share on telegram
Share on whatsapp
Share on skype
Share on email

Nesta publicação apresentaremos 20 Truques e Dicas de Delphi que certamente irão ajudar você aprender e se desenvolver nesta linguagem de programação.

Dicas, macetes e truques de Delphi
20 Truques e Dicas de Delphi – Parte 1

Como saber o path da aplicação em Delphi

Para saber o path da aplicação no Delphi utilize a seguinte linha:

ExtractFilePath( Application.ExeName )

Localizando valores por proximidade em uma tabela em Delphi

Muitas vezes, necessitamos encontrar registros em uma tabela que sejam próximos ou idênticos a um determinado valor, para isso, podemos utilizar uma das rotinas a seguir.

A primeira solução requer uma chave primária na tabela e a segunda permite a localização sem o uso de chaves primárias (Versão superior 2):

NomeDaTabela.FindNearest([Valor]);

Troque Valor pela variável que contém o código (só procura na chave primária).

ou então:

NomeDaTabela.Locate (‘Campos’, ‘Valores’,[Opções]);

onde Campos são os campos a procurar (separados por ponto-e-vírgula), Valores são os valores
respectivos a cada campo (também separados por ponto-e-vírgula) e Opções são as opções de busca: loPartialKey permite encontrar registros que comecem com o texto digitado, e loCaseInsensitive ignora a diferença entre maiúsculas e minúsculas (ex: Renato Sanches e RENATO SANCHES).

Verificando ano bissexto pelo Delphi : Dicas de Delphi

Para verificar se um ano bissexto no Delphi, utilize e a função abaixo:

function AnoBis(Data: TDateTime): Boolean;

{Verifica se um ano é bisexto, retornando True em caso positivo}

var
 Dia,Mes,Ano : Word;
 begin
 DecodeDate(Data,Ano,Mes,Dia);
 if Ano mod 4 <> 0 then
 AnoBis := False
 else
 if Ano mod 100 <> 0 then
 AnoBis := True
 else
 if Ano mod 400 <> 0 then
 AnoBis := False
 else
 AnoBis := True;
 end;



Função que retorna a idade de uma pessoa em Delphi

A Função escrita em Delphi a seguir retorna a idade de uma pessoa:

function idade(Nascimento,DataAtual:string):Integer;
 var
 idade,dian,mesn,anon,diaa,mesa,anoa:word;
 begin
 decodedate(StrToDate(DataAtual),anoa,mesa,diaa);
 decodedate(StrToDate(Nascimento),anon,mesn,dian);
 idade := anoa – anon;
 if mesn > mesa then
 begin
 idade := idade;
 end;
 if(mesn > mesa) and (dian > diaa)then
 begin
 idade := idade;
 end;
 result := idade;
 end;

Função Delphi que insere a barra invertida de diretório após o nome especificado

Nesta dica de Delphi, apresentamos a função a seguir que insere a barra invertida de diretório após o nome especificado

function BarraInvert(value:string):string;
 begin
 if (value[length(value)]<>’\’) then
 begin
 result := value + ‘\’;
 end
 else
 begin
 result := value;
 end;
 end;

Retorna os programas que estão abertos na memória : Dicas de Delphi

A função Delphi a seguir retorna os programas que estão abertos na memória.

Function EnumWindowsProc (Wnd: HWND; lb: TListbox): BOOL; stdcall;
// listbox1.clear;
// EnumWindows( @EnumWindowsProc, integer(listbox1));
var
caption: Array [0..128] of Char;
begin
Result := True;
if IsWindowVisible(Wnd) and ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or
(HWND(GetWindowLong(Wnd, GWL_HWNDPARENT)) = GetDesktopWindow)) and
((GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW) = 0) then
begin
SendMessage( Wnd, WM_GETTEXT, Sizeof( caption ),integer(@caption));
lb.Items.AddObject( caption, TObject( Wnd ));
end;
end;

Como fazer um TMemo receber um arquivo texto ? : Dicas de Delphi

Para fazer com que um componente TMemo receba o conteúdo de um arquivo texto, utilize o seguinte comando:

Memo1.lines.loadfromfile(‘Arquivo.txt’);



Função em Delphi que retorna o IP

Esta Função Delphi retorna o seu número de IP, desde que você esteja conectado com a internet.

Inclua na seção uses: WinSock

function GetLocalIP : string;

type

TaPInAddr = array [0..10] of PInAddr;

PaPInAddr = ^TaPInAddr;

var

phe : PHostEnt;

pptr : PaPInAddr;

Buffer : array [0..63] of char;

I : Integer;

GInitData : TWSADATA;

begin

WSAStartup($101, GInitData);

Result := ”;

GetHostName(Buffer, SizeOf(Buffer));

phe :=GetHostByName(buffer);

if phe = nil then Exit;

pptr := PaPInAddr(Phe^.h_addr_list);

I := 0;

while pptr^[I] <> nil do begin

result:=StrPas(inet_ntoa(pptr^[I]^));

result := StrPas(inet_ntoa(pptr^[I]^));

Inc(I);

end;

WSACleanup;

end;

Zeros à esquerda : Dicas de Delphi

Esta função em Delphi insere Zeros à esquerda

Function InsertZeros(nInt,nTam:Integer):String;
Var
X: String;
nI: Integer;
Begin
For nI := 1 To nTam Do X := X + ‘0’;
Begin
X := X + IntToStr(nInt);
End;
Result := Copy(X,Length(X) – nTam + 1,nTam)
End;

Troca a virgula pelo ponto em um valor Float : Dicas de Delphi

Esta função Delphi troca a virgula pelo ponto em um valor Float

function TrocaVirgPPto(Valor: string): String;
var i:integer;
begin
if Valor <> ‘ ‘ then
begin
for i := 0 to Length(Valor) do
begin
if Valor[i]=’.’ then
begin
Valor[i]:=’,’;
end
else if Valor[i] = ‘,’ then
begin
Valor[i]:=’.’;
end;
end;
end;
Result := valor;
end;

Executa uma url com o Browser padrão : Dicas de Delphi

Esta procedure Delphi executa uma url com o Browser padrão.

procedure ExploreWeb(page:PChar);
// Requer a ShellApi declarada na clausua uses da unit
var
Returnvalue : integer;
begin
ReturnValue := ShellExecute(0, ‘open’, page, nil, nil,SW_SHOWNORMAL);
if ReturnValue <= 32 then
begin
case Returnvalue of
0 : MessageBox(0,’Error: Out of memory’,’Error’,0);
ERROR_FILE_NOT_FOUND: MessageBox(0,’Error: File not found’,’Error’,0);
ERROR_PATH_NOT_FOUND: MessageBox(0,’Error: Directory not found’,’Error’,0);
ERROR_BAD_FORMAT : MessageBox(0,’Error: Wrong format in EXE’,’Error’,0);
else
MessageBox(0,PChar(‘Error Nr: ‘+IntToStr(Returnvalue)+’ inShellExecute’),’Error’,0)
end;
end;
end;



Verificar a impressora, antes de uma impressão

Como montar uma rotina em Delphi para verificar a impressora, antes de uma impressão

Esta função serve para verificar se a impressora está pronta, antes de iniciar uma impressão.
A função retorna true se a impressora está pronta para imprimir.

Function PrinterOnLine : Boolean;
Const
PrnStInt : Byte = $17;
StRq : Byte = $02;
PrnNum : Word = 0; { 0 para LPT1, 1 para LPT2, etc. }
Var
nResult : byte;
Begin (* PrinterOnLine*)
Asm
mov ah,StRq;
mov dx,PrnNum;
Int $17;
mov nResult,ah;
end;
PrinterOnLine := (nResult and $80) = $80;
End;

Exemplo de utilização:

If not PrinterOnLine then ShowMessage(‘Atenção! Verifique a Impressora…’);

Obtendo o nome do computador do windows

A função Delphi a seguir obtém o nome do computador através do Registry do Windows.
(Não esqueça de adicionar a unit Registry a cláusula uses de seu projeto)

Uses Registry;

function getcomputer : string;
var registro : tregistry;
begin
registro:=tregistry.create;
registro.RootKey:=HKEY_LOCAL_MACHINE;
registro.openkey(‘System\CurrentControlSet\Services\VXD\VNETSUP’,false);
result:=registro.readstring(‘ComputerName’);
end;

Adicionando à hora atual, um número determinado de horas

A Função Delphi abaixo adiciona à hora atual, um número determinado de horas:

function AdicionaHora(TimeAdd: Integer) : String;
Var
 Horas,Min,SomaHoras,SomaMin : Integer;
 S, S1 : String;
begin
 Horas := Strtoint(Copy(TimetoStr(Time),1,2))+ TimeAdd;
 Min := Strtoint(Copy(TimetoStr(Time),4,2))+ TimeAdd ;
 SomaHoras := SomaHoras+Horas;
 SomaMin := SomaMin + Min;
If SomaMin > 59 Then
 begin
 if SomaMin mod 60 = 0 Then
 begin
 Somahoras := Somahoras+(Somamin div 60);
 Somamin := 0;
 end
 else
 begin
 SomaHoras := SomaHoras + (SomaMin div 60);
 SomaMin := SomaMin mod 60;
 end;
 end;
If Somamin = 0 Then
 begin
 S := ’00’;
 end
 else
 begin
 S := InttoStr(Somamin);
 end;
If Length(InttoStr(SomaHoras)) = 1 Then
 begin
 S1 := Concat(‘0′,InttoStr(Somahoras));
 end
 else
 begin
 S1 := InttoStr(Somahoras);
 end;
Result := Concat(S1,’:’,S,’:00′);
end;

Converte um número decimal em algarismos romanos

Função Delphi a seguir converte um número decimal em algarismos romanos:

function DecToRoman( Decimal: LongInt ): String;
const
Romans: Array[1..13] of String = ( ‘I’, ‘IV’, ‘V’, ‘IX’, ‘X’, ‘XL’, ‘L’,
‘XC’, ‘C’, ‘CD’, ‘D’, ‘CM’, ‘M’ );
Arabics: Array[1..13] of Integer =( 1, 4, 5, 9, 10, 40, 50, 90, 100,
400, 500, 900, 1000);
var
i: Integer;
scratch: String;
begin
scratch := ”;
for i := 13 downto 1 do
while ( Decimal >= Arabics[i] ) do
begin
Decimal := Decimal – Arabics[i];
scratch := scratch + Romans[i];
end;
Result := scratch;
end;

Trunca um número definido de casas decimais em um valor float

A função Delphi a seguir trunca um número definido de casas decimais em um valor float

function TruncVal(Value: Double; Casas: Integer): Double;
var
sPot: String;
iPot: Integer;
x: Integer;
begin
sPot := ‘1’;
for x := 1 to Casas do sPot := sPot + ‘0’;
begin
iPot := StrToInt(sPot);
end;
Result := StrToInt(IntToStr(Trunc(Value * iPot))) / iPot;
end;



Rotina de resgate das variáveis de ambiente DOS

A função Delphi a seguir resgata variáveis de ambiente DOS

Function GetDOSEnvVar(const VarName:String):String;
Var
Len:Integer;
pDosEnv:PChar;
Begin
result :=”;
Len := Length(VarName);
PDosEnv := GetEnvironmentStrings;
If (StrLIComp(PDosEnv, @VarName[1], Len) = 0) And (PDosEnv[Len] =’ ‘) Then
Begin
Result := StrPas(PDosEnv + Len + 1);
Break;
End;
Inc(PDosEnv, StrLen(PDosEnv) + 1);
End;

Uma rotina para verificar erros em toda a aplicação

Para tratar erros de forma genérica em aplicações escritas em Deplhi, em todo o seu programa, insira no método ON CREATE do formulário principal a linha:

Application.OnException:=RotinaGeral;

RotinaGeral é uma procedure na qual deverá constar o código para verificar e enviar as mensagens de erro do seu sistema.

Como desligar, reiniciar, resetar ou dar logout no sistema ?

Para desligar, reiniciar, reiniciar ou dar logout no sistema, use a função ExitWindowsEx, como abaixo:

ExitWindowsEx (uFlags, 0);

onde uFlags é o tipo de reinicialização que vai ocorrer.

Valores de uFlags:

EWX_FORCE – Força todos os processos a terminar.
Ao invés de aparecer a mensagem “A aplicação não está respondendo”, ele força o programa que não responde a finalizar.

EWX_LOGOFF – Faz “logout” do sistema, ou seja, volta à tela de login (a que pede nome e senha)

EWX_POWEROFF – Desliga o computador
(caso o computador não tenha o recurso de auto-desligamento, ele fecha todos os programas e informa que o sistema pode ser desligado).

EWX_REBOOT – Reinicializa o computador (o equivalente a pressionar Ctrl+Alt+Del)

EWX_SHUTDOWN – Fecha todos os programas e informa ao usuário que é seguro desligar o computador.

A função retorna True se funcionar, ou False em outro caso Usuários NT: verifique se o usuário tem o direito a desligar o computador em sua lista de privilégios.

Convertendo a 1ª letra de um edit para maiúsculas

Este truque de Delphi é útil para ser utilizado no cadastramento de nomes.

Se o operador do sistema esquecer de colocar a primeira letra de um nome em minúscula, automaticamente a letra ficará maiúscula.

Para que isto ocorra, coloque um objeto edit no formulário e no seu evento OnChange insira o seguinte código:

var
Variavel : Integer;
begin
With Edit1 do
if Text <> ” then
begin
OnChange := NIL;
Variavel := SelStart;
Text := UpperCase(Copy(Text,1,1))+LowerCase(Copy(Text,2,Length(Text)));
SelStart := Variavel;
OnChange := Edit1Change;
end;
end;

📒 Livros sobre o Delphi

Veja mais livros sobre desenvolvimento de aplicações em Delphi, acessando aqui!

Materiais e leituras que recomendamos para você:



Obrigado

Espero que estas dicas de Delphi tenham sido úteis e tenha lhe ajudado a aumentar seus conhecimentos na linguagem de programação Delphi / Pascal.

Se você gostou, compartilhe estas dicas com um amigo ou participe de nossas redes sociais.

Conhece outras dicas de Delphi ?

Envie para nós em nossa página do Facebook.

Caso queira nos incentivar a criar mais conteúdos como este, prestigie nossos anunciantes.

Um Grande Abraço e até a próxima dica!

Gostou do Post ? Compartilhe com seus amigos nas redes sociais.

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest
Share on tumblr
Share on telegram
Share on whatsapp
Share on skype
Share on email

☑️ Comunidades Colaborativas de Aprendizagem 💬

❓ Esclareça suas dúvidas e ajude outras pessoas a aprender sobre o assunto proposto em nossa comunidade colaborativa no Facebook.

Compartilhe ideias e atividades com outros membros enquanto aprendemos juntos em um ambiente virtual criado e mantido pelo webmundi.com.
Aproveite essa oportunidade gratuita para aprimorar seus conhecimentos e participar de discussões sobre o assunto que você está interessado.

☑️ Grupos WebMundi.com Facebook

✔️ Banco de dados : Dicas
▶️ https://bit.ly/dbbrasil

✔️ Windows Dicas
▶️ https://bit.ly/windowsdicas

✔️ Linux : Dicas, Truques e Tutoriais
▶️ https://bit.ly/linuxdicas

 

✔️ Dev Brasil : Desenvolvimento de Software : Programação (Java, Python, Javascript, Flutter, PHP, Html,CSS e muito mais)
▶️ https://bit.ly/devbrasil

✔️ Virtualização de Computadores : Tecnologia
▶️ https://bit.ly/virtualizabr

APOIE O WEBMUNDI.COM

Apoie o Projeto WebMundi.com doando 1 Real !

Se você é fã do conteúdo gratuito e de qualidade que o WebMundi.com oferece no Site, Youtube e grupos, agora é a hora de demonstrar seu apoio e ajudar a mantê-lo disponível.
Qualquer doação, por menor que seja, será muito valiosa para nós e fará toda a diferença.

Basta utilizar o PIX ou o botão VALEU do Youtube para fazer sua contribuição.
Não perca essa oportunidade de ajudar a manter o WebMundi.com ativo e fornecer ainda mais conteúdo de qualidade para você e para outros.

Faça sua doação agora e seja parte da nossa comunidade de apoio!

Ajude a manter nossa criação de conteúdo e operação em funcionamento

Estrutura WebMundi | Sites e Canal Youtube

Ter presença na Internet implica em custos como:

  • Domínios (www.webmundi.com / www.webmundi.org)
  • Hospedagem (local onde fica a estrutura do site / páginas / banco de dados)
  • Softwares (programas utilizados para montar e manter o site em operação e edição de vídeo)
  • Layout e Desenvolvimento (profissionais que constroem, mantêm e divulgam o site e o canal)
  • Produção de Conteúdo (Profissionais como Redatores, Produtores, Editores de vídeo, etc…)
  • Certificados de Segurança (cadeado / segurança da página, possibilita a segurança na navegação e seus dados)
  • Manutenção do Site (atualizações do site, criação de novas páginas)

Loja Virtual | WebMundi.com

Outra forma de apoiar a criação de conteúdo no YouTube e em nossos sites é nossa loja virtual

Parceria do WebMundi.com com as maiores plataformas de comércio eletrônico do Brasil.

Nossa loja é integrada com nossos parceiros associados e possui uma ampla variedade de produtos de marcas renomadas.
O Cliente ao escolher um produto é direcionado a loja parceira onde pode fazer sua compra com tranquilidade em um ambiente seguro e 100% confiável.

Confira:

Loja Virtual WebMundi.com

Alguns de nossos parceiros associados:

AliExpress Parceiro Magalu Amazon Associados

Obrigado pela confiança e preferência.

TALVEZ VOCÊ GOSTE TAMBÉM

Mais Assistidos
Como BAIXAR a ISO do WINDOWS 10 OFICIAL e Criar um Pendrive Bootável
Play Video about Como BAIXAR a ISO do WINDOWS 10 OFICIAL e Criar um Pendrive Bootável
Como instalar o Oracle Virtualbox e Criar Máquinas Virtuais (VMs)
Play Video about Como instalar o Oracle Virtualbox e Criar Máquinas Virtuais (VMs)
atualizar windows 7 para windows 10 2020
Play Video about atualizar windows 7 para windows 10 2020
Instalar o Servidor XAMPP no Linux - Localhost Apache MySQL PHP
Play Video about Instalar o Servidor XAMPP no Linux - Localhost Apache MySQL PHP
Como BAIXAR a ISO do WINDOWS 11 OFICIAL e Criar um Pendrive Bootável
Play Video about Como BAIXAR a ISO do WINDOWS 11 OFICIAL e Criar um Pendrive Bootável
Como Transferir o Windows do HD para um SSD : Migrar Windows 10 para SSD sem formatar
Play Video about Como Transferir o Windows do HD para um SSD : Migrar Windows 10 para SSD sem formatar
Como Instalar MySQL + MySQL Workbench : Windows 10
Play Video about Como Instalar MySQL + MySQL Workbench : Windows 10
Instalação Eclipse IDE - Windows
Play Video about Instalação Eclipse IDE - Windows

Discord : WebMundi.com

Uma comunidade apaixonada por tecnologia, onde entusiastas, estudantes e profissionais de TI se reúnem.

Faça Parte do nossa Comunidade!

Junte-se a nós para aprender, colaborar e expandir seus horizontes na área de informática! 🚀
Entrar
Recentes