Boletim Pascal #44
Os exemplos do código fonte desta edição estão disponíveis para download.
![]() |
![]() |
Boletim Pascal #44 - 21 DE ABRIL DE 2003 (Original: 27-FEB-2003) Índice 1. Algumas Palavras dos Editores 2. Operações de Disco - Como verificar se um disquete está na unidade de disco ou se está protegido, ... 3. Utilizando o MS Word como Gerador de Relatórios 4. Serial de um HD IDE- Usando S.M.A.R.T. IOCTL API 5. Notícias - Borland apresenta Optimizeit Profiler para .NET - SideWinder: Borland está desenvolvendo um IDE C# IDE para .NET - BorCon Lite 2003 - Outras Notícias e Artigos 6. Fóruns / Listas 7. 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 -------------------------------- Mais uma vez, estamos acelerando o passo na distribuição dos boletins traduzidos. A partir desse número, estamos oficialmente em dia com as traduções, permanecendo defasados em apenas um número! Caros assinantes, alterei todas as referências a nossa antiga lista de discussão, [ajuda-delphi], para a nova lista de discussão com a qual estabelecemos uma nova e vantajosa parceria, a [delphi-br]. A lista [delphi-br] é a maior e mais bem conceituada lista de discussão sobre Delphi em língua portuguesa. A lista conta hoje com mais de 1600 membros sempre dispostos a responder suas perguntas! O tráfego na lista é bastante intenso, chegando a 3000 mensagens em alguns meses. Existe uma área de arquivos contendo inúmeros artigos e componentes. E, pra que vocês sintam-se realmente à vontade participando da lista, saibam que também sou um dos moderadores! Qualquer dúvida ou questionamento que tenham, basta entrar em contato comigo. 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 Rafael Ribas Aguiló, Igor Siticov e Alex Konshin pela colaboração nesse número e fico feliz em presentear os dois últimos: * Igor Siticov (Utilizando o MS Word como Gerador de Relatórios) . 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/ * Alex Konshin (Serial de um HD IDE- Usando S.M.A.R.T. IOCTL API) . Greatis Form Designer v3.4 - por Greatis Software, Shareware ($49.95) Esse é um editor de formulários de tempo de execução que permite ao usuário movimentar e redimensionar qualquer controle do formulário. Não é preciso preparar o formulário para utilizar o Form Designer. Apenas coloque um componente TFormDesigner num formulário, defina a propriedade Active para True e pronto! Para Delphi 4-7 e BCB 3-6. http://www.greatis.com/formdes.htm Para o próximo número, teremos os seguintes prêmios para nossos colaboradores (artigos em inglês): * LMD DesignPack - por LMD Innovative - Shareware (EUR 59) Cinco componentes para acrescentar funcionalidade de edição em suas aplicações (um clone do Object Inspector clone, um designer de formulários e controles baseados em diagramas), com código fonte completo e vários projetos de exemplo demonstrando algumas das funcionalidades avançadas- um designer de relatórios está de fato incluído! http://www.ceberus.com/lmd/products/index.php3#P4 * SDL Component Suite 7.0 - por Software Development Lohninger ($99) O SDL Component Suite oferece uma ampla variedade de copmponentes para aplicações científicas e de engenharia (matemática, estatística, química, gráficos, visualização de dados, transformações de Fourier, plotagem em 3D, mapas geográficos, ajuste de curvas, etc). Disponível para Delphi 3-7 e BCB 4-6. http://www.lohninger.com/sdlindex.html O que aconteceu com a série Assembler Inline no Delphi? Acabou? Sem dúvidas, não. Em números futuros, veremos alguns exemplos do uso de assembler inline, começando no próximo número com aritmética de 128 bits. Enquanto isso, aproveitem esse número. Cordialmente, Ernesto De Spirito boletim-pascal-owner@yahoogrupos.com.br __________________ Colaboraram neste número: Dave Murray ________________________________________________________________________ Greatis Object Inspector Pro is a suite of components that includes a component for accessing all published properties and events of any component, a common inspector that can be used for inspecting everything in your application, and a component inspector that mimics the IDE Object Inspector. http://www.latiumsoftware.com/en/objinspspecial.php ________________________________________________________________________ 2. Operações de Disco - Como verificar se um disquete está na unidade de disco ou se está protegido, ... Por Rafael Ribas Aguiló <rribas @ facilities.com.br> http://www.facilities.com.br/ Tradução: Demian Lessa Se você quer ter certeza de que um disquete está no drive sem exibir as estranhas mensagens de erro, você deve utilizar as seguintes funções: function ComposeFileName(Dir, Name: string): string; function HasDiskSpace({$IFDEF WIN32}Drive: string{$ELSE}Drive: char{$ENDIF}; MinRequired: longint): boolean; function GetDirectorySize(const Path: string): longint; function GetFileSizeByName(const Filename: string): longint; function IsDiskRemovable(Drive: char): boolean; function IsDiskInDrive(Drive: char): boolean; function IsDiskWriteProtected(Drive: char): boolean; function AskForDisk(Drive: char; Msg: string; CheckWriteProtected: boolean): boolean; procedure GetAvailableDrives(DriveType: TDriveType; Items: TStrings); Essas funções estão implmentadas na unidade lDrives (anexada). ________________________________________________________________________ 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. Utilizando o MS Word como Gerador de Relatórios Por Igor Siticov SiComponents: http://www.sicomponents.com Tradução: Demian Lessa Por que não utilizar o MS Word como gerador de relatórios em seus projetos? Podemos facilmente construir relatórios e então permitir que usuários os alterem como bem entenderem utilizando esse editor bastante popular. O exemplo abaixo demonstra como criar um relatório baseado no conteúdo de um StringGrid. procedure TsiGridReporter.ShowReport; var Range: Variant; i, j: integer; begin if FGrid = nil then raise Exception.Create('Nenhum grid selecionado!'); try FWordApp := CreateOleObject('Word.Application'); except raise Exception.Create('Não foi possível iniciar o MS Word!'); end; FWordApp.Visible := True; FWordApp.Documents.Add; if FShowDate then begin Range := FWordApp.Documents.Item(1); Range := Range.Sections.Item(1); Range := Range.Headers.Item(1).Range; Range.Text := 'Data: ' + DateToStr(Date) + ' Hora: ' + TimeToStr(Time); end; Range := FWordApp.Documents.Item(1); Range := Range.Sections.Item(1); Range := Range.Footers.Item(1); Range.Range.Text := 'Page:'; Range.Range.ParagraphFormat.Alignment := ord(waAlignParagraphRight); Range.PageNumbers.Add; FWordApp.Documents.Item(1).Paragraphs.Add; Range := FWordApp.Documents.Item(1).Range( FWordApp.Documents.Item(1).Paragraphs.Item( FWordApp.Documents.Item(1).Paragraphs.Count - 1).Range.End, FWordApp.Documents.Item(1).Paragraphs.Item( FWordApp.Documents.Item(1).Paragraphs.Count - 1).Range.End); Range.Text := FTitle; Range.Bold := fsBold in FTitleFont.Style; Range.Italic := fsItalic in FTitleFont.Style; Range.Underline := fsUnderline in FTitleFont.Style; Range.Font.StrikeThrough := fsStrikeOut in FTitleFont.Style; Range.Font.Name := FTitleFont.Name; Range.Font.Size := FTitleFont.Size; Range.Font.ColorIndex := ord(FTitleColor); Range.ParagraphFormat.Alignment := ord(FTitleAlignment); FWordApp.Documents.Item(1).Paragraphs.Add; FWordApp.Documents.Item(1).Paragraphs.Add; Range := FWordApp.Documents.Item(1).Range( FWordApp.Documents.Item(1).Paragraphs.Item( FWordApp.Documents.Item(1).Paragraphs.Count - 1).Range.End, FWordApp.Documents.Item(1).Paragraphs.Item( FWordApp.Documents.Item(1).Paragraphs.Count - 1).Range.End); FWordApp.Documents.Item(1).Tables.Add(Range, FGrid.RowCount, FGrid.ColCount); Range := FWordApp.Documents.Item(1).Tables.Item( FWordApp.Documents.Item(1).Tables.Count); for i := 1 to FGrid.RowCount do for j := 1 to FGrid.ColCount do begin Range.Cell(i, j).Range.InsertAfter(FGrid.Cells[j-1, i-1]); if (i <= FGrid.FixedRows) or (j <= FGrid.FixedCols) then begin Range.Cell(i, j).Range.Bold := True; Range.Cell(i, j).Range.Shading.BackgroundPatternColorIndex := ord(wcGray25); end else begin Range.Cell(i, j).Range.Bold := fsBold in FCellFont.Style; Range.Cell(i, j).Range.Italic := fsItalic in FCellFont.Style; Range.Cell(i, j).Range.Underline := fsUnderline in FCellFont.Style; Range.Cell(i, j).Range.Font.StrikeThrough := fsStrikeOut in FCellFont.Style; Range.Cell(i, j).Range.Font.Name := FCellFont.Name; Range.Cell(i, j).Range.Font.Size := FCellFont.Size; // Range.Cell(i, j).Range.Font.ColorIndex := ord(FCellColor); Range.Cell(i, j).Range.Shading.BackgroundPatternColorIndex := FCellColor; end; end; end; Esse exemplo é apenas um método do componente anexado a esse artigo. Esse componente também possui os métodos PrintReport e PrintPreview. Veja o código em anexo para detalhes. Esse componente oferece apenas um primeiro passo para que você possa criar seu prório gerador de relatórios baseado no MS Word. PS: O componente e o código fonte são FREEWARE e, portanto, você pode utilizá-los como bem entender. __________________ Igor Siticov é o autor da TsiLang Components Suite (conjunto completo de componentes profissionais para construção elegante, útil e amigável de aplicações multilíngua em dois minutos) e Resource Builder (editor visual completo de scripts RC que pode ser um excelente substituto para o Image Editor e o Resource WorkShop da Borland para a criação e edição de arquivos de recursos), por SiComponents: www.sicomponents.com ________________________________________________________________________ Vote o Boletim Pascal (Pascal Newsletter) em The Programming Pages! http://www.programmingpages.com/topsite.asp?r=latium Encontre o Pascal Newsletter na seção de Delphi e siga a link "Vote". ________________________________________________________________________ 4. Serial de um HD IDE- Usando S.M.A.R.T. IOCTL API Por Alex Konshin http://home.earthlink.net/~akonshin/ Tradução: Adilson Vahldick Muitos FAQs recomendam o uso do GetVolumeInformation para recuperar o serial do HD, mas esta função fornece o serial do volume e não o serial do HD. O serial do volume é atribuído e alterando durante a formatação de uma partição. Algumas empresas utilizam ferramentas de clonagem para instalar softwares em seus computadores novos, copiando de um HD para todos os outros. Consequentemente, todos os números de séries dos volumes destes HDs são os mesmos. Você pode recuperar o número de série real de um HD IDE, o nome do modelo, a revisão do firmware e outras informações utilizando o S.M.A.R.T. IOCTL API. // Copyright (c) 2000 Alex Konshin program IdeSN; // OBJETIVO: Aplicativo console simples que extrai // o serial do primeiro disco IDE. {$APPTYPE CONSOLE} uses Windows, SysUtils; // para Win32Platform e SysErrorMessage // ------------------------------------------------------------- function GetIdeDiskSerialNumber : String; type TSrbIoControl = packed record HeaderLength : ULONG; Signature : Array[0..7] of Char; Timeout : ULONG; ControlCode : ULONG; ReturnCode : ULONG; Length : ULONG; end; SRB_IO_CONTROL = TSrbIoControl; PSrbIoControl = ^TSrbIoControl; TIDERegs = packed record bFeaturesReg : Byte; // especificar "comandos" SMART bSectorCountReg : Byte; // registro de contador de setor bSectorNumberReg : Byte; // registro de número de setores bCylLowReg : Byte; // valor de cilindro (byte mais baixo) bCylHighReg : Byte; // valor de cilindro (byte mais alto) bDriveHeadReg : Byte; // registro de drive/cabeça bCommandReg : Byte; // comando IDE bReserved : Byte; // reservado- tem que ser zero end; IDEREGS = TIDERegs; PIDERegs = ^TIDERegs; TSendCmdInParams = packed record cBufferSize : DWORD; irDriveRegs : TIDERegs; bDriveNumber : Byte; bReserved : Array[0..2] of Byte; dwReserved : Array[0..3] of DWORD; bBuffer : Array[0..0] of Byte; end; SENDCMDINPARAMS = TSendCmdInParams; PSendCmdInParams = ^TSendCmdInParams; TIdSector = packed record wGenConfig : Word; wNumCyls : Word; wReserved : Word; wNumHeads : Word; wBytesPerTrack : Word; wBytesPerSector : Word; wSectorsPerTrack : Word; wVendorUnique : Array[0..2] of Word; sSerialNumber : Array[0..19] of Char; wBufferType : Word; wBufferSize : Word; wECCSize : Word; sFirmwareRev : Array[0..7] of Char; sModelNumber : Array[0..39] of Char; wMoreVendorUnique : Word; wDoubleWordIO : Word; wCapabilities : Word; wReserved1 : Word; wPIOTiming : Word; wDMATiming : Word; wBS : Word; wNumCurrentCyls : Word; wNumCurrentHeads : Word; wNumCurrentSectorsPerTrack : Word; ulCurrentSectorCapacity : ULONG; wMultSectorStuff : Word; ulTotalAddressableSectors : ULONG; wSingleWordDMA : Word; wMultiWordDMA : Word; bReserved : Array[0..127] of Byte; end; PIdSector = ^TIdSector; const IDE_ID_FUNCTION = $EC; IDENTIFY_BUFFER_SIZE = 512; DFP_RECEIVE_DRIVE_DATA = $0007c088; IOCTL_SCSI_MINIPORT = $0004d008; IOCTL_SCSI_MINIPORT_IDENTIFY = $001b0501; DataSize = sizeof(TSendCmdInParams)-1+IDENTIFY_BUFFER_SIZE; BufferSize = SizeOf(SRB_IO_CONTROL)+DataSize; W9xBufferSize = IDENTIFY_BUFFER_SIZE+16; var hDevice : THandle; cbBytesReturned : DWORD; pInData : PSendCmdInParams; pOutData : Pointer; // PSendCmdOutParams Buffer : Array[0..BufferSize-1] of Byte; srbControl : TSrbIoControl absolute Buffer; procedure ChangeByteOrder( var Data; Size : Integer ); var ptr : PChar; i : Integer; c : Char; begin ptr := @Data; for i := 0 to (Size shr 1)-1 do begin c := ptr^; ptr^ := (ptr+1)^; (ptr+1)^ := c; Inc(ptr,2); end; end; begin Result := ''; FillChar(Buffer,BufferSize,#0); if Win32Platform=VER_PLATFORM_WIN32_NT then // Windows NT, Windows 2000, Windows XP begin // recuperar handle da porta SCSI hDevice := CreateFile('\\.\Scsi0:', // Nota: '\\.\C:' precisa de privilégios administrativos GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0); if hDevice=INVALID_HANDLE_VALUE then Exit; try srbControl.HeaderLength := SizeOf(SRB_IO_CONTROL); System.Move('SCSIDISK',srbControl.Signature,8); srbControl.Timeout := 2; srbControl.Length := DataSize; srbControl.ControlCode := IOCTL_SCSI_MINIPORT_IDENTIFY; pInData := PSendCmdInParams(PChar(@Buffer) +SizeOf(SRB_IO_CONTROL)); pOutData := pInData; with pInData^ do begin cBufferSize := IDENTIFY_BUFFER_SIZE; bDriveNumber := 0; with irDriveRegs do begin bFeaturesReg := 0; bSectorCountReg := 1; bSectorNumberReg := 1; bCylLowReg := 0; bCylHighReg := 0; bDriveHeadReg := $A0; bCommandReg := IDE_ID_FUNCTION; end; end; if not DeviceIoControl( hDevice, IOCTL_SCSI_MINIPORT, @Buffer, BufferSize, @Buffer, BufferSize, cbBytesReturned, nil ) then Exit; finally CloseHandle(hDevice); end; end else begin // Windows 95 OSR2, Windows 98, Windows ME hDevice := CreateFile( '\\.\SMARTVSD', 0, 0, nil, CREATE_NEW, 0, 0 ); if hDevice=INVALID_HANDLE_VALUE then Exit; try pInData := PSendCmdInParams(@Buffer); pOutData := @pInData^.bBuffer; with pInData^ do begin cBufferSize := IDENTIFY_BUFFER_SIZE; bDriveNumber := 0; with irDriveRegs do begin bFeaturesReg := 0; bSectorCountReg := 1; bSectorNumberReg := 1; bCylLowReg := 0; bCylHighReg := 0; bDriveHeadReg := $A0; bCommandReg := IDE_ID_FUNCTION; end; end; if not DeviceIoControl( hDevice, DFP_RECEIVE_DRIVE_DATA, pInData, SizeOf(TSendCmdInParams)-1, pOutData, W9xBufferSize, cbBytesReturned, nil ) then Exit; finally CloseHandle(hDevice); end; end; with PIdSector(PChar(pOutData)+16)^ do begin ChangeByteOrder(sSerialNumber,SizeOf(sSerialNumber)); SetString(Result,sSerialNumber,SizeOf(sSerialNumber)); end; end; // ============================================================= var s : String; rc : DWORD; begin s := GetIdeDiskSerialNumber; if s='' then begin rc := GetLastError; if rc=0 then WriteLn('Drive IDE não suporta SMART') else WriteLn(SysErrorMessage(rc)); end else WriteLn('Número serial do disco: ''', s,''''); ReadLn; end. Notas: - Este código funciona somente em drives IDE que suportam o S.M.A.R.T. (Self Monitoring, Analysis and Reporting Technology). Para drives SCSI-2 veja: http://www.delphi3000.com/articles/article_1174.asp - Hardware IDE deve suportar S.M.A.R.T. e o S.M.A.R.T. deve estar habilitado - Windows 95 não suporta este recurso antes da versão 95 OSR2. Este código funciona com Windows 95 OSR2/98/98SE/Me/NT4/2000/XP. - Windows 9x: SMARTVSD.VXD precisa estar instalado: basta copiá-lo da pasta de sistema (normalmente C:\WINDOWS\SYSTEM) para a pasta System\IoSubsys e reiniciar. - Windows NT/2000/XP: Este código não requer privilégios administrativos e roda sobre qualquer conta. - Para mais informações sobre a SMART IOCTL API veja o exemplo SmartApp no MSDN Knowledge Base: http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B208048 - Se você precisar de informações sobre uma unidade escrava ou uma unidade que esteja conectada numa controladora IDE secundária então veja o exemplo em minha homepage: http://home.earhlink.net/~akonshin/ - Para maiores informações sobre S.M.A.R.T. ou outros padrões relacionados com dispositivos de armazenamento ATA veja o Technical Committee T13 homepage: http://www.t13.org/ Você pode encontrar mais informações relacionadas com o tema deste artigo nas páginas 87-105 do documento http://www.t13.org/project/d1321r3.pdf. ______________ Alex Konshin é engenheiro Sr de software e ex-programador Delphi que agora programa em Delphi por hobby, mas continua sendo mencionado como colaborador no Delphi 7. Você pode encontrar alguns componentes freeware com código fonte no web site: http://home.earthlink.net/~akonshin/ ________________________________________________________________________ How would you rate the newsletter? Rate the newsletter in the Top 200 Delphi ranking! http://top200.jazarsoft.com/delphi/rank.php3?id=latium ________________________________________________________________________ 5. Notícias Borland apresenta Optimizeit Profiler para .NET =============================================== Optimizeit Profiler é uma nova ferramenta de validação de performance para a plataforma .NET. Optimizeit Profiler suporta todo código .NET gerenciado e facilita a otimização de performance pela disponibilização de perfis de preformance em tempo real que rapidamente identificam e priorizam aspectos de performance, indicando as linhas de código mais relevantes para a imediata resolução do problema, permitindo que os programadores produzam aplicativos .NET de alta performance em tempo reduzido. Para maiores informações: - Optimizeit Profiler http://www.borland.com/opt_profiler/index.html - Borland Launches Performance Assurance Solution for Microsoft .NET Framework http://www.planetanalog.com/pressreleases/bizwire/57199 - Microsoft Partners Rally Around Visual Studio .NET http://www.internetnews.com/dev-news/print.php/1582361 SideWinder: Borland está desenvolvendo um IDE C# IDE para .NET ============================================================== A Borland esté trabalhando no desenvolvimento de um IDE para C#, atualmente denominado SideWinder (até o momento esse é apenas o codinome público do produto e não significa, necessariamente que será o nome do produto na época de seu lançamento. Algumas novidades e artigos sobre SideWinder: - 28-JAN-2003: Borland Becomes First to License the Microsoft .NET Framework Software Development Kit http://www.certificationsuccess.com/index.cfm?pageid=401 - 31-JAN-2003: Borland prepares new IDE for .Net http://www.vnunet.com/News/1138406 - 04-FEB-2003: Borland moves ahead with .NET tools; inks pact with Microsoft http://www.adtmag.com/article.asp?id=7224 - 04-FEB-2003: Borland to offer IDE for Microsoft's .Net http://www.infoworld.com/article/03/02/04/HNsidewinder_1.html - 04-FEB-2003: Borland targets .Net developers http://news.com.com/2100-1001-983321.html http://msnbc-cnet.com.com/2100-1001-983321.html http://www.businessweek.com/technology/cnet/stories/983321.htm - 07-FEB-2003: First SideWinder screenshots http://www.drbob42.com/SideWinder/home.htm - 14-FEB-2003: Interview with Jason Vokes (Borland EMEA) about .NET development at Borland, including SideWinder and Delphi for .NET http://www.drbob42.com/SideWinder/interview.htm SideWinder será o primeiro produto do projeto Galileo, um projeto muito maior da Borland apresentado na BorCon 2002: * Borland to wield tools against Microsoft - By Wylie Wong http://news.com.com/2100-1001-954958.html O objetivo do Galileo é oferecer um IDE 100% .NET com suporte a múltiplas linguagens e direcionado a múltiplas plataformas (um tipo de Visual Studio .NET cross-platform, se você preferir, mas que será muito mais que isso já que, por exemplo, integrará tarefas de modelagem e design). BorCon Lite 2003 ================ Se você adora o Delphi, você deve unir-se a David I, John Kaster, Ray Konopka, Michael Li, Cary Jensen e outros desenvolvedores Delphi em Houston em Março na BorCon Lite 2003. http://community.borland.com/article/0,1410,29781,00.html Outras Notícias e Artigos ========================= * Flurry Of New Tools Target Microsoft Visual Studio .Net Developers by Gregg Keizer http://www.techweb.com/wire/story/TWB20030211S0004 * Microsoft rebuilds .Net tools - by Martin LaMonica Borland tools will be integrated into Visual Studio.Net. http://news.com.com/2100-1001-984129.html * .NET: Great Hope or Great Hype - by Alan C. Moore, Ph.D www.delphizine.com/opinion/2003/03/di200303fn_o/di200303fn_o.asp * Short interview with David Intersimone (Borland's VP of Developer Relations) about Kylix. http://www.programmersparadise.com/promo/QA_062402_2.pasp * Borland Defies the Skeptics - by Elise Ackerman Days after President and CEO Dale Fuller joined Borland Software in April 1999, an industry pundit singled out the Scotts Valley company as one of five tech firms unlikely to make it to the new millennium. Fuller has been gleefully quoting the prediction ever since... http://www.belleville.com/mld/belleville/business/4865330.htm * Sip From The Firehose: A message from Borland to developers - David I We've begun an advertising campaign targeted at executives in charge of development. The topic? Borland's new application lifecycle studio of products. http://community.borland.com/article/0,1410,29597,00.html * Blog with Delphi and Borland news http://svd.blogspot.com/ ________________________________________________________________________ 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 ________________________________________________________________________ 6. 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 ________________________________________________________________________ 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/ ________________________________________________________________________ 7. 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 ------------------- * LMD DesignPack - por LMD Innovative - Shareware (EUR 59) Cinco componentes para acrescentar funcionalidade de edição em suas aplicações (um clone do Object Inspector clone, um designer de formulários e controles baseados em diagramas), com código fonte completo e vários projetos de exemplo demonstrando algumas das funcionalidades avançadas- um designer de relatórios está de fato incluído! http://www.ceberus.com/lmd/products/index.php3#P4 * NTTools 7 For Delphi - por i-tivity (US$39.95) Para de debater-se com a API de segurança do Windows NT! Tenha sua cópia do NTTools 7 para Delphi 4/5/6/7 agora e economize incontáveis horas com essa coleção de 40 componentes VCL escritos especificamente para lidar com as funções de segurança do Windows NT. Código fonte complete está incluído com o produto. http://www.i-tivity.biz/nttools.htm Freeware -------- * ODBCTools For Delphi - by i-tivity (with source) ODBCTools is a complete replacement package for the BDE and consists of the following components: ODBC_Database, ODBC_Table, ODBC_Exec, ODBC_Conformance, ODBC_TableList, ODBC_FieldList, ODBC_Info, ODBC_PrimaryKeys, ODBC_Procedures, ODBC_DSNList and ODBC_Admin. http://www.i-tivity.biz/odbctools.htm * TurboPower SysTools v4.03 - by TurboPower (with source) A library of utility routines & algorithms for Delphi, C++Builder and environments that support COM. Among other things, it supports 1-D and 2-D bar codes, sorting, money routines, logging classes, high- precision math and a run-time math expression analyzer. https://sourceforge.net/projects/tpsystools/ * Interbase 6.0 Open Edition Can't find the link to download the free version of Interbase at Borland's web site? Well, here it is: http://info.borland.com/devsupport/interbase/opensource/ Artigos, Dicas e Truques ======================== * New Delphi feature: Multiple inheritance for interfaces in Delphi for .NET - by John Kaster Update 3 of the Delphi for .NET preview includes compiler enhancements for multiple inheritance for interfaces. http://community.borland.com/article/0,1410,29779,00.html * Delphi for .NET preview Update 3 available for download - John Kaster An update containing improvements to the compiler, RTL and VCL of the Delphi for .NET preview is now available for download. http://community.borland.com/article/0,1410,29780,00.html * Implementing Callbacks to a Datasnap Server Interface - Xavier Pacheco Add the ability for a Datasnap Server to call your client application through a callback. http://community.borland.com/article/0,1410,29539,00.html * Metadata.NET - by Noel Rice This article shows the capability of requesting information from .NET providers at runtime and deals with Databases, Table, Fields, constraints, Index and data Types. http://community.borland.com/article/0,1410,29708,00.html * Exchanging Raw Data over the Network 2 - by Zarko Gajic An introduction to sending data over the network using Delphi + Indy. Focuses on sending / receiving record data and raw (binary) data using TCP/IP connections. http://delphi.about.com/library/weekly/aa020403a.htm * How to display fonts in a list box - by m3Rlin www.delphifaq.net/modules.php?op=modload&name=FAQ&op=view&id=216 * How to delete a file the next time the PC is rebooted - by m3Rlin www.delphifaq.net/modules.php?op=modload&name=FAQ&op=view&id=217 * How to convert a long filename to a short filename - by m3Rlin www.delphifaq.net/modules.php?op=modload&name=FAQ&op=view&id=218 * How to create a Access-Database (mdb) without Access - by Alex Schlecht Using MS-Jet-Engine to create a *.mdb File. http://www.delphi3000.com/articles/article_3536.asp * Advanced Indy 1: Server Side Techniques - by Romeo Lefter http://www.delphi3000.com/articles/article_3538.asp * Creating "Hidden" Registry Values - by Daniel Wischnewski Using the undocumented MS Native API. http://www.delphi3000.com/articles/article_3539.asp * Delphi and Automation with Word - by Herbert Poltnik Automation allows one application to control another application. The application being controlled is called an automation server (in our case Word). The application controlling the server is called an automation controller. http://www.delphi3000.com/articles/article_3541.asp * Event Chain Mechanism - by Alex Wijoyo How can we attach more than one event handler to a component event? http://www.delphi3000.com/articles/article_3543.asp * BPL Analyze - by quark quark What in BPL? How many Units in BPL? http://www.delphi3000.com/articles/article_3548.asp * How to load big bitmaps with few memory requirement? - by Alex Sanchez http://www.swissdelphicenter.ch/en/showcode.php?id=1526 * How to disable CTRL+ALT+DELETE under XP? - by Andreas Kirchmeyer http://www.swissdelphicenter.ch/en/showcode.php?id=1528 * How to set the background color of a MDI Form? - by Alex Pierson http://www.swissdelphicenter.ch/en/showcode.php?id=1554 * How to resize an image (undistorsioned result image)? - Josep Ma Feliu http://www.swissdelphicenter.ch/en/showcode.php?id=1463 * How to show a preview for a TRichEdit/ TRxRichEdit? - by Robert Dunn http://www.swissdelphicenter.ch/en/showcode.php?id=1467 * How to use the Microsoft Speech API? - by Marco Parreira http://www.swissdelphicenter.ch/en/showcode.php?id=1572 * How to print a TStringgrid? - by Reinhard Schatzl http://www.swissdelphicenter.ch/en/showcode.php?id=1577 * How to enumerate the logged in users on a Remote or Local NT Workstation? - by Manfred Ruzicka http://www.swissdelphicenter.ch/en/showcode.php?id=1578 * How to install an INF file with Delphi? - by patrick http://www.swissdelphicenter.ch/en/showcode.php?id=1585 * Creating an Internet Explorer-style User Interface, Part 1 By Fabio Lucarelli <http://www.pinnaclepublishing.com/dd/DDmag.nsf/0/ 95505F4719043C1185256CC300743624> Tutoriais ========= * The Dynamics of Agile Software Processes, Part I - by Randy Miller Part one describes the characteristics of good agile software development process design. http://bdn.borland.com/article/0,1410,29726,00.html * Adding Auto-Persistence Capabilities To Options Dialogs - by D. Jewell How to avoid the pain of re-coding the saving and restoring of your user-configurable settings for each and every new application, with a little bit of lateral thinking. http://www.thedelphimagazine.com/samples/1560/1560.htm * Using Customisable Keyboard Shortcuts - by Stephen Posey Demonstrates how keyboard shortcuts can be very easy using Actions. http://www.thedelphimagazine.com/samples/1521/1521.htm * Extracting XML Data From SQL Server 2000 - by Jani Järvinen Describes how to use the XML features built into SQL Server 2000 from your Delphi applications, through ADO, HTTP and SOAP. http://www.thedelphimagazine.com/samples/1507/1507.htm * Enhance Reuse by Embracing Service-Oriented Architecture - T Landgrave Thinking of your apps strictly in terms of components can limit your reuse options. Find out how to increase your options by defining applications as services. http://builder.com.com/article.jhtml?id=u00320030129lan01.htm * Adventures in Kylix - by James R. Knowles A blog style tutorial for Kylix. http://www.ifm-services.com/people/jamesk/kylix/ ________________________________________________________________________ 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/p0044.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!






