edit1.text:= dbcombobox1.Text;
QueryPrinc.active := false;
QueryPrinc.sql.clear;
QueryPrinc.sql.add('select * from estrucpr where portugues = "' + edit1.Text + '"');
QueryPrinc.active:= true;
if DBcodEl.text=DBcodEl.text then
edit2.Text:= DBcodEl.Text;
QuerySin.active := false;
QuerySin.sql.clear;
QuerySin.sql.add(' select * from sinonimo where sin_est_id = "' + edit2.text + ' "');
QuerySin.active:= true;
if DBcodEl.text=DBcodEl.text then
edit3.Text:= DBcodEl.Text;
QueryPropFis.active := false;
QueryPropFis.sql.clear;
QueryPropFis.sql.add('select * from FIQU_PRO where fiqu_id = "' + edit3.Text + '"');
QueryPropFis.active:= true;
segunda-feira, 30 de janeiro de 2012
Selecionando registros de uma tabela que não existam em outra tabela
(SELECT * FROM , WHERE . = . AND . = 'AP' )
MINUS
(SELECT * FROM@remoto1, @remoto1 WHERE @remoto1. = @remoto1. AND @remoto1. = 'AP' )
MINUS
(SELECT * FROM
Obs: todos os campos retornados no SELECT secundário deverá conter os mesmos campos do SELECT primário
Sql por campo edit pesquisando pelo nome
Inclua um componente Tedit e Tquery conectado a tabela do banco de dados, e no eveento OnChange do compoente TEdit digite:
query1.active := false;
query1.sql.clear;
query1.sql.add('select * from teste where nome = "' + edit1.Text + '"');
query1.active:= true;
query1.sql.clear;
query1.sql.add('select * from teste where nome = "' + edit1.Text + '"');
query1.active:= true;
terça-feira, 10 de janeiro de 2012
Função para gerar senhas aleatórias
Essa é uma dica simples e que para os que trabalham com redes sem fio pode ser muito útil. O que a função faz é gerar um string com caracteres hexadecimais, mas que podem ser adaptados para qualquer outro tipo. Esta função recebe como parâmetros o comprimento da senha como um integer, e outros três parametros do tipo boolean que indicam se estarão presentes letras minúsculas, maiúsculas e números.
Aqui vai o código e as explicações seguem logo abaixo.
function GeraSenhaHex(Digitos: Integer; Min: Boolean; Mai: Boolean; Num: Boolean): string;
const
MinC = 'abcdef';
MaiC = 'ABCDEF';
NumC = '1234567890';
var
p, q : Integer;
Char, Senha: String;
begin
Aqui vai o código e as explicações seguem logo abaixo.
function GeraSenhaHex(Digitos: Integer; Min: Boolean; Mai: Boolean; Num: Boolean): string;
const
MinC = 'abcdef';
MaiC = 'ABCDEF';
NumC = '1234567890';
var
p, q : Integer;
Char, Senha: String;
begin
Char := '';
If Min then Char := Char + MinC;
If Mai then Char := Char + MaiC;
If Num then Char := Char + NumC;
for p := 1 to Digitos do
begin
Randomize;
q := Random(Length(Char)) + 1;
Senha := Senha + Char[q];
end;
Result := Senha;
end;
If Min then Char := Char + MinC;
If Mai then Char := Char + MaiC;
If Num then Char := Char + NumC;
for p := 1 to Digitos do
begin
Randomize;
q := Random(Length(Char)) + 1;
Senha := Senha + Char[q];
end;
Result := Senha;
end;
Explicações:
Primeiro criamos as constantes que trarão os caracteres referentes a letras minúsculas, maiúsculas, e números, depois, iniciamos como vazia, só por desencargo de consciência já que o delphi faz isso por padrão, a variável "Char", que conterá todos os caracteres a serem usados para a geração da senha randômica.
Após isso, testamos os parâmetros para letras maiúsculas, minúsculas e números, acrescentando à "Char" cada um dos que forem verdadeiros segundo os parâmetros passados na chamada da função.
E depois, para finalizar, um laço com o número de repetições igual aos dígitos passados também como parâmetro na chamada, que usando a função Random do delphi gera números aleatórios dentro do limite estabelecido pelo cumprimento da variável "Char", lembrando que o fato de acrescentar o "+ 1" é por que as posições dos caracteres dentro de um string iniciam em 1, e a função Random gera números de 0 até o valor estipulado como limite. Por exemplo uma String = 'teste' temos os valores a seguir:
String[1] = 't'
String[2] = 'e'
String[3] = 's'
String[4] = 't'
String[5] = 'e'
Primeiro criamos as constantes que trarão os caracteres referentes a letras minúsculas, maiúsculas, e números, depois, iniciamos como vazia, só por desencargo de consciência já que o delphi faz isso por padrão, a variável "Char", que conterá todos os caracteres a serem usados para a geração da senha randômica.
Após isso, testamos os parâmetros para letras maiúsculas, minúsculas e números, acrescentando à "Char" cada um dos que forem verdadeiros segundo os parâmetros passados na chamada da função.
E depois, para finalizar, um laço com o número de repetições igual aos dígitos passados também como parâmetro na chamada, que usando a função Random do delphi gera números aleatórios dentro do limite estabelecido pelo cumprimento da variável "Char", lembrando que o fato de acrescentar o "+ 1" é por que as posições dos caracteres dentro de um string iniciam em 1, e a função Random gera números de 0 até o valor estipulado como limite. Por exemplo uma String = 'teste' temos os valores a seguir:
String[1] = 't'
String[2] = 'e'
String[3] = 's'
String[4] = 't'
String[5] = 'e'
segunda-feira, 2 de janeiro de 2012
Verificando o seu endereço IP
A fonte do projeto principal ficará algo como:
implementation
uses Winsock;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
wVersionRequested : WORD;
wsaData : TWSAData;
begin
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
WSACleanup;
end;
procedure TForm1.BtnIPClick(Sender: TObject);
var
p : PHostEnt;
s : array[0..128] of char;
p2 : pchar;
begin
GetHostName(@s, 128);
p := GetHostByName(@s);
Memo1.Lines.Add(p^.h_Name);
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
Memo1.Lines.Add(p2);
end;
end.
segunda-feira, 26 de dezembro de 2011
Capturar a data da BIOS ( Basic Input Output System ) do computador
Insira um objeto do tipo Button com a propriedade name
definica como Button1 e um objeto do tipo Label com a propriedade definida como
Label1.
procedure
TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := 'Data da Bios:
'+String(PChar(Ptr($FFFF5)));
end;
segunda-feira, 12 de dezembro de 2011
Como Criar Forms Em Tempo de Execução
Para você economizar memória, pode-se criar os forms de sua
aplicação somente no momento da execução. Na criação do Form você define se ele
é MODAL ou NÃO MODAL. Para Isso observe os seguintes códigos:
MODAL - Mostra form em modo exclusivo
procedure
TForm1.Button1Click(Sender: TObject);
begin
Application.CreateForm(TForm2,
Form2);{Carrega form na memória}
Form2.ShowModal;{Mostra form em modo exclusivo}
Form2.Free;
{Libera Memória}
end;
NÃO MODAL - Mostra form em modo não exclusivo
procedure
TForm1.Button1Click(Sender: TObject);
begin
Application.CreateForm(TForm2,
Form2);{Carrega form na memória}
Form2.ShowModal;{Mostra form em modo exclusivo}
end;
No evento OnClose do Form2 coloque o seguinte código.
procedure
TForm2.FormClose (Sender: Tobject; var Action : TCloseAction);
begin
Action:= caFree;
end;
Aliado a este código, deve deve alterar no delphi, no menu
Options, opção Project. Mudando os forms a serem criados dinamicamente da
coluna Auto-Create Forms para Avaliable Forms.
Assinar:
Postagens (Atom)
-
function GetIP:string;//--> Declare a Winsock na clausula uses da unit var WSAData: TWSAData; HostEnt: PHostEnt; Name:string; begin...