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.lmdinnovative.com/products/vcl/lmddesignpack/
* 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://top100borland.com/in.php?who=20
________________________________________________________________________
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/?r=latiumsoftwarecomenpascal
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.seagate.com/support/disc/manuals/ata/d1153r17.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/
________________________________________________________________________
Support us! Vote for the Pascal Newsletter in The Programming Top 100!
http://top100borland.com/in.php?who=20
________________________________________________________________________
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://news.zdnet.co.uk/software/0,1000000121,2129909,00.htm
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.cnet.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://top100borland.com/in.php?who=20
________________________________________________________________________
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://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
________________________________________________________________________
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
________________________________________________________________________
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.lmdinnovative.com/products/vcl/lmddesignpack/
* 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.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/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.
________________________________________________________________________
|