Boletim Pascal #41 - 07 DE ABRIL DE 2003 (Original: 30-NOV-2002)
Índice
1. Algumas Palavras dos Editores
2. Classes de Administração e Informação Remota para os Windows NT/W2000
Server
3. Assembler nativo em Delphi (IV) - Introdução a Objetos
4. Fóruns / Listas
5. Delphi na Rede
- Sites em português
- Componentes, Bibliotecas e Utilidades
. Shareware/Comercial
. Freeware
- Artigos, Dicas e Truques
- Tutoriais
- Outros Links
________________________________________________________________________
1. Algumas Palavras dos Editores
Editorial da Versão em Português
--------------------------------
Apesar do rápido avanço com as traduções, tivemos novamente um pequeno
atraso com o número 41 do boletim. Mas não se preocupem- tudo já foi
normalizado e os números 42 e 43 estão praticamente finalizados. Devem
ser publicados nesta semana.
Gostaria de tomar esse tempo de vocês para agradecer a colaboração de
toda a comunidade. Em menos de um ano de atividades, nosso boletim
acaba de ultrapassar a marca de 800 assinantes. É realmente um grande
orgulho poder fazer parte dessa iniciativa. Obrigado a todos por
participarem!
Agora chega de conversa. Divirtam-se com nosso boletim!
Demian Lessa
demian@knowhow-online.com.br
Editor da versão em português
__________________
Editorial da Versão em Inglês
-----------------------------
Gostaria de agradecer a Mike Heydon por colaborar com um artigo para
esse número e fico feliz em presenteá-lo com um licença do
TSDBGridFooter:
* TSDBGridFooter v2.0 por Jovan Sedlan, Shareware ($74.50)
Esse componente é uma ferramenta poderosa que permite cálculos
automáticos no seu DBGrid e exibe essa informação num rodapé
configurável abaixo do grid. É projetado para funcionar com o
TSDBGrid (também incluído) apesar de poder ser utilizado em qualquer
descendente de TCustomDBGrid. http://www.softpile.com/Development/Libraries/Review_24756_index.html
Para o próximo número, teremos disponível como prêmio para um de nossos
colaboradores:
* llPDFLib v1.1 - por llionsoft, Shareware ($70, $280 com fontes)
llPDFLib é uma biblioteca Object Pascal para a criação de documentos
PDF. Não utiliza DLLs ou software externo de terceiros para gerar os
PDFs. A biblioteca consiste de um componente TPDFDocument com métodos
e propriedades análogos ao TPrinter do Delphi, mas orientados à
geração do arquivo PDF. http://www.llion.net/
Nas notícias, o Interbase 7 foi lançado, representando um diferencial
significativo desde o Interbase 6.5. Há também uma atualização não
oficial para os ActionBands do Delphi 7 no site da Borland. Veajam a
seção Outros Links para uma breve descrição e para as URLs.
Espero que gostem desse número.
Cordialmente,
Ernesto De Spirito
boletim-pascal-owner@yahoogrupos.com.br
__________________
Colaboraram nesse número: Dave Murray e Charl Linssen
________________________________________________________________________
JfControls Library. Multi-language. Multi-appearance. Skins. Privileges.
More than 40 integrated and customizable components. Impressive GUI.
Centralized resources administration. Multiple programming problems
solved. For Delphi 3-2006 & C++ Builder 3-6. http://www.jfactivesoft.com
________________________________________________________________________
2. Classes de Administração e Informação Remota para os Windows NT/W2000
Server
Por Mike Heydon <mheydon@pgbison.co.za>
EOH Outsourcing http://www.eoh.co.za
Tradução: Fabio Barreto
Essa unidade define classes que acessam máquinas remotas e recebem
informações suas. A unidade atualmente so lê informações. Muitas
chamadas como NetServerGetInfo têm chamadas análogas para definição de
valores, como NetServerSetInfo. É fácil alterar as classes para incluir
funcionalidade de escrita (APENAS para corajosos).
As seguintes classes estão implementadas:
TNTServerInfo = class(TObject)
TNTServerEventLog = class(TObject)
TNTServerServices = class(TObject)
TNTServerSessions = class(TObject)
TNTServerOpenFiles = class(TObject)
TNTServerGroups = class(TObject)
TNTServerDisks = class(TObject)
Procedimentos e Funções adicionais:
procedure GetServerResources(const RootObject : string;
StringList : TStrings;
RecursiveEnum : boolean;
ResourceTypes : TNTServerResSet=[resAny])
function ValidateUserLogon(const UserName : string;
const Domain : string;
const PassWord : string) : boolean;
Nota: Para acesso ao Registro Remoto veja "TRegistry.RegistryConnect()"
da Borland.
Métodos que definem TStrings definem a propriedade Items/Lines para
valores separados por ponto-e-vírgula ";". Esse formato é ideal para meu
componente TMultiColListBox ou para a função General.ExtractField().
A indicação de campos DWORD pode ser testada através da função
General.AndEqual(), por exemplo:
if AndEqual(SI.ServerType,SV_TYPE_SERVER_UNIX) then ...
A maioria das funções que definem a TString também permitem a definição
de um conjunto de Opções de Campo que controlam a informação retornada
nas colunas dos Items/Lines do TStringList.
Algumas classes têm construtores SOBRECARREGADOs. Elas permitem a
criação tanto de instâncias VINCULADAs como DESVINCULADAs. No caso do
TNTServerEventLog, você pode criar uma instância vinculada ao servidor e
abrir o log de eventos SourceName imediatamente ou apenas criar a classe
e depois chamar o OpenLog() para vincular o objeto ao log de eventos.
Nota: O método OpenLog e similares, em outras classes, irão
automaticamente fechar todo log anteriormente aberto antes de
abrir um novo. Chamando o método Free também fecha qualquer log
aberto. Assim, não há necessidade de métodos CloseLog() ou
similares.
Devido à limitação de espaço, a documentação encontra-se no código fonte
(em anexo).
________________________________________________________________________
Qual foi a última vez que você votou para o Boletim Pascal? Suporte essa
iniciativa votando para o Boletim Pascal no The Programming Top 100!
http://top100borland.com/in.php?who=20
________________________________________________________________________
3. Assembler nativo em Delphi (IV) - Introdução a Objetos
Por Ernesto De Spirito <eds2008 @ latiumsoftware.com>
Tradução: Carlos Arrebola
Objetos são registros
=====================
Do ponto de vista do assembler, um objeto é como um registro, cujos
campos são seus próprios campos mais os campos de seus ancestrais,
mais um ponteiro à VMT (Virtual Methods Table - Tabela de Métodos
Virtuais). Vejamos isto através de um exemplo:
type
TClass1 = class
FieldA: integer;
FieldB: string;
end;
TClass2 = class(TClass1)
FieldC: integer;
end;
No exemplo, TClass2 é de certo modo como um registro com quatro
campos:
TClass2 = record
VMT: pointer; // campo invisível, sempre o primeiro
FieldA: integer; // herdado de TClass1
FieldB: string; // herdado de TClass1
FieldC: integer; // declarado em TClass2
end;
Variáveis objeto são ponteiros
==============================
Uma variável objeto é somente um ponteiro para um objeto, ou seja, um
ponteiro para um registro.
var
a, b: TClass2;
begin
a := TClass2.Create;
b := a; // somente uma declaração de ponteiro
a.Free;
end;
Um construtor aloca memória para uma instância (objeto) de sua classe,
inicializa-a e retorna um ponteiro para a memória alocada. Assim,
após a chamada a TClass.Create a variável "a" aponta para o registro
(o objeto):
+---+ +--------+
| a | ----------> | VMT |
+---+ +--------+
| FieldA |
+--------+
| FieldB |
+--------+
| FieldC |
+--------+
A declaração "b := a" não cria um novo objeto, cópia do primeiro,
mas realmente faz com que ambas as variáveis apontem para o mesmo
objeto:
+---+ +--------+ +---+
| a | ----------> | VMT | <---------- | b |
+---+ +--------+ +---+
| FieldA |
+--------+
| FieldB |
+--------+
| FieldC |
+--------+
Métodos assembler
=================
Os métodos recebem um primeiro parâmetro invisível, chamado Self, que
é um ponteiro para o objeto sobre o qual o método deve operar.
type
TTest = class
FCode: integer;
public
procedure SetCode(NewCode: integer);
end;
procedure TTest.SetCode(NewCode: integer);
begin
FCode := NewCode;
end;
var
a: TTest;
begin
:
a.SetCode(2);
:
end;
O código em Objetc Pascal acima é traduzido para para o Pascal padrão
como segue:
type
TTest = record
VMT: pointer;
FCode: integer;
end;
procedure SetCode(Self: TTest; NewCode: integer);
begin
Self.FCode := NewCode;
end;
var
a: ^TTest;
begin
:
SetCode(a, 2);
:
end;
O exemplo serve para explicar que os métodos recebem o ponteiro Self
como seu primeiro parâmetro, ou seja, eles recebem o ponteiro Self no
registrador EAX e o primeiro parâmetro declarado é passado como um
segundo parâmetro em EDX etc. (o segundo parâmetro declarado é passado
como terceito em ECX e o resto dos parâmetros são passados em pilha).
O método SetCod pode ser escrito em assembler como:
procedure TTest.SetCode(NewCode: integer);
asm
// EAX = Self = endereço da instância TTest
// EDX = parâmetro NewCode
// FCode := NewCode;
mov TTest[eax].FCode, edx // TTest(EAX)^.FCode := EDX;
end;
Como se pode ver, os campos de objeto são acessados da mesma forma que
os campos de registro.
NOTA: Propriedades não são campos e não podem ser acessadas diretamente
a partir do assembler inline.
Eis um exemplo de um método chamando outro método:
procedure TTest.Increment;
asm
// SetCode(Code+1);
mov edx, TTest[eax].FCode // ECX := TTest(EAX)^.FCode;
inc edx
call TTest.SetCode;
end;
Não fixamos o valor de EAX antes de fazer a chamada já que EAX já
contém o valor desejado (Self), assim o método chamado vai operar no
mesmo objeto.
NOTAS:
* Métodos virtuais podem ser chamados somente estaticamente, já que
uma referência à classe é necessária na declaração de chamada.
* Métodos sobrecarregados não podem ser distinguidos em assembler
inline.
Construtores assembler
======================
Construtores são métodos muito especiais. Os construtores podem ser
chamados para criar uma instância de uma classe (isto é, para alocar
a memória para o objeto e inicializá-lo), ou simplesmente para
reinicializar um objeto já criado:
a := TTest.Create; // aloca memória
a.Create; // apenas reinicializa um objeto existente
Para distinguir entre estas duas situações, os construtores passam
um segundo parâmetro invisível do tipo byte (ou seja, no registrador
DL) que pode ser positivo ou negativo respectivamente (o compilador
usa 1 e -1 respectivamente).
Se temos de chamar um construtor a partir do código assembler com
DL = $01 (para alocar memória para o objeto), temos de passar uma
referência à classe em EAX. Já que não há nenhum símbolo para acessá-lo
diretamente do assembler, temos que fazer algo similar ao que fizemos
com o tipo de informação dos registros:
var
TTest_TypeInfo: pointer;
:
initialization
TTest_TypeInfo := TTest;
Agora que inicializamos uma variável global com a referência à classe a
partir do nosso código Pascal, podemos usa-la em nosso código assembler:
var
a: TTest;
begin
// a := TTest.Create(2);
asm
mov eax, TTest_TypeInfo
mov dl, 1
mov ecx, 2
call TTest.Create
mov a, eax
end;
:
end;
Chamar um construtor para reinicializar o objeto é mais simples já que
não precisamos de uma referência à classe:
var
a: TTest;
begin
:
// a.Create(2);
asm
mov eax, a
mov dl, -1
mov ecx, 2
call TTest.Create
end;
:
end;
Não temos nada com que nos preocupar se temos que escrever um construtor
assembler já que o Delphi manuseia a alocação para nós na entrada do
construtor e, após isso, o registrador EAX aponta para o objeto, como
acontece com qualquer outro método. O que é relevante é que se o
construtor tem parâmetros, o primeiro parâmetro declarado será
internamente passado como terceito, ou seja, em ECX (ao invés de
segundo, em EDX, como acontece com outros métodos) e o resto dos
parâmetros serão passados em ordem, na pilha.
constructor TTest.Create(NewCode: integer);
asm
// FCode := NewCode
mov TTest[eax].FCode, ecx
end;
__________________
NOTA: Um exemplo com código fonte completo está anexado a este boletim.
_______________________________________________________________________
4. Fóruns / Listas
Para juntar-se a qualquer um de nossos fóruns de discussão, a melhor
forma é assinar através da web, já que dessa forma você poderá acessar
todas as funcionalidades disponíveis no site (como alterar suas opções
de assinatura, visualizar mensagens passadas, baixar arquivos, etc.).
Um ID Yahoo! é necessário para isso e você pode adquirir o seu de forma
gratuita registrando-se como um usuário Yahoo! Mas se você não deseja
registrar-se ou se não tem acesso completo à Internet, você pode fazer
sua assinatura por e-mail (basta ter acesso a uma conta de e-mail).
* Delphi: Participe da lista de discussão do Grupo Delphi-BR e faça
parte da mais profissional lista Delphi do Brasil. Essa lista tem como
objetivo a troca de informações entre os diversos programadores Delphi
em lingua portuguesa. Aqui você encontrará grandes programadores
brasileiros dando suas contribuições para a comunidade e mantendo uma
via de comunicação entre todos os programadores Delphi brasileiros.
http://br.groups.yahoo.com/group/delphi-br/
Assinatura:
http://br.groups.yahoo.com/group/delphi-br/join
delphi-br-subscribe@yahoogrupos.com.br
* Kylix (inglês): Programação Kylix.
http://groups.yahoo.com/group/KylixGroup/
Assinatura:
http://groups.yahoo.com/group/KylixGroup/join
KylixGroup-subscribe@yahoogroups.com
* Componentes (inglês): Esse é um fórum para pesquisa/recomendação de
componentes de software (componetes VCL e CLX, objetos ActiveX, DLLs,
SOs, etc.), assim como utilitários, tutoriais, informações, etc.
http://tech.groups.yahoo.com/group/components/
Assinatura:
http://tech.groups.yahoo.com/group/components/join
components-subscribe@yahoogroups.com
* Desenvolvedores de Software (inglês): Esse é um fórum para discussões
sobre o desenvolvimento de software e para a troca de experiências de
trabalho em ambientes profissionais e comerciais. Esse não é um fórum
sobre programação; os assuntos abordados são mais gerais e
independentes de linguagem de programação.
http://tech.groups.yahoo.com/group/software-developers/
Assinatura:
http://tech.groups.yahoo.com/group/software-developers/join
software-developers-subscribe@yahoogroups.com
________________________________________________________________________
5. Delphi na Rede
Por Dave Murray <irongut @ vodafone.net>
Sites em português
==================
* Comunidade Delphi de Rio Preto
Portal com componentes, novidades, artigos, links e mais.
http://www.delphirp.com.br/
* Planet Delphi
Site brasileiro especializado em componentes para Delphi. Download
grátis.
http://www.fprass.hpg.ig.com.br/
* Delphi Company
Site do Fernando Gonçalves dedicado ao mundo Delphi
http://www.delphicompany.hpg.ig.com.br/
* IntereSite
Tudo sobre Delphi
http://www.ulbrajp.com.br/~tecnobyte/
* Advanced Developers
Delphi, productos, novidades, consultoria...
http://www.adev.com.br
* Fórum Delphi-BR
http://br.groups.yahoo.com/group/delphi-br/
* Fórum Delphi !!
http://www.qualyinf.com.br/forum/delphi/delphi.html
Componentes, Bibliotecas e Utilitários
======================================
Shareware/Comercial
-------------------
* SDL Component Suite 7.0 - by Software Development Lohninger ($99)
The SDL Component Suite provides a wide range of components for
science and engineering, e.g. math, statistics, chemistry, charts,
data visualisation, Fourier transform (FFT), 3D plots, geographic
maps, curve fitting, etc. Available for Delphi 3-7 and BCB 4-6.
http://www.lohninger.com/sdlindex.html
Freeware
--------
* Max's components page
Freeware and commercial components for Delphi and C++ Builder
http://www.maxcomponents.net/
* PHP4Delphi v2.2 - by Serhiy Perevoznyk, FREEWARE with source
PHP4Delphi allows you to execute the PHP scripts within the Delphi
program directly without a WebServer.
http://users.chello.be/ws36637/
* CEditIPAddr by Netta El-al, FREEWARE with source
IP Address Edit component.
http://www.torry.net/vcl/edits/diffedits/neipaddredit.zip
* IE Information Component v4.9 - by Ch Bergmann, FREEWARE with source
IE Availability, Version & Information Component features include:
Availability of IE, Version and Build Number, Encryption-Strength,
IE WindowTitle, IE ShellFolder and SpecialFolder Paths, and more.
http://yazno.tripod.com/ieinstver/
* TssVolumeController v1.0 - by Shen Min, FREEWARE with source
TssVolumeController is a component to control the mixer volume.
http://www.sunisoft.com/volumectrl/
* MiTeC System Information Component v7.73 - by Michal Mutl, FREEWARE
Component providing detailed system information including:
CPU architecture, type, count, level, revision, vendor, id, speed
OS version, build, platform, CSD version, user name, serial number
Graphic adapter chip name, dac, memory, color depth, modes, resolution
Sound card name, WaveIn, WaveOut, MIDIIn, MIDIOut, AUX, Mixer name
Memory info, allocation granularity, min.and max.application address
BDE, ODBC, DAO, ADO, ASPI, DirectX information
and a lot more!
http://www.mitec.d2.cz/
* Delphi Fast Zlib v1.1.2 - by Roberto Della Pasqua, FREEWARE w source
A Delphi zlib 1.1.4 implementation for fastest performance, including
targeted P6 code generation, 64bit alignment, source changes and
optimizations following Borland C++ full standards adherence, and a
Delphi added low level copy memory function to speedup typical strings
management. Embed the newest zlib 1.1.4 objects into your programs
without using external dlls, take a look into the example to see how
to work with streams and strings.
http://www.dellapasqua.com/delphizlib/
Artigos, Dicas e Truques
========================
* A Book, a Book, a Kingdom for a Book! - by Zarko Gajic
Find what are the best Delphi books on the market and read expert
reviews. Also, see what are the top picks in the .NET arena!
http://delphi.about.com/cs/magazines/
* Tips on Designing Data-Driven XML - by Edward Tittel
One of the powerful aspects of XML is the ability to define and
structure content or data. Learn a few tips for designing XML
documents based on the structure of the data.
http://builder.com.com/article.jhtml?id=u00320021007edt01.htm
* How to get Kylix to notice function key shortcuts - by m3Rlin
www.delphifaq.net/modules.php?op=modload&name=FAQ&op=view&id=205
* How to identify drives assigned by the Subst command - Flurin Honegger
Recognizing virtual drives and combining 32 Bit and 16 Bit code to fit
from Win95 up to WinXp!
http://www.delphi3000.com/articles/article_3447.asp
* Find text in MS Word files without Word app loading - Dmitry Lifatov
Easy way to find a text in MS Word.
http://www.delphi3000.com/articles/article_3450.asp
* Building a Terminal Server Client-Application - by Max Kleiner
Working with MSTerminal Services Advanced Client ActiveX.
http://www.delphi3000.com/articles/article_3451.asp
* Copy NTFS file security from a source to a destination - Wayne Sherman
By default when coping a folder or file to a destination on an NTFS
partition the destination file takes the security and access control
settings of the destinations parent folder. This function provides an
easy way to copy the original settings to the destination file or copy
security settings from another file/folder.
http://www.delphi3000.com/articles/article_3452.asp
* OnChange Event for TDBLookupComboBox - by Alex Schlecht
How to make a new DBLookupComboBox-Component with OnChange-Event.
http://www.delphi3000.com/articles/article_3454.asp
* Function to Determine Oracle Version Number - by Mike Heydon
GetOraVersion()
http://www.delphi3000.com/articles/article_3455.asp
* Create an ActiveX friendly TSplitter - by Simon Moscrop
Prevent the 'Component has no parent window' error message appearing
when you use a TSplitter in a Delphi ActiveX control.
http://www.delphi3000.com/articles/article_3456.asp
* Function to determine MS SQL Server Version Number - by Mike Heydon
GetSqlVersion().
http://www.delphi3000.com/articles/article_3457.asp
* Check Valid IP Address - by Jerry Pylarinos
A simple way to check whether an IP address is valid.
http://www.delphi3000.com/articles/article_3458.asp
* Instant Messaging in Delphi: The MSN One - by César Nicolás Peña Núñez
An implementation of the MSN Messenger protocol, it isnt complete and
in order to build it you will need the WSocket package. Most of what
is presented here is a part of the specification.
http://www.delphi3000.com/articles/article_3459.asp
* How to get JPEG Image Size, including big images - by Mauricio Herrera
http://www.delphi3000.com/articles/article_3460.asp
* Sip from the Firehose: Short Computer Books I've Enjoyed - by David I
There are so many great computer books and so little time to read them
all. What I really love are the short books, the focused books with
low page counts...
http://community.borland.com/article/0,1410,29253,00.html
* How to use AutoInc fields with DataSnap - by Dan Miser
Implementing auto-incrementing fields for any DataSnap server.
http://community.borland.com/article/0,1410,20847,00.html
* If you are The Lone Gun, Take Aim at Time Bandits - by Jeffrey Kay
The author is the only developer in his small startup, but he also has
other duties as a member of the management team. Check out his tips on
how to stay on time and on track when you wear many hats.
http://builder.com.com/article.jhtml?id=u00420021023JBK01.htm
* How to adapt DateTime values for different SQL-Server formats?
http://www.swissdelphicenter.ch/en/showcode.php?id=1423
* How to load the CD-ROM icon?
http://www.swissdelphicenter.ch/en/showcode.php?id=1417
* How to patch a process?
http://www.swissdelphicenter.ch/en/showcode.php?id=1364
* How to center a TControl?
http://www.swissdelphicenter.ch/en/showcode.php?id=1415
* How to maker the mouse wheel works correct in TDBGrid?
http://www.swissdelphicenter.ch/en/showcode.php?id=1454
* How to use regular expressions in Delphi?
http://www.swissdelphicenter.ch/en/showcode.php?id=1478
* How to list all directories, files and drives in a listbox?
http://www.swissdelphicenter.ch/en/showcode.php?id=1495
* How to display the 'Organize Favorite' dialog box?
http://www.swissdelphicenter.ch/en/showcode.php?id=1494
* How to preform a Shell Sort - by m3Rlin
www.delphifaq.net/modules.php?op=modload&name=FAQ&op=view&id=195
* How to convert an Icon to Bitmap - by m3Rlin
www.delphifaq.net/modules.php?op=modload&name=FAQ&op=view&id=196
* How to set the transparent color of an image - by m3Rlin
www.delphifaq.net/modules.php?op=modload&name=FAQ&op=view&id=197
* How to check if a font is a TrueType font - by m3Rlin
www.delphifaq.net/modules.php?op=modload&name=FAQ&op=view&id=198
* How to read DOS environment variables - by m3Rlin
www.delphifaq.net/modules.php?op=modload&name=FAQ&op=view&id=199
* How to programatically start the screen saver - by m3Rlin
www.delphifaq.net/modules.php?op=modload&name=FAQ&op=view&id=203
* How to change the system date - by m3Rlin
www.delphifaq.net/modules.php?op=modload&name=FAQ&op=view&id=204
* Quick untyped fileaccess - by DenShade Hyp
How can we read quickly from an untyped file consisting out of bytes
without making the code complicated?
http://www.delphi3000.com/articles/article_3415.asp
* ADO Recordset <-> XML - by Dmitry Lifatov
Provides two functions: function RecordsetToXML and function
RecordsetFromXML.
http://www.delphi3000.com/articles/article_3416.asp
* Modulo for huge numbers - by Andreas Schmidt
http://www.delphi3000.com/articles/article_3417.asp
* How To Make Your Own Self Extractor - by William Anthony
How to create a Self Extracting Executable.
http://www.delphi3000.com/articles/article_3419.asp
* Create You Own Custom Dataset (Part 1) - by William Anthony
How to create a custom DataSet.
http://www.delphi3000.com/articles/article_3420.asp
* Create You Own Custom Dataset (Part 2) - by William Anthony
How to create direct access dataset.
http://www.delphi3000.com/articles/article_3421.asp
* Get the published properties of an persistent object - Boris Wittfoth
How to get the published properties of an persistent object / Using
the pPropInfo-Pointer and the RTTI of Delphi.
http://www.delphi3000.com/articles/article_3423.asp
* Moving Controls over the form - by Boris Benjamin Wittfoth
Dragging / moving TWincontrol-Component over a TForm.
http://www.delphi3000.com/articles/article_3424.asp
* How to draw in a StringGrid Cell? - by Boris Benjamin Wittfoth
The standard Delphi-StringGrid can only hold one color for all cells.
How to create an multiple colored Stringgrid ?
http://www.delphi3000.com/articles/article_3425.asp
* TString Super Sort Class (descending,ignore case, etc) - Mike Heydon
http://www.delphi3000.com/articles/article_3427.asp
* Randomizing with the linear congruence method - by DenShade Hyp
The standard randomize function does not return a set of uniformly
randomized numbers.How can i truly randomize values?
http://www.delphi3000.com/articles/article_3429.asp
* Random string generator - by Uros Gaber
Ever wanted to generate a random string with specific random char on a
specific position in the string?
http://www.delphi3000.com/articles/article_3430.asp
* Date String (any format) to TDateTime - by Mike Heydon
http://www.delphi3000.com/articles/article_3431.asp
* Moving objects with snapgrid functionality - by Tommy Andersen
Here's an object that enables you to move your objects on a form
easily during runtime...
http://www.delphi3000.com/articles/article_3432.asp
* Display The Add to favorite Dialog Box - by Khaled Al Ahmad
How To Display the IE Add to favorite Dialog Box.
http://www.delphi3000.com/articles/article_3433.asp
* Screencapture with animated gif support - Christiaan Ten Klooster
How to create a screenshot of the entire screen, a selection or a
specific window to a bitmap, jpeg compressed or (animated) GIF file?
http://www.delphi3000.com/articles/article_3434.asp
* Standard RichEdit and URL highlighting/navigation - by Mike Shkolnik
How can I highlight URLs in RichEdit and how can I detect a mouse
click in text where URL is?
http://www.delphi3000.com/articles/article_3435.asp
* LogonUser() Win API call vs SSPI call - by Mike Heydon
Using the LogonUser API or the Security Support Provider Interface
(SSPI) to verify user credentials.
http://www.delphi3000.com/articles/article_3436.asp
* Redefining TCP/IP Client... - by S S B Magesh Puvananthiran
How do we create a TCP/IP Server/Client in Delphi?
http://www.delphi3000.com/articles/article_3437.asp
* Using queued components in Delphi - by Helmut Dollinger
Example showing queued components in Delphi. Queued Components are
feature of COM+ based on Microsoft Message Queuing Services (MSMQ).
They provide an easy way to invoke and execute components
asynchronously. Processing can occur without regard to the
availability or accessibility of either the sender or the receiver.
http://www.delphi3000.com/articles/article_3439.asp
* How do I unlock a Active Server Library DLL? - by Helmut Dollinger
How to make this a little bit easier during development...
http://www.delphi3000.com/articles/article_3440.asp
* Reading and writing RIFF base files (WAVE, AVI etc) - by Liran Shahar
Ever wanted to read and write user sound into a valid WAVE file? Ever
wanted to read all the available chunks with additional file data from
a WAVE fie?
http://www.delphi3000.com/articles/article_3441.asp
* Delphi 5 TToolbar does not resize correctly when XP common controls
6.0 are enabled - by Flurin Honegger
Altering Delphi 5 comctrls.pas to fit your needs!
http://www.delphi3000.com/articles/article_3445.asp
Tutoriais
=========
* CLR, startup your engines! - by Alain "Lino" Tadros
The Common Language Runtime is the solid rock on which the .NET
Framework was built. From it's many features, we start with one that
defines the way CLR starts .NET applications.
http://community.borland.com/article/0,1410,29291,00.html
* Filtering ClientDataSets - by Cary Jensen
When applied to a dataset, a filter limits the records that are
accessible. This article explores the ins and outs of filtering
ClientDataSets.
http://community.borland.com/article/0,1410,29271,00.html
* ClientDataSet Aggregates and GroupState - by Cary Jensen
How to use aggregates to calculate simple statistics as well as how to
use group state to improve your user interfaces.
http://community.borland.com/article/0,1410,29272,00.html
* Locate and format XML data with XPath functions - Tony Patton
XPath allows you to locate + extract information from an XML hierarchy
and offers functions which provide an easy way to work with numeric
and textual data.
http://builder.com.com/article.jhtml?id=u00320021108ton01.htm&page=1
* Welcome to Caught in the .NET - By Alain "Lino" Tadros
Welcome to "Caught in the .NET" series of articles, my goal is to
introduce myself and set the stage and expectation for the next few
months of reading these series of articles.
http://community.borland.com/article/0,1410,29254,00.html
* Take a Guided Tour of XML Support in .NET - by Lamont Adams
If you're trying to learn your way around .NET's XML neighborhood, let
us take you on a tour. Here's a look at the Framework's various reader
and writer classes.
http://builder.com.com/article.jhtml?id=u00220021101adm01.htm
* Working With XML Entities - by Roy C. Hoobler
XML entities are often overlooked in the XML dialect, but they provide
a powerful vehicle for XML developers. Learn how to effectively use
them in your DTDs as placeholders or to retrieve external data.
http://builder.com.com/article.jhtml?id=u00320021105RCH01.htm
* Use XPath to Locate Information in XML Documents - by Tony Patton
XML offers a wonderful vehicle for packaging and exchanging data but
getting data from an XML document can be troublesome. Find out how
XPath provides a simple, consistent vocabulary for getting the data.
http://builder.com.com/article.jhtml?id=u00320020827ton02.htm
* Principles to Help Create Robust,Reusable OO Design Apps - Rahul Tyagi
Object-oriented software design provides a cleaner design and enhances
the ability to add new features in the future. Learn the basic
elements of good and bad design and two principles you can follow to
build solid object-oriented design code.
http://builder.com.com/article.jhtml?id=u00320021107tyr01.htm
* MVC Design Pattern: Better Organization + Code Reuse - by Brian Kotek
Consider the MVC design pattern for your development projects. Using
its three components, you can open up new levels of robustness, code
reuse and organization.
http://articles.techrepublic.com.com/5100-10878_11-1049862.html
Outros Links
============
* Unofficial update of ActionBands feature of Delphi 7.0
This patch will affect both end user applications that use ActionBands
as well as the Delphi IDE itself since the menus in the IDE are
ActionBand menus.
http://cc.codegear.com/Item.aspx?id=19151
* Borland Releases Hot New Upgrade to InterBase
Borland has announced the release a significant upgrade to InterBase.
InterBase 7 has features intended to improve application performance
and developer productivity. Support for SMP and hyperthreading can
speed up applications, support more users and more complex application
architecture. New transaction monitoring capabilities can improve
developer productivity and ease deployment issues. According to field
testers, InterBase 7 is a "must have" upgrade.
http://www.borland.com/interbase/pdf/ib7_whatsnew.pdf
* BorCon France
Paris, November 21-22 2002.
http://info.borland.fr/conference/2002/
________________________________________________________________________
VOCÊ PODE NOS AJUDAR
Nós precisamos de sua ajuda para manter esse boletim ativo e cada vez
maior. Você pode ajudar indicando o boletim a seus amigos e colegas:
http://www.latiumsoftware.com/br/pascal/index.php
Você também pode votar para nós em um ou todos esses rankings para dar
maior visibilidade a nosso site e assim aumentar o número de assinantes
do boletim:
http://www.programmingpages.com/?r=latiumsoftwarecomenpascal
http://top100borland.com/in.php?who=20
São alguns segundos para você que REALMENTE significam muito para nós.
Não esqueça que também precisamos de artigos para os boletins e que
existe um prêmio para um dos autores em cada número (em inglês).
Todos os artigos serão considerados mas nós estamos particularmente
interessados em artigos sobre Kylix já que existe pouco material
disponível online.
* Envie seu artigo em inglês para
pascal-newsletter-owner@yahoogroups.com
* Envie seu artigo em português para
boletim-pascal-owner@yahoogrupos.com.br
________________________________________________________________________
Se você não recebeu o código fonte completo dos exemplos neste número,
você pode obtê-los em http://www.latiumsoftware.com/br/pascal/p0041.zip
________________________________________________________________________
Esse boletim é fornecido "COMO ESTÁ" sem garantias de qualquer tipo. Seu
uso implica na aceitação dos termos de licença e isenção de garantia que
podem ser lidos em http://www.latiumsoftware.com/br/pascal/index.php
Os artigos são propriedade e copyright de seus respectivos autores e
foram reproduzidos aqui com sua permissão. Você pode redistribuir esse
boletim desde que na sua íntegra (incluindo notas de propriedade e
copyright), sem alterações e de forma gratuita.
________________________________________________________________________
Página do grupo:.....: http://br.groups.yahoo.com/group/boletim-pascal/
Assinar..............: boletim-pascal-subscribe@yahoogrupos.com.br
Cancelar assinatura..: boletim-pascal-unsubscribe@yahoogrupos.com.br
Assinar/cancelar.....: http://groups.yahoo.com/group/boletim-pascal/join
Problemas com sua assinatura? boletim-pascal-owner@yahoogrupos.com.br
________________________________________________________________________
Boletim Pascal http://www.latiumsoftware.com/br/pascal/index.php
Copyright (c) 2003 por Ernesto De Spirito. Todos os direitos reservados.
________________________________________________________________________
|