Mostrando postagens com marcador Dicas. Mostrar todas as postagens
Mostrando postagens com marcador Dicas. Mostrar todas as postagens

terça-feira, 23 de fevereiro de 2021

Gerenciado de Pacotes Boss

Você já teve o trabalho de reinstalar todos os componentes e bibliotecas do seu projeto?


Se, a sua resposta foi sim, você gastou um tempo considerável nesse serviço, não é mesmo. Mas saiba que você não foi e não será o único a passar por isso. Pensando nessa trabalho árduo e maçante gostaria de compartilha com você o BOSS. Conforme anunciado no título desse post ele nada mais é que um gerenciador de pacotes e bibliotecas, na minha opinião muito útil! Como meu objetivo não é me aprofundar nos detalhes e funcionalidades do BOSS segue link  para mais informações, espero ter contribuído! 

quarta-feira, 12 de janeiro de 2011

Material Firebird

Pessoal a MindTheBird está disponibilizando um material para divulgação da nova versão do firebird, vale a pena dar uma olhada.

quarta-feira, 6 de maio de 2009

Desenvolvimento em 3 Camadas

Como todos já sabemos o Delphi se tornou uma linguangem popular entre os programadores por sua IDE facíl e sua sintaxe bem agradavel, mas com toda essa facilidades foi sendo criados softwares de difícil manutenção, para quem como eu está vivendo essa realidade com nosso amigo Delphi indico seguir essa leitura adiante.

Regras junto da interface
Esse caso é o mais comum e somos praticamente induzidos a trabalhar assim pelas ferramentas RAD atuais, inclusive o Delphi. A possibilidade de se ligar um componente visual (TDBEdit) diretamente a um campo de uma tabela em um banco de dados (TTable), é excelente no que diz respeito à velocidade de programação e apresentação de resultados. Essa é uma técnica muito boa para prototipação e desenvolvimento de pequenos sistemas, mas traz incomodos enormes quando de trata de sistemas de grande porte.
Regras junto dos dados
Ao colocarmos as regras dentro do banco de dados, usando os recursos nativos do banco de dados (triggers, stored procedures e constraints), estamos automaticamente ligando nossa aplicação ao banco de dados que estiver sendo usado, aumentando muito o retrabalho caso a aplicação venha a ser convertida para ser usada com outro banco de dados.
Parte das regras na interface e parte junto dos dados
Este o modelo mais facilmente encontrado atualmente e é uma tendência natural. Quando bem aplicado é um modelo eficaz e pode atender a várias situações e ambientes. No entanto carrega os estigmas da dificuldade de manutenção, dificuldade de distribuição e falta de portabilidade.
Quando nos referimos a 3 camadas estamos dividino tarefas entre as mesmas, interface com usuário, regras de negócio, persistênica, mas uma analise mais detalhada sugiro da uma olha no material 3camadas disponível no site da active delphi.

Referência
Falando em camadas
Walter Itamar Mourão – 10/98


Eletrodomésticos - Submarino.com.br

sexta-feira, 3 de abril de 2009

Focar Coluna DBGrid

Para quem está procurando com focar uma celuna na DBGrid ai vai a dica :
TStringGrid(DBGrid).Col := 1;

quinta-feira, 5 de fevereiro de 2009

NTDLL.DLL

Pessoal para muitos programadores que estão passando pelos chatos erros de Access Violation provocados pela ntmdll.dll e não sabem como solucionar deem uma olhada no link a seguir: Como trocar as chamadas irritantes ntdll.dbgUserBreakPoint por NOP e ignorá-las em tempo de execução?

sexta-feira, 3 de outubro de 2008

Dicas debug

Como saber seu seu programa está sendo executado apartir do delphi

if (FindWindow('TApplication', nil) = 0) or (FindWindow('TAlignPalette', nil) = 0) or
(FindWindow('TPropertyInspector', nil) = 0) or (FindWindow('TAppBuilder', nil) = 0) then
begin
ShowMessage('Delphi is not running!');
end

Como saber se o debug do delphi está ativado

IsBeingDebugged:=(DebugHook<>0);

quarta-feira, 17 de setembro de 2008

DoubleBuffered

Determina se o controle da imagem é feita diretamente à janela ou em um bitmap de em-memória.


Class

TWinControl


DoubleBuffered := True;

Descrição Quando DoubleBuffered for falso, o windows controla pinturas diretamente para a janela. Quando DoubleBuffered for verdade, o windows controla pinturas para um bitmap de em-memória que é usado para pintar a janela então. Reduz a quantia de vezes que a tela pisca, no entanto o uso de memória é intenso.

terça-feira, 27 de maio de 2008

Clone Cursor



Em determinados momentos você precisa percorrer um dataset que está em state in dsInsert ou dsEdit, mas não pode mover o dataset principal de registro pois isso irá tirar o mesmo deste state। Existem uma maneira elegante de se fazer isso, criar um novo clientdataset e chamar o método abaixo:

procedure CloneCursor(Source: TCustomClientDataSet; Reset: Boolean; KeepSettings: Boolean);

Onde:

Source -> ClientDataset a ser clonado

Reset e KeepSettings

Determinam como o clone trata os seguintes atributos:

- Filter, filtered, filterOptions, onFilterRecord
- IndexName
- MasterSource, MasterFields
- ReadOnly
- RemoteServer, ProviderName

sexta-feira, 11 de abril de 2008

Ler e gravar no Registro do Windows


//Gravar um valor
procedure TForm1.Button2Click(Sender: TObject);
var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('Teste',True);
Reg.WriteString('TesteValor',edit1.Text);
finally
Reg.CloseKey;
Reg.Free;
inherited;
end;
end;

//Ler um valor
procedure TForm1.Button1Click(Sender: TObject);
var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('Teste',False);
ShowMessage(Reg.ReadString('TesteValor'));
finally
Reg.CloseKey;
Reg.Free;
inherited;
end;
end;


quinta-feira, 10 de abril de 2008

Bloquear Mouse e Teclado


Coloque um Timer sete o interval para 5000 e um Botão e coloque o código abaixo!

O código travará o mouse e teclado por 5 segundos!

Use com cuidado e responsabilidade... Não me venha travar o mouse sem programar uma ação para destravá-lo!


unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Timer1: TTimer;

procedure Button1Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

procedure BlockInput(ABlockInput : boolean); stdcall; external 'USER32.DLL';

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

BlockInput(True);

Timer1.Enabled:=True;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

BlockInput(false);

Timer1.Enabled:=false;

end;

end.

quarta-feira, 12 de março de 2008

Adicionar Mensagem Warning Compilador Delphi


Você deseja deixar uma mensagem para lembrar de fazer algo importante em uma determinada unit? Adicione a linha a seguir :

{$MESSAGE 'DIGITE SUA MENSAGEM AQUI'}

Isto faz o compilador do delphi exibir uma mensagem de [Pascal Hint] na janela "Messages";

terça-feira, 11 de março de 2008

Ordenando Array Dinâmico de Record


Meu Record

TMeuTipo = record
codigo : double;
numero : integer;
nome : String;
Sigla : String;
end;

Ordenando o array de record pelo campo número

procedure TForm1.QuickSort(var A: array of TMeuTipo; const iLo, iHi: Integer);
var
Lo, Hi, Mid : Integer;
lTemp : TMeuTipo;

begin
Lo := iLo;
Hi := iHi;
Mid := A[(Lo + Hi) div 2].numero;

repeat
while A[Lo].numero < Mid do
Inc(Lo);

while A[Hi].numero > Mid do
Dec(Hi);

if Lo <= Hi then
begin
lTemp := A[Lo];
A[Lo] := A[Hi];
A[Hi] := lTemp;
Inc(Lo);
Dec(Hi);
end;
until Lo > Hi;

if Hi > iLo then
QuickSort(A, iLo, Hi);

if Lo < iHi then
QuickSort(A, Lo, iHi);
end;

quinta-feira, 6 de março de 2008

Dicas de delphi 1.6


Faça download de um help chm com várias dicas de delphi.

quarta-feira, 5 de março de 2008

Anexando arquivo ao executável - (Enclosing file to the executable)


1º Criar um método

var
lResource : TResourceStream;

begin
lResource := TResourceStream.Create(hInstance, 'MeuArquivo', Pchar('MeuTipo'));
lResource.SavetoFile('putty.exe');
lResource.Free;

abaixo do implementation

{$R 'putty.res' 'putty.rc'}


2º Criar um arquivo com notepad

MeuArquivo MeuTipo "d:\putty.exe"

Obs.: Salvar arquivo com a extensão .rc

3º Compilar Arquivo

Compilar o arquivo rc com o utilitário "brcc32" que no delphi 2006 encontra-se em
C:\Arquivos de programas\Borland\BDS\4.0\Bin

ex.: brcc32 "d:\temp\putty.rc"

quinta-feira, 21 de fevereiro de 2008

Enviar email com anexo via delphi


Segue abaixo código para enviar email utilizando delphi.

Declare na lista de classes:

uses
IdAttachmentFile, IdMessage, IdSMTP;

Declare na lista de variáveis

var
IdSMTP : TIdSMTP;
lMensagem : TIdMessage;

Código para envio de mensagens

try
IdSMTP := TIdSMTP.Create(Application);

try
lMensagem := TIdMessage.Create(Application);

idSMTP.Username := // emaildo usuario
idSMTP.Password := // senha do usuario
idSMTP.Host := // host do usuaro ex.: provedo.mail.com.br
idSMTP.Port := // porta email -> geralmente 25
idSMTP.Connect;

try
with lMensagem do
begin
Subject := // assunto
From.Address := // email de origem
Recipients.EmailAddresses := // email de destino
Body.Text := // testo do email


TIdAttachmentFile.Create(MessageParts, nome_do_arquivo); // usado para anexar arquivos

idSMTP.Send(lMensagem);
end;

finally
idSMTP.Disconnect;
end;

finally
lMensagem.Free;
end;

finally
IdSMTP.Free;

Close;
end;

terça-feira, 19 de fevereiro de 2008

Como Descobrir o Endereço IP e Nome do Computador



1 º - Adicione "WinSock" a lista de classes.

2 º - Declare wsaData: TWSAData como variável local;

Retornando o endereço ip da máquina

WSAStartup( 257, wsaData );
Label1.Caption := Trim(iNet_ntoa( PInAddr( GetHostByName( nil )^.h_addr_list^ )^ ));

Retornando o nome do computador

Label2.Caption := GetHostByName( nil )^.h_name;
if Pos('.', Label2.Caption) > 0 then
Label2.Caption := Copy(Label2.Caption, 1, Pos('.', Label2.Caption)-1);

ao final do seu método deve ser adicionado : WSACleanup; para finalizar o método.

segunda-feira, 11 de fevereiro de 2008

Como Criar um usuário no windows XP


Importar a biblioteca ADSI (Active Directory Service Interface), Disponível no windows apartir da versão 2000.

1º Passo


2º Passo


3º Passo


4º Passo


5º Passo


Criar um novo projeto com um botão e adicionar o código abaixo:

procedure TForm1.Button1Click(Sender: TObject);
var
Usuario : IADsUser;
Conta : IADsContainer;
Grupo : IADsGroup;
Begin
try
Conta := GetObject('WinNT://'+DominioEdit.Text) as IADsContainer;

Grupo := GetObject('WinNT://'+DominioEdit.Text+'/'+GrupoEdit.Text) as IADsGroup;

Usuario := Conta.Create('user', UsuarioEdit.Text) as IADsUser;
Usuario.SetPassword(SenhaEdit.Text);
Usuario.SetInfo;

Grupo.Add('WinNT://'+DominioEdit.Text+'/'+UsuarioEdit.Text);

ShowMessage('Usuario criado com sucesso...');
except
on E:Exception do
ShowMessage('Erro ao criar usuario.'+#13+E.Message);
end;

End;

function TForm1.GetObject(const Name: string): IDispatch;
var
Moniker: IMoniker;
Eaten: integer;
BindContext: IBindCtx;
Dispatch: IDispatch;
begin
OleCheck(CreateBindCtx(0, BindContext));
OleCheck(MkParseDisplayName(BindContext,
PWideChar(WideString(Name)),
Eaten,
Moniker));
OleCheck(Moniker.BindToObject(BindContext, NIL, IDispatch,
Dispatch));

Result := Dispatch;
end;

Origem : http://www.devmedia.com.br/articles/viewcomp.asp?comp=6597&hl

Encaminhado por :

Daniel Diniz
Programador

daniel_s_diniz@hotmail.com



sexta-feira, 8 de fevereiro de 2008

Publique sua Dica


Se você tem alguma dica de delphi legal e acha que pode ser útil para alguém, mande um email para rafaeljeremias@gmail.com, sua dica será analisada e caso for aprovada será publicada em nosso blogger com preservação da origem e do autor.

Postgres com Vita Voom + dbexpress


Para conectar postgres com dbexpress em delphi você deve baixar algum driver para conexão, neste exemplo usaremos o Vita Voom que pode ser adquirido em http://www.vitavoom.com/.
Após instalação do driver você deve alterar os arquivos de configuração do dbexpress, no meu caso uso o turbo delphi ficam em: C:\Program Files\Borland\BDS\4.0\dbExpress.

Editar os arquivos e adicionar o seguinte código:

dbxconnections.ini

[PGEConnection]
BlobSize=32
HostName=192.168.50.12
Database=teste
DriverName=PostgreSQL
Password=postgres
User_Name=postgres

dbxdrivers.ini

[Installed Drivers]
PostgreSQL=1

[PostgreSQL]
GetDriverFunc=getSQLDriverPOSTGRESQL
LibraryName=dbexppge.dll
VendorLib=LIBPQ.DLL

Observação.: Sugiro utilizar a versão 4.11.

quinta-feira, 18 de outubro de 2007

Prioridade de processamento


Você possui algum processo que deve está deixando os outros processo mais lento, altera a prioridade de processamento do seu projeto adicionando no create a sintaxe abaixo:

SetPriorityClass(GetCurrentProcess, IDLE_PRIORITY_CLASS);

NORMAL_PRIORITY_CLASS -> nível normal, sua aplicação é iniciada por default.

IDLE_PRIORITY_CLASS -> Baixa prioridade

HIGH_PRIORITY_CLASS -> Acima do normal

REALTIME_PRIORITY_CLASS -> Nível mais alto de prioridade

  © Blogger template 'Perfection' by Ourblogtemplates.com 2008

Back to TOP