Total de visualizações de página

terça-feira, 25 de dezembro de 2012

separar números de letras numa string

...
var i:integer;
texto,varletras,varnumeros:string;
begin
texto := 'SUA STRING';
varletras := ´´;
varnumeros := ´´;
for i:=1 to Length(Texto) do
if (Texto[i] in [´0´..´9´]) then
varnumeros := varnumeros+Texto[i]
else
varletras := varletras + Texto[i];
end;


Ao final desse código a variável numletras terá as letras e a variável varnumeros terá os números.

quarta-feira, 5 de dezembro de 2012

coalesce : obrigar select filtrar valores nulos para determinados campos (FIREBIRD)

Muitos iniciantes não sabem mas o comando SELECT simples muitas vezes não traz como resultado registros que possuem valor nullo num determinado campo indicado na pesquisa.

para obrigar a seleção resultar campos com valores nulos :


select * from CLIENTES
where coalesce (codigo,'') like :0 and
           coalesce (nomerazao,'')  like :1 and
           coalesce (apelfant,'')  like :2 and
           coalesce (cpfcnpj,'')  like :3 and
           coalesce (tipopessoa,'')  like :4 and
           coalesce (cidade,'')  like :5
           order by codigo

Esse exemplo foi inserido num componente do tipo Query .
O argumento coalesce seguido da sintaxe (CAMPO,'') , onde campo é o campo sugerido na pesquisa e o espaco me branco marcado com '' substitui os valores nulos por valor em branco (somente durante a pesquisa) e retorna os resultados.



obrigar uma string receber caracter maiúsculo

objeto que vai receber o valor maiúsculo := AnsiUpperCase(elemento que vai ser transformado em maiúsculo);

sábado, 1 de dezembro de 2012

erro : O programa de instalação do SQL Server não pode instalar arquivos na pasta compactada ou criptografada


Hoje fui tentar instalar o sql server numa máquira rodando windows XP e me deparei com o seguinte erro durante a instalação :

O programa de instalação do SQL Server não pode instalar arquivos na pasta compactada ou criptografada: c:\Arquivos de programas\Microsoft SQL Server\. Para continuar, certifique-se de que os diretórios de instalação não estão compactados ou criptografados ou especifique um diretório diferente e execute o programa de instalação do SQL Server novamente

Para resolver o problema fui até a pasta de instalação do sql server : c:\Arquivos de programas\Microsoft SQL Server , clique com o botão direito do mouse nela, em seguida selecione Propriedades , em seguida clique no botão avançado. Depois é só desmarcar a opção "Compactar o conteúdo para economizar espaço em disco"  e dar OK.

Pronto , resolvido o problema.

segunda-feira, 19 de novembro de 2012

verificar conexão com a internet

// declare a função :

function conexao_teste : boolean;

// implemente função :

function conexao_teste : Boolean;
var
 flags : DWORD;
begin
 if not InternetGetConnectedState(@flags, 0) then
    result := false
 else
    result := true;
end;

// para a verificação :

  conexao_teste;
  if conexao_teste = true then showmessage ('conectado');

terça-feira, 13 de novembro de 2012

Software Gratuíto para Backup Automático do SQL SERVER

SQLBackupAndFTP!

 Muitas empresas contém informações de grande importância em seus bancos de dados, porém muitas vezes não é possível salvar backups das informações no banco por diversos motivos.
Agora com o SQLBackupAndFTP é possível salvar backups dos dados em seu banco e enviá-los por email, por FTP ou até compactá-los e salvar onde desejar.

É possível agendar o horário e a data que deseja que seja feito o backup. A possibilidade de enviar os backups via servidor FTP ajuda na otimização de espaço, pois não é necessário gravar os dados. O programa pode, caso o usuário deseje, enviar ainda um email com o status do backup para o usuário poder controlar sempre que é feito um backup e se ele foi bem sucedido.

O programa é compatível com as versões do SQL Server:
SQL Server 2005 Express
SQL Server 2005 Workgroup
SQL Server 2005 Standard
SQL Server 2008 Express
SQL Server 2008 Workgroup
SQL Server 2008 Standard
SQL Server 2008 Web

quinta-feira, 8 de novembro de 2012

obrigar somente letras maiúsculas ou minúsculas durante a digitação

Evento OnKeyPrees, o seguinte(s) comando(s) :

key:=AnsiUpperCase(key)[1]; //para edição em maiúscula

key:=AnsiLowerCase(key)[1]; //para edição em minúscula



domingo, 4 de novembro de 2012

MENSAGENS TRADUZIDAS (DELPHI 6 E 7)

Muita genta gostaria de ter aquelas mensagens do delphi (de erro entre outras) traduzidas para o português do brasil , visando a comodidade de seus clientes pois nem todos dominam o inglês.

É possível traduzir estas mensagem apenas compilando um projeto e depois substituir os arquivos .DCU criados nesse projeto na pasta LIB do delphi.

No meu caso após a substituição tive um erro nos meus projetos referente ao Data Modulo (versão diferente no indicado na nova DCU). A única coisa que precise fazer foi substituir o componente Data Module antigo (exclui o antigo e adiciona o mesmo componente novamente) , reconfigura o banco e depois compila

No meu caso foi o único problema que tive , agora as mensagens do meu projeto são 100 % em português do Brasil.

Esses arquivos podem ser facimente encontrados na internet , ou quem quiser pode se cadastrar como um Membro;Seguidor do site que eu envio por e-mail.

(NÃO ME RESPONSABILIZO POR QUALQUER DANO AO SEU PROJETO, APENAS ESTOU REPASSANDO MINHA EXPERIÊNCIA)

quarta-feira, 17 de outubro de 2012

None of the dynamic: libraries can be found: libpq81.dll, libpq.dll

Este erro ocorre ao tentar conectar com o banco Postgre sem as devidas dll's no diretório "system" e "system32" do windows (no windows 64 bits somente na pasta system)

Você precisa fazer download somente do arquivo libpq81.dd clicando aqui

O arquivo libpq.dll pode ser encontrado na pasta "bin" do Postgre, assim como todas as outras dll's que o delphi for pedindo quando tentar se conectar ao banco de dados.

OBS : fiz esta experiência utilizando componente Zeosdb

Postgre (PostgreSql) encoding LATIN1 (em ambiente Windows)

Caros amigos , bom dia !

Recentemente peguei um projeto onde "obrigatoriamente" o collation no banco deveria ser LATIN1 e o banco de dados Postgre (requisitos do cliente).

Depois de muita pesquisa (muita mesmo) na internet e nenhuma "resposta conclusiva" acabei descobrindo que a versão 8.2 do postgre é a única que aceita Encoding LATIN1 no Windows juntamente com Locale Portugues/Brazil.

No proprio instalador dessa versão já é possível configurar para LATIN1.

Da versão 8.3 em diante já não é possível essa configuração (somente em ambiente Linux)

O próprio software na versão 8.3 em diante , sugere o uso do Encoding Windows1252 , o que não é a mesma coisa.

domingo, 14 de outubro de 2012

can't format message 13:96 -- message file c:\Program Files\borland\Interbase/interbase.msg not found. unavailable database

Já vi muitas pessoas que usam o banco Firebird passarem por esse problema em algum momento : o erro com mensagem : " can't format message 13:96 -- message file c:\Program Files\borland\Interbase/interbase.msg not found. unavailable database"

Este problema ocorre quando o interbase e firebird estão rodando na mesma máquina , ou por quem opta utilizar o firebird com componentes IBEXPERT (nativo do Interbase) no Delphi.

Depois de passar pelo mesmo problema consegui resolver da seguinte forma :

Desinstalar o Firebird
Localizar e excluir os seguintes arquivos : gds32.dll e fbclient.dll
Excluir a pasta de instalação do Firebird
Reinstale o Firebird

Pronto , provavelmente você conseguirá resolver o problema

sexta-feira, 12 de outubro de 2012

desabilitar ações de uma action list

Para anular as ações de uma 'action list' temporariamente ou permanentemente atribua o seguinte valor a propriedade 'state' :

ActionList1.State := asSuspended;

terça-feira, 5 de junho de 2012

SELECINAR TEXTO DE UM "EDIT"

Para selecionar o conteúdo de um Edit , por exemplo , você deve atribuir a propriedade "SelectAll"

EXEMPLO

procedure TfrmClientes.ButtonClick(Sender: TObject);
begin
  Edit1.SelectAll;
end;

OBRIGAR UM CAMPO RECEBER NULL

Quando usamos uma referencia do tipo qryClienteBLOQUEADO.ISNULL ou
qryClienteBLOQUEADO.value := NULL o delphi retorna um erro de imcompatibilidade .
Para "driblar" este problema referencie da seguinte maneira :
qryCliente.FieldbyName('BLOQUEADO').value := NULL


segunda-feira, 4 de junho de 2012

ACBR VALIDADOR : VALIDAÇÃO DE CNPJ, CPF, INSCRIÇÃO ESTUADUAL, UF, NÚMERO CARTÃO DE CRÉDITO


Existe um jeito muito simples para validar CPF, CNPJ, I.E, CPE, PIS, nº Cartão de Crédito, nº de Cheque usando o componente ACBR Validador.

É preciso baixar os fontes do ACBR no site oficial via SVN 

Depois na IDE do delphi (Tools , Options , Library32 , Library Path , adicione o caminho
C:\acbr\Fontes\ACBrDiversos

Agora pelo delphi abra o pacote C:\acbr\Pacotes\Delphi\ACBrDiversos.dpk

Compile e depois Instale

FORMA DE USAR O COMPONENTE

Adicione um componente ACBRValidador (paleta ACBR) no seu form 

Na propriedade TipoDocto selecione o tipo de documento que deseja validar

Exemplo de validação :

    ACBrValidador1.Documento := EditIncrEst.Text;
    if not ACBrValidador1.Validar then
    begin
      showmessage ('Inscrição Estadual Inválida');
      abort;
    end

VALIDAÇÃO PARA ESTADOS BRASILEIROS (UF)



// verifique se a biblioteca SysUtils está declarada na cláusula 'uses'

// Declare a função :

function ChecaUF(const aUF : string) : Boolean; 

// Crie a função

function ChecaUF(const aUF : string) : Boolean;
const
  Estados = 'SPMGRJRSSCPRESDFMTMSGOTOBASEALPBPEMARNCEPIPAAMAPFNACRRRO';
var
  Posicao : Integer;
begin
  Posicao := Pos(UpperCase(aUF), Estados);
  Result := not ((Posicao = 0) or ((Posicao mod 2) = 0)
    or (Trim(aUF) = ''));
end;

// Exemplos de uso:

// Teste se verdadeiro
  if CheckUF('EditEstado.Text') then
    ShowMessage('UF válida');
 
// Teste se falso  
  if not (CheckUF('EditEstado.Text')) then
    ShowMessage('UF inválida');

sábado, 2 de junho de 2012

RODANDO EXECUTÁVEIS VIA CÓDIGO NO DELPHI

Você pode chamar um arquivo executável pelo delphi pela programação , utilizando o comando WinExec

Sintaxe :

WinExec(PChar('caminho_do_arquivo_exe'),SW_MAXIMIZE);

O comando SW_MINIMIZE serve para executar maximizado, se quiser rodar minimizado mude para SW_MINIMIZE

ALTERAR SENHA DO 'SA' NO FIREBIRD


PARA ALTERAR A SENHA DO SUPER ADMINISTRADOR DO FIREBIRD ENTRE NO NO PROMPT DE COMANDO NAVEQUE ATÉ A PASTA BIN , ONDE O FIREBIRD FOI INSTALADO E EXECUTE O COMANDO :

gsec -modify SYSDBA -pw NOVASENHA -user SYSDBA -password masterkey?

OBS : Você tembém pode fazer isso em tempo de execução usando o comando 'WinExec' (ver exemplo de uso no menu "arquivos e pastas" do blog)

CLIPBOARD NO DELPHI (COPIAR E COLAR)

DECLARE A BIBLIOTECA "ClipBrd" NA CLÁUSULA "USES"

COPIANDO O TEXTO DO COMPONENTE EDIT1 (NO BOTÃO "BtCtrlC")

procedure TForm1.BtCtrlCClick(Sender: TObject);
begin
     ClipBoard.AsText := Edit1.Text;
end;

COLANDO O TEXTO  COPIADO NO COMPONENTE EDIT2 (BOTÃO "BtCtrlV")

procedure TForm1.BtnCtrlVClick(Sender: TObject);
begin
     Edit2.Text :=  Clipboard.AsText;
end;

quarta-feira, 30 de maio de 2012

INCREMENTE SUA APLICAÇÃO COM VCL SKIN

As aplicações em Dephi podem ficar muito mais atraentes quando usamos os Skins VCL em nossos formulários . O efeito também é automaticamente aplicado aos componentes do form (dbgrid , buttons , panel , etc ).

Para os interessados possuo o pacote instalador (solicitar por email)

Instalação :

Descompacte o arquivo .zip

Na IDE do delphi entre em Tools - Options - Library Path e adicione o caminho do diretório correspondente à sua versão do delphi (d6,d7,d2007 ...) .
Depois abra o arquivo .dpk que esta na pasta correspondente a sua versão .
Compile o pacote e depois instale.

terça-feira, 29 de maio de 2012

VERIFICAR SE UM FORM ESTA CRIADO NA MEMÓRIA OU NÃO

Em alguns casos , precisamos saber se um form está criado para podermos manipular algum componente do mesmo ou tratar algumas informações , nesse caso precisamos saber se o status do form é igual a "nil" .
Se for igual a "nil" é porque o mesmo ainda não foi criado na memória.

Exemplo (evendo onclick de um button por exemplo)

if frmCliente = nil then
begin
 ...
end;

OBS : para que o comando funcione em corretamente em todos os forms da sua aplicação, é preciso que ele possa ser identificado como "NÃO CRIADO" . Por isso não esqueça de colocar o form "recebendo" nil no evendo "onclose" de cada form ou simplesmente dando um "release" nesse evento.

Assim o form sera eliminado da memoria mesmo que tenha sido criado.

segunda-feira, 28 de maio de 2012

REGISTRANDO AS BIBLIOTECAS CAPICOM E OPENSSL NO WINDOWS 64 BITS

Olá a todos que acompanham este blog.
A um tempo atrás me deparei com um problema na migração do componente ACBR para plataforma 64 bits e, para ser mais específico , na hora de registrar as bibliotecas.

Pois bem : Copie as dll's capicom.dll , msxml5.dll , msxml5r.dll , libeay32.dll , ssleay32.dll para a pasta
C:\Windows\SysWOW64

No menu iniciar do Windows , navegue ate o ícone do prompt de comando (do MS-DOS) , clique com o botão direito sobre ele e depois clique em "Executar como Administrador".

Execute os comandos :
regsvr32 %windir%\SysWOW64\capicom.dll
regsvr32 %windir%\SysWOW64\msxml5.dll

sábado, 26 de maio de 2012

CORES NO DBGRID DO DELPHI 2010

Na migração para o Delphi2010 os DBGrids ficaram todos estilizados com um tema do Delphi 2010 para corrigir isso altere a propriedade "DrawingStyle" para "gdsClassic"

GRAVANDO DADOS EM ARQUIVOS INI

Quando trabalhamos com arquivos INI no delphi, podemos dizer que gravamos ou lemos informações num registro que contém grupos de informações.

Basicamente, este trabalho exige os seguintes passos :

* Declarar a biblioteca "IniFiles" na cláusula "uses" da unit
* No procedure em que for chamar o recurso , declare uma variável do tipo TIniFile
   Ex : var teste : TIniFile;

* Faça a variável receber o caminho no qual o arquivo INI sera gravado
   Ex : teste := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\CONFIGURACOES.INI');
   Nesse caso vai ser criado um arquivo CONFIGURACOES.INI no mesmo diretório de do executável
   do sistema

Para gravar "texto" no arquivo :

  teste.WriteString ('EMPRESA','RAZAOSOCIAL' ,edRazao.Text);
  teste.WriteString ('EMPRESA','NOMEFANTASIA' ,edFantasia.Text);

  Nesse caso o campo RAZAO SOCIAL do grupo EMPRESA recebe o valor do edRazao.Text e
  o campo NOMEFANTASIA recebe o valor do edFantasia.Text

Para gravar "número" no arquivo :

  teste.WriteInteger ('CONTROLE','DIASVENCIMENTO' ,edQtdeDiasVcto.Value);

Nesse caso o campo DIASVENCIMENTO do grupo CONTROLE vai receber o valor de uma
  variável ou objeto que tenha um valor inteiro.
Para gravar "valor boleano" no arquivo : 
  
  teste.WriteBool ('CONTROLE','BLOQUEAR',True);

Nesse caso  o campo BLOQUEAR do grupo CONTROLE vai receber o valor 1 (verdadeiro)

Visualização O arquivo vai ficar mais ou menos com o seguinte layout :

[EMPRESA]
NOMEFANTASIA = FULANO DE TAL LTDA
NOMEFANTASIA - LOJÃO DO FULANO

[CONTROLE]
DIASVENCIMENTO = 5
BLOQUEAR = 1