Boletim Pascal #41
Os exemplos do código fonte desta edição estão disponíveis para download.
![]() |
![]() |
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.sedlan.com/dbgrid_footer.php 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-7 and 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://www.sandbrooksoftware.com/cgi-bin/TopSite2/rankem.cgi?id=latium ________________________________________________________________________ 3. Assembler nativo em Delphi (IV) - Introdução a Objetos Por Ernesto De Spirito <eds2004 @ 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://groups.yahoo.com/group/components/ Assinatura: http://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://groups.yahoo.com/group/software-developers/ Assinatura: http://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.aspo * 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://builder.com.com/article.jhtml?id=u00320021008BXK01.htm 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://codecentral.borland.com/codecentral/ccWeb.exe/listing?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.sandbrooksoftware.com/cgi-bin/TopSite2/rankem.cgi?id=latium http://news.optimax.com/delphi/links/links.exe/click?id=70C517ECAE6E http://www.programmingpages.com/?r=latiumsoftwarecomenpascal http://www.top219.org/cgi-bin/vote.cgi?delphi&83 http://top100borland.com/in.php?who=20 http://top200.jazarsoft.com/delphi/rank.php3?id=latium http://213.65.224.200/cgi-bin/toplist.cgi/hits?Id=80 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. ________________________________________________________________________ |
Os exemplos do código fonte desta edição estão disponíveis para download.
![]() |
Erros? Omissões? Comentários? Por favor contate-nos!






