Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
EDITORIAL
Editorial
Ol amigos,
THE CLUB
Av. Celso Ferreira da Silva, 190
Jd. Europa - Avar - SP - CEP 18.707-150
Informaes: (0xx14) 3732-3689
Suporte: (0xx14) 3733-1588 - Fax: (0xx14) 3732-0987
Internet
http://www.theclub.com.br
Cadastro: cadastro@theclub.com.br
Suporte: suporte@theclub.com.br
Informaes: info@theclub.com.br
Dvidas
Correspondncia ou fax com dvidas devem ser
enviados ao - THE CLUB, indicando "Suporte".
Opinio
Se voc quer dar a sua opinio sobre o clube em
geral, mande a sua correspondncia para a seo
"Tire sua dvida".
Reproduo
A utilizao, reproduo, apropriao,
armazenamento em banco de dados, sob qualquer
forma ou meio, de textos, fotos e outras criaes
intelectuais em cada publicao da Revista
The Club so terminantemente proibidos sem
autorizao escrita dos titulares dos direitos
autorais.
Diretor - Presidente
Mauro SantAnna
Colaboradores
Emerson Facunte
Delphi marca registrada da Borland
International, as demais marcas citadas so
registradas pelos seus respectivos proprietrios.
Editorial ............................................................................ 03
Livros ............................................................................... 04
Intraweb com Banco de Dados .......................................... 06
IBObjects - Acesso nativo ao Interbase/Firebird ................. 08
Solues para impresso Clipper em
Windows e portas USB ...................................................... 10
Quando Zero no igual a Zero ......................................... 16
Calculando o Dgito Verificador ......................................... 19
Dicas & Truques ................................................................. 23
Perguntas & Respostas ...................................................... 29
MeGAZINE
Livros
Dominando o Delphi 7 - A Bblia
Autor: Cant, Marco
Editora: Makron Books
ISBN: 8534615187
Srie Dominando - A Bblia
Idioma Portugues
Pginas: 896
Publicao: 2003
Edio 1
Encadernao: Brochura
Disponibilidade: Em estoque - Prazo de entrega: 3 dias
Peso: 1795.00 gramas
Home Page: http://www.livrosdeprogramacao.com.br/
Descrio:
Tanto para quem deseja aprender Delphi 7 como para quem est migrando de uma verso anterior, este livro a nica fonte
necessria para atualizar-se. Prtico, inclui as tcnicas mais atuais em bancos de dados, cliente-servidor e programao para a
Internet. Acompanhando a viso do renomado autor Marco Cant, voc obter o conhecimento necessrio para aproveitar ao mximo
o Delphi 7 totalmente atualizado e expandido. Livro best-seller no Brasil em vrios outros pases em tdo o mundo.
Descrio:
Aprendendo Delphi 7 Guia Prtico foi feito para quem quer aprender a usar com eficincia os componentes do Delphi 7, no
somente mediante a teoria, mas praticando com programas reais.
Os exemplos foram elaborados de modo que o leitor possa aplicar na prtica o que aprendeu. O leitor incentivado a modificar os
exemplos e a experimentar as diversas propriedades dos componentes. Assim, o aprendizado mais rpido do que apenas saber como
tais componentes funcionam. Afinal, este um guia prtico !
A construo de cada exemplo feita por meio de uma descrio passo a passo, a fim de que o leitor se sinta seguro do que deve ser
feito em cada etapa.
Aprendendo Delphi 7 Guia Prtico abrange: Como usar o ambiente de desenvolvimento do Delphi 7, Componentes bsicos, Menus, Caixas
de dilogo, Componentes avanados e complementares, Bancos de dados, Vrios outros componentes
Alm disso, o leitor encontrar dicas de como criar seus prprios componentes e tambm como personaliz-los.
MeGAZINE
Livros
Dominando o Windows Server 2003 - A Bblia
Autor: Minasi, Mark
Editora: Makron Books
ISBN: 8534615195
Srie Dominando - A Bblia
Idioma Portugues
Pginas: 1408
Publicao: 2003
Edio 1
Encadernao: Brochura
Disponibilidade: Em estoque - Prazo de entrega: 3 dias
Peso: 2525.00 gramas
Home Page: http://www.livrosdeprogramacao.com.br/
Descrio:
Este livro a nica fonte de informao sobre o Windows Server de que voc precisa. o mais compreensvel e bem escrito livro
sobre o assunto. Ensina como projetar e gerenciar uma rede multiplataforma, construir uma intranet baseada em Windows,
encontrar a melhor estratgia de backup, evitar e recuperar desastres, e muito mais.
As instrues prticas levaro voc a experimentar tudo o que possvel fazer com o Windows Server 2003. O premiado autor,
Mark Minasi, que conquistou milhares de seguidores em todo o mundo, mostra como planejar, configurar e instalar sua rede, mantla funcionando da melhor forma possvel e como solucionar os problemas. Inclui informao jamais documentada de administradores
de rede, consultores e vrios outros profissionais da rea, especialistas em redes Windows.
MeGAZINE
Delphi
Valor
CommitRetain
False
Database
Passw ord
a famosa masterkey
UserName
o famoso SYSDBA
Name
C o n exao B D
Propriedade
Valor
SQLConnection
C o n exao B D
CommandText
Active
True
Insira um objeto do tipo TSQLConnection, e atravs do duploclique, j na tela de configurao, aponte para a sua conexo
dbExpress. Neste artigo estou utilizando uma conexo padro
previamente criada.
MeGAZINE
Delphi
Figura 2:
Formulrio
principal
Figura 3:
exemplo em execuo
MeGAZINE
Delphi
IBOjects
Acesso nativo ao
Interbase/Firebird.
Por Claudinei Rodrigues nei@theclub.com.br
MeGAZINE
Delphi
fazer um analise sobre criar aplicaes utilizando o Kylix para o
usurio final.
Concluso
Bem amigos do The Club, este componente parece ser
realmente muito bom. Eu andei olhando as listas de discusses e
pelo visto j tem muito programador utilizando este componente.
Agora botar a mo na massa para confirmar tudo que o Jason
me disse.
Nas prximas edies vamos analisar melhor este
componente. Espero que vocs tenham gostado desta matria, e
se voc deseja sugerir algum assunto para ser publicado em
nossa revista, fique a vontade. Envie um e-mail para
suporte@theclub.com.br. A sua sugesto muito importante
para ns.
MeGAZINE
Claudinei Rodrigues
Equipe de suporte do The Club.
Clipper
Introduo
A Soluo
A melhor soluo evitar estes tipos de impressoras
O Problema
Os fabricantes de impressoras esto notoriamente projetando
do Windows.
10
MeGAZINE
Clipper
Bibliotecas
Spoolers
Os Produtos
mercado:
www.guiosoft.hpg.com.br/
Tipo da soluo
Spooler
Si m
Autofit
Si m
Suporta Grficos
No
No
Tem Preview
No
Preo
Freeware
www.dosprint.com
Tipo da Soluo
Spooler
Si m
Autofit
Si m
Suporta Grficos
Si m
Si m
Tem Preview
Si m
Preo
US$ 99,00
MeGAZINE
11
Clipper
DosWinPrint - Sapient Softw are
Website
www.sapient-software.com
Tipo da soluo
Spooler
No
Autofit
Sim
Suporta Grficos
Si m
Tem Preview
Si m
Preo
US$ 24,95
www.abeelabs.com
Ti po da soluo
Biblioteca
Si m
Autofit
Programao
Suporta Grficos
Si m
Indisponvel
Tem Preview
Externo (FinePrint)
Preo
US$ 110,00
www.guolo.com/printfil/english.htm
Tipo da soluo
Spooler
Si m
Autofit
Si m
Suporta Grficos
Si m
No
Tem Preview
Si m
Preo
Euro 99,00
12
A b i b l i o t e c a P a g e S c r i p t c o nt m um c o nj unt o d e f un e s q ue l he
p e rmi ti r o i mp ri mi r d i re ta me nte d e uma a p li ca o C li p p e r p a ra um
i mpressora Wi ndows. O texto pode ser i mpresso em vri os ti pos de
fontes, tamanhos, e com efeitos como negrito, itlicos e suporte a cor.
Podem ser desenhados linhas e crculos e ainda permite a incluso de
b i tma p s no mo me nto d a i mp re s s o . P e rmi te um ti mo c o ntro le d e
posicionamento de texto e grficos na pgina com bastante preciso.
Juntamente com uma outra ferramenta chamada FinePrint permite gerar
visualizao de impresso.
MeGAZINE
Clipper
PrintFile - Peter Lerup
Website
www.lerup.com/printfile
Tipo da soluo
Spooler
No
Autofit
No
Suporta Grficos
No
Passthru
Tem Preview
No
Preo
Freeware
www.anzio.com
Tipo da soluo
Spooler
No
Autofit
Si m
Suporta Grficos
Si m
Passthru
Tem Preview
No
Preo
US$ 99,00
PRTWIN - Araisa
Website
www.araisa.com
Tipo da soluo
Spooler
No
Autofit
Programao
Suporta Grficos
Si m
Si m
Tem Preview
Si m
Preo
US$ 24,00
MeGAZINE
13
Clipper
WinPrint - Charles E. Kindel Jr
Website
www.kindel.com
Tipo da soluo
Spooler
Si m
Autofit
No
Suporta Grficos
Si m
No
Tem Preview
No
Preo
US$ 25,00
www.simtel.net/pub/pd/9929.shtml
Tipo da soluo
Spooler
Si m
Autofit
Si m
Suporta Grficos
Si m
No
Tem Preview
No
Preo
US$ 50,00
www.port.obninsk.ru/util.htm
Tipo da soluo
Spooler
Si m
Autofit
No
Suporta Grficos
No
No
Tem Preview
No
Preo
Freeware
14
MeGAZINE
Clipper
AutoPrint - Reiner Krump
Website
www.hrs-krump.de/software/autoprint/autoprint_e.htm
Tipo da soluo
Spooler
No
Autofit
No
Suporta Grficos
Si m
No
Tem Preview
No
Preo
O AutoPrint fica checando uma ou vrias pastas prconfi guradas em busca de arqui vos TXT, PRN ou
BMP. Detectando a existncia de qualquer destes
arquivos, ele automaticamente ir envi-los para o
sistema de impresso do Windows. O AutoPrint
g r ti s p a ra usu ri o s q ue i mp ri me me no s d e d e z
arquivos por vez.
Bloco de notas
Teoricamente, voc poder invocar o Bloco de notas para
imprimir um arquivo ASCII puro. O Bloco de notas porm, um
programa muito simples, com virtualmente nenhuma
inteligncia prpria, e no h nenhum modo de voc controlar a
sada para impressora.
No nem mesmo possvel forar quebra de pgina
utilizando um controle formfeed no arquivo a ser impresso.
HTML
Voc poder criar um arquivo com tags HTML embutidas, e
utilizar o Internet Explorer ou outro navegador para fazer a
impresso do mesmo. Podem ser convertidos relatrios com
colunas utilizando tabelas HTML, deixando o controle a cargo do
HTML.
Impressoras USB
USB-only printers (ou seja, impressora que no possuem
interface paralela) podem ser um problema especial, pois elas no
podem ser endereadas diretamente no ambiente DOS, porm,
todos os produtos acima mencionados resolvero este problema.
Uma soluo alternativa descrita logo abaixo. Trabalha em
Windows 2000 e XP e tambm trabalha em Windows NT, mas
como o NT no da suporte a USB, no h porque utilizar esta
soluo neste sistema operacional.
Defina a conexo USB de sua impressora no Windows.
Faa o compartilhamento da mesma para rede
Mapeie a LPT1: para esta impressora de rede: algo mais
como:
. NET USE LPT1 \\servidor\impressora
A princpio, isso s ir funcionar se seu PC estiver conectado
a uma rede.
Concluso
Este artigo uma adaptao do contedo disponvel no site:
RTF e Wordpad
http://www.dse.nl/~tmk/clipper/clpwinprint.htm#AutoPrint
MeGAZINE
15
Delphi
Quando o zero
no igual a zero.
Todo mundo sabe que a comparao de nmeros
armazenados no formato de ponto flutuante pode conduzir a
resultados inexatos, especialmente quando os nmeros
representam valores monetrios. Para remediar isto, o Delphi 2
introduziu um novo tipo chamado Currency.
A idia que o tipo Currency no seja passvel de erros se
arredondando da forma que os tipos de ponto flutuante fazem, e
deveria ento ser usado no lugar de Single, Real, Double e
Extended onde o valor monetrio est envolvido. Infelizmente,
existe muito pouca informao sobre o tipo Currency na
documentao do Delphi. Atravs de pesquisas encontramos
algumas informaes. Estas informaes resultaram neste
artigo.
Floats
Veja o exemplo mostrado na figura 1. Quando voc executar
este exemplo, voc receber a mensagem dCounter <> 0. Agora
coloque um breakpoint sobre a linha if dCounter = 0 then e rode
o programa novamente. Coloque o mouse sobre a varivel
dCounter. A princpio o valor desta varivel seria igual a zero,
certo? Errado. Voc ver que o hint mostrar o valor 1.1102907873e-17.
procedure TForm1.Button1Click(Sender: TObject);
var
dCounter: Double;
begin
dCounter := 0;
dCounter := dCounter + 0.05;
dCounter := dCounter + 0.05;
16
MeGAZINE
Delphi
Vamos olhar alm de nosso exemplo
por um momento. O Delphi gera o
cdigo, que usa somente o FPU para
executar clculos com os nmeros no
formato ponto flutuante.
No importa que preciso voc usa
em seu programa, Single, Double ou
Extended, porque o FPU armazena e
processa todos os nmeros somente no
formato Extended.
Este formato definido pelo IEEE
(Institute of Electrical and Electronics
Engineers) e tem a seguinte expresso:
(-1)s x2E-16383 x(m63.m62..m0),
onde S = sign (bit No. 79),
E = expoente (bitsq No.
78..64), e m63.m62..m0 = mantissa
(bits No. 63..0).
Figura 2: A janela CPU no primeiro breakpoint
Binrio
3FFA
0011.1111.1111.1010
CCCC
1100.1100.1100.1100
CCCC
1100.1100.1100.1100
CCCC
1100.1100.1100.1100
CCCD
1100.1100.1100.1101
Figura 5:
Substituindo os
valores de ST7 na
frmula IEEE
S i gn
02 = 010
Exponent
0111111111110102 = 1637810
Mantissa
1.1001100110011001100110011001100110011001
100110011001100110011012
Figura 4: Valor do
registro ST7 em hexadecimal e binary
MeGAZINE
17
Delphi
voc receber o resultado correto.
0.0000110011001100110011001100110011
00110011001100110011001100110011012
Currency
Concluso
Se voc calcular o trajeto de um satlite, a quantidade de
tomos em metros cbicos de ar, ou um campo de futebol em
polegadas, o formato de ponto flutuante seria a melhor escolha.
Entretanto, se voc quiser desenvolver um balano geral para
finalidades de contabilidade ou desenvolver um pacote de
relatrios financeiros, o formato de ponto flutuante ser
problemtico.
Nesses casos, o tipo Currency o formato ideal.
18
MeGAZINE
Delphi
Calculando o
Dgito Verificador
Por Claudinei Rodrigues nei@theclub.com.br
P eso s
Resultado
16
15
28
10
MeGAZINE
19
Delphi
20
StrToInt(Peso[I]));
// Aqui vamos armazenar a soma do resultado da
multiplicao
// de cada dgito do codigo com o seu
respectivo peso
SR := SR + R;
end;
// Aqui vamos pegar o resto da diviso da soma dos
resultados
Resto := SR mod 11;
// Aqui vamos pegar o dgito
Dgito := 11 - Resto;
Result := IntToStr(Dgito);
end;
Listagem 1: Rotina de clculo do dgito verificador
Como voc pode observar na rotina mostrada na listagem 1,
eu tentei explicar detalhadamente o que faz cada linha.
Para que possamos testar esta rotina, inclua o cdigo abaixo
no evento OnClick do componente Button, como mostrado na
listagem 2.
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(O dgito + Calcula_Dgito(
Edit1.Text ));
end;
Listagem 2: Mostra como chamar a nossa rotina
Para que este exemplo funcione corretamente, no informe o
dgito verificador no componente Edit. Ou seja, digite apenas o
numero 2003715. Pois a inteno deste artigo mostrar como se
calcula o dgito verificador. Como j sabemos qual o dgito deste
cdigo fica muito fcil de sabermos se a nossa funo est ou no
funcionando.
Concluso
Espero ter esclarecido ao menos um pouco sobre como fazer o
clculo do dgito verificador. Com base neste exemplo voc poder
entender melhor os outros tipos de clculos de dgito verificador.
Aproveito mais uma vez lhe avisar que se voc tem algum
assunto que gostaria que fosse publicado em nossa revista, sintase a vontade de enviar um e-mail para suporte@theclub.com.br.
Sua participao muito importante para ns.
Download: http://www.theclub.com.br/revista/download/
dv106.zip
MeGAZINE
Delphi
Utilizando o tipo
Record.
precisar, por exemplo, fazer algum clculo com o salrio voc ter
type
Var
TFuncionario = Record
Adm : TFuncionario;
Codigo : string;
Prod : TFuncionario;
Nome : string;
Agora para ter acesso a cada item de cada varivel que
Salario : double;
end;
Adm.Codigo := 000001;
Adm.Nome := Jos da Siva;
MeGAZINE
21
Delphi
Adm.Salario := 1500;
Salario := 8000;
end;
Prod.Codigo := 000156;
Ou, por exemplo, montar um contador para mostrar os
Prod.Salario := 3000;
Como voc pde ver bem simples. Um outro recurso que
var i : integer;
for i := 1 to 50 do
ShowMessage(Empresa[i].Nome);
with Adm do
Como foi dito anteriormente que o tipo Record trabalha como
begin
Codigo := 000001;
Salario := 1500;
end;
type
TDepartamento = record
with Prod do
Codigo : string;
begin
Func
Codigo := 000156;
: TFuncionario;
end;
Salario := 3000;
end;
Se voc quiser possvel copiar todo o contedo da varivel
Arrays
Depto.Func.Codigo := 000101;
Consideraes finais
da seguinte forma:
with Empresa[10] do
Codigo := 000025;
At l.
22
MeGAZINE
var
Path: string;
begin
Path := ExtractFilePath(Application.ExeName);
{ Exportar dados para Paradox }
ADOConnection1.Execute(SELECT * INTO Clientes IN
+ Path + Paradox 7.x; FROM CLIENTES);
{ Exportar dados para o Excel }
ADOConnection1.Execute(SELECT * INTO Clientes IN
+ Path + clientes.xls Excel 8.0; FROM
CLIENTES);
{ Exportar dados para o html }
ADOConnection1.Execute(SELECT * INTO
[Clientes.htm] IN + Path + HTML Export;
FROM CLIENTES);
end;
Exportando para Paradox, Excel e HTML
MeGAZINE
23
24
MeGAZINE
Abreviando nomes
Veja a seguir como voc pode abreviar um nome de forma
simples. Inclua no seu form um componete TEdit e um
componente TButton. Inclua o cdigo abaixo no evento OnClick
do componente TButton
Veja exemplo:
Master Campo_Master Detalhe Campo_detalhe
PEDIDO CODPEDIDO PEDITENS CODPEDIDO
MeGAZINE
25
26
end;
CreateTable;
AddIndex(Indice1, Name1 + Name2,
[ixExpression]);
AddIndex(Indice2, Name2 + Name3,
[ixExpression]);
AddIndex(Indice3, Name3 + Name4,
[ixExpression]);
end;
end;
MeGAZINE
MeGAZINE
27
28
begin
// Fecha o componente Query
Query1.Close;
// Limpa a propriedade SQL
Query1.Sql.Clear;
// Nome dos campos
Query1.Sql.Add(Select Teste1.Codigo,
Teste1.Nome);
// Nome do banco de dados
Query1.Sql.Add(From Teste1 );
// Condies do Filtro
Query1.Sql.Add(Where );
// :Nome1 a varivel que receber o parmetro.
// O nome desta varivel no importa,
// pode ser usado qualquer nome.
Query1.Sql.Add((Teste1.Nome like :Nome1) );
// Passagem do parmetro para a varivel
// criada acima
Query1.Params[0].AsString := %+Edit1.Text+%;
// Abre o componente Query
Query1.Open;
end;
Formato 03 - Filtro de OrdemServio e Data em branco
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
// Fecha o componente Query
Query1.Close;
// Limpa a propriedade SQL
Query1.Sql.Clear;
// Nome dos campos
Query1.Sql.Add(Select Teste1.Codigo,
Teste1.Nome);
// Nome do banco de dados
Query1.Sql.Add(From Teste1 );
// Condies do Filtro
Query1.Sql.Add(Where );
// :Var1 a varivel que receber o parmetro.
// O nome desta varivel no importa, pode ser
// usado qualquer nome.
Query1.Sql.Add((Teste1.OrdemServico=:Var1)and );
// Aqui est sendo informado que o campo data
// est vazio
Query1.Sql.Add((Teste1.DataServico is Null) );
// Passagem do parmetro para a varivel acima
Query1.Params[0].AsString := MaskEdit5.Text;
// Abre o componente Query
Query1.Open;
end;
MeGAZINE
uses Menus;
{$R *.dfm}
Pergunta:
projeto ?
Resposta:
MeGAZINE
29
end;
Dvida enviado por SAMUEL DELLA SAVIA DE OLIVEIRA
So Paulo SP
NSL_LANG=BRAZILIAN
PORTUGUESE_BRAZIL.WE8ISO8859P1
para
NSL_LANG=BRAZILIAN
PORTUGUESE_AMERICA.WE8ISO8859P1
O erro est na forma que o Oracle est recebendo os valores
numricos do DBExpress trocando o smbolo de separao
decimal de . por , provocando o erro.
A soluo aplicada ainda est em testes pois no sei se terei
efeitos colaterais em minhas aplicaes que usam o BDE. Caso
seja encontrada alguma outra soluo ou encontrado algum
efeito colateral, por favor entrem em contato conosco.
Informao enviada pelo scio Marcelo Marcolongo So
Paulo SP
30
MeGAZINE