Boletín Pascal #33 - 04-MAR-2002
INDICE
1. UNAS PALABRAS DEL EDITOR
2. EN LAS NOTICIAS
- Delphi 6 Update Pack 2 disponible
- PocketStudio 1.1
- Cambios de nombre
- Borland soportará .NET
- ¡Vota por Borland!
- Delphi Informant Magazine Readers Choice Awards 2002
- RAD Windows Database Development Survey
- Software antiguo: Turbo Pascal v5.5
- Borland actualiza los Contratos de Licencia para el Usuario Final
- Servicio Web VCL Scanner
- Concurso de programación: aplicaciones multi-hilos
- Servidor FTP público
3. HOW TO PROTECT YOUR SOFTWARE AGAINST PIRACY
4. SAVE POSITIONS OF TCOOLBAR BANDS
5. GOING UNDERCOVER IN DELPHI
6. MOSTRANDO EL DIÁLOGO "BUSCAR CARPETA" DE WINDOWS
7. FOROS
8. DELPHI EN LA RED
- Componentes, librerías y aplicaciones
. Shareware/Comercial
. Freeware
- Artículos, trucos y consejos
- Tutoriales
- Otros enlaces
________________________________________________________________________
1. UNAS PALABRAS DEL EDITOR
A pesar de la colaboración de editores y traductores, que agradezco
muchísimo, la presión del factor tiempo hace que hoy por hoy sea casi
imposible llegar con emisiones simultáneas del boletín en inglés y en
español con la periodicidad a la que uno aspira. Se abren entonces dos
caminos alternativos: uno es separar completamente ambas ediciones y
permitir que la edición en español se maneje de manera independiente,
con sus propios tiempos para traducir los artículos y ser publicada, y
el otro sería aceptar contenidos sin traducir. En esta edición he
optado por la segunda alternativa, pues caso contrario creo que esta
publicación se hubiera demorado varios días más y no quería llegar a
eso. Me gustaría escuchar sus opiniones al respecto.
Como sea, en la próxima edición estaremos regalando -entre quienes
colaboran artículos al boletín- una licencia de Greatis Print Suite,
un conjunto de componentes de vista previa e impresión, provisto por
gentileza de Greatis Software: http://www.greatis.com/delphicb/printsuite/
Nos gustaría regalar licencias de variados productos en todas las
ediciones del boletín, y no sólo entre los que colaboran material sino
también entre todos los suscriptores, pero eso no es posible si el
boletín no alcanza una cantidad de suscriptores que lo haga interesante
a los desarrolladores como medio de publicidad para sus productos, y eso
no ocurrirá si no votan por el boletín en los rankings, así que me
gustaría invitarlos a que voten siguiendo los enlaces que figuran cerca
del final del boletín. Desde ya muchas gracias.
Ernesto De Spirito
eds2008 @ latiumsoftware.com
________________________________________________________________________
JfControls Lib. Multilenguaje. Multiapariencia. Skins. Privilegios. Más
de 40 componentes integrados y personalizables. Múltiples problemas de
programación resueltos. Administración centralizada de recursos. Para
Delphi 3-2006 y C++ Builder 3-6. http://www.jfactivesoft.com/spindex.htm
________________________________________________________________________
2. EN LAS NOTICIAS
Delphi 6 Update Pack 2 disponible
=================================
El segundo Update Pack está disponible para todas las ediciones de
Delphi 6 (incluyendo la Open Edition) en
www.borland.com/devsupport/delphi/downloads/ds_registeredusers.html
Si usas Delphi 6, se recomienda que bajes e instales este parche (no es
necesario haber instalado previamente el Update Pack 1).
Este Update Pack corrige algunos problemas con Delphi 6 y contiene
pequeñas mejoras, pero los usuarios de la Professional Edition encon-
trarán que este Update Pack les permitirá construir aplicaciones
cliente que consuman Servicios Web de conformidad con W3C usando SOAP,
XML, WSDL y más! Si deseas más información acerca de este Update Pack:
http://community.borland.com/article/0,1410,28405,00.html
PocketStudio 1.1
================
Pocket Technologies, Inc. anuncia una versión de PocketStudio, su IDE
tipo Delphi para desarrollo Palm OS, que ahora viene en tres ediciones:
- PocketStudio Professional Version 1.1 (Download Only).... $ 199.99
- PocketStudio Professional Version 1.1 (Training Included) $ 249.99
- PocketStudio Standard version 1.1 (Download Only)........ $ 59.99
Para más información, visita http://www.pocket-technologies.com
Cambios de nombre
=================
Developer 21 es ahora vpsource.com, y Kylix Developer Network ahora es
CodeBake.com:
* vpsource.com
Portal for webmasters and programmers (Delphi, C++, VB, Pascal), also
vp webdesign and programming services, e-store. Many more!
http://www.vpsource.com
* CodeBake.com
A website designed for developers to exchange and share resources and
information about Kylix, Delphi and Linux. CodeBake.com's mission is
to provide quality information to the developer community by sharing
information and resources so that everyone can benefit.
http://www.codebake.com
Borland soportará .NET
======================
El 12 de Febrero pasado, Borland anunció que Delphi y C++Builder sopor-
tarán la Plataforma Microsoft .NET durante la segunda mitad del 2002.
Estas herramientas RAD soportarán el Lenguaje Intermedio de Microsoft
(MSIL - Microsoft Intermediate Language), permitiendo a los desarrolla-
dores preservar su inversión en habilidades RAD y código fuente.
* Borland .NET strategy
http://www.borland.com/net/
* Borland Unveils Product Strategy for Microsoft .NET Platform
Announces Delphi and C++Builder Support for Microsoft .NET Platform
http://www.borland.com/about/press/2002/net_platform.html
¡Vota por Borland!
==================
El Web Services Journal (http://www.sys-con.com/webservices/) está
tomando votos para el First Annual WSJ Readers' Choice Awards. Puedes
votar por tus productos de Servicios Web favoritos en 17 categorías:
http://www.sys-con.com/webservices/readerschoice
Si deseas saber qué productos Borland están nominados, e incluso votar
por todos ellos juntos, vé a http://www.borland.com/vote_borland.html
Delphi Informant Magazine Readers Choice Awards 2002
====================================================
La revista Delphi Informant Magazine (http://www.delphizine.com/)
también está tomando votos para sus 2002 Readers' Choice Awards. Puedes
votar por tus componentes y utilidades favoritas en 21 categorías:
http://www.delphizine.com/ballot2002/Default.asp
RAD Windows Database Development Survey
=======================================
Borland está llevando a cabo una encuesta entre los usuarios acerca del
soporte para el desarrollo de bases de datos de sus herramientas RAD
para Windows. Tus respuestas le ayudarán a Borland a guiar sus esfuerzos
futuros en el soporte para desarrollo de bases de datos en Delphi y C++
Builder. Es sólo un simple cuestionario:
http://infopoll.net/Live/surveys/s15713.htm
Software antiguo: Turbo Pascal v5.5
===================================
Sí, así es. El viejo y querido Turbo Pascal 5.5 ahora está disponible
para descargar gratis del sitio de Borland:
http://community.borland.com/article/images/20803/tp55.zip
Por más información sobre Turbo Pascal 5.5 y esta descarga:
http://community.borland.com/article/0,1410,20803,00.html
Borland actualiza los Contrato de Licencia para el Usuario Final
================================================================
El 15 de Enero pasado, Borland admitió que los Contratos de Licencia
para el Usuario Final (EULAs - End User License Agreements) de los
nuevos productos Borland (Delphi 6, C++Builder 6, Kylix 2 y JBuilder 6)
eran específicos de los grandes clientes empresariales que compran
licencias en volumen, olvidándose de los individuos y compañías que
compran licencias individualmente. El último 13 de Febrero Borland
publicó los nuevos EULAs que reemplazan a los anteriores:
http://community.borland.com/article/0,1410,28401,00.html
Servicio Web VCL Scanner
========================
Esta es una versión Servicios Web de VCL Scanner, la aplicación que
genera un informe de uso de clases VCL basado en los ejecutables, DLLs
y paquetes que se encuentren en su disco duro. El código fuente de esta
nueva versión, tanto del cliente como del servidor, está disponible para
descarga, y por usar el programa y enviar el informe a Borland obtienes
una chance de ganar una licencia de un producto Borland!
http://community.borland.com/article/0,1410,28438,00.html
Concurso de programación: aplicaciones multi-hilos
==================================================
Las reglas son fáciles: tienes hasta el 29 de Marzo para enviar una
aplicación multi-hilos (con código fuente completo) que provea una
retroalimentación visual del progreso de los hilos. Puedes desarrollarla
usando cualquier herramienta de desarrollo Borland. Puedes participar
con tantas aplicaciones como quieras. Los envíos deben realizarse en la
CodeCentral de Borland:
//codecentral.borland.com/codecentral/ccweb.exe/contest?contest_id=1
Para más información acerca de este concurso:
http://community.borland.com/article/0,1410,28448,00.html
Servidor FTP público
====================
Cristóbal Megido Almaraz <cristobal @ ineteca.com> pone su servidor FTP
a disposición de los usuarios de Delphi tanto para subir como para
descargar tutoriales, componentes, etc. Esperamos que con el tiempo la
comunidad vaya subiendo material al servidor, y de momento ya están allí
los archivos con los boletines del 2000 y 2001:
programacion/publicaciones/latium software/2000.rar
programacion/publicaciones/latium software/2001.rar
Los datos para conectarse al servidor son:
Servidor/Host: 195.55.98.183
Puerto.......: 21
Usuario......: latiumsoftware
Contraseña...: delphi
Sólo habrá 25 conexiones concurrentes en pro de una buena conexión, y
salvo por inconvenientes técnicos o tareas de mantenimiento, el servidor
funcionará 24/7.
________________________________________________________________________
Greatis Print Suite Pro v1.7 - Un conjunto de componentes VCL que ofrece
características avanzadas de vista previa e impresión para sus aplica-
ciones en Delphi y C++ Builder. Olvídese de BeginDoc, EndDoc, NewPage y
otros procedimientos de bajo nivel. Sólo dibuje su trabajo de impresión
y Print Suite hará el resto. >>>>> http://www.greatis.com/delphicb/printsuite/
________________________________________________________________________
3. HOW TO PROTECT YOUR SOFTWARE AGAINST PIRACY
By Fernando Martins <fmp.martins@megamail.pt>
Before I start, let me tell you that whatever protection system you use
it's just a matter of time until someone breaks it. So what you must
have in mind is: "what is the best protection system for this special
case?" You also must have in mind that the best you got is still
breakable.
Once I needed to develop an application where preventing piracy was a
must. I did some investigation and found out what were the possible
systems to prevent this. I also did some investigation on how to break
those same protection systems. Let me say that I got a bit disappointed.
I thought that mass protection systems would be better than they are...
Here's a summary of what I found among the most common:
- Anti-Copy: prevents the disk copy, CD in this case.
- Disk check: when application starts up checks for the original disk,
CD in this case.
- Hardware check-up: you plug-in some hardware on your RS-232 port and
check for it in your application from time to time.
- Key activation: the software requires a key to be activated.
Here's what I found out about breaking these systems:
- Anti-Copy: can be broken with a "clone copy" (bit-by-bit) of the
disc...
- Disk check: can be broken with a "clone copy" also...
- Hardware check-up: read too much complains about it interfering with
the system, and it also generates too much calls into your help-line,
plus read somewhere that this can be fooled through software also...
- Key activation: once the user registers, he can spread the key among
friends and everybody can activate the application. If someone takes
some time, he can break the code and create a patch to ignore
activation or create a key generator.
Looking at this, you must agree that it didn't look too good... After
thinking a while on each of these systems I concluded that:
- Anti-Copy: to easy to break.
- Disk check: to easy to break.
- Hardware check-up: causes to much troubles and can make customers to
become unsatisfied.
- Key activation: would be great if key proliferation could be
stopped.
So I stick on the key activation idea and gave it a second thought,
exploiting the pros and cons of this system. I simulated the regular use
of this system to better understand it:
1. Get the product
2. Install the product
3. Request key
4. User requests the key
5. User gets the key
6. User activates the product
Here's another way to do it:
1. Get the product from friend
2. Install the product
3. Request key
4. User asks friend for friend's key
5. User uses the friend's key
I concluded that it was definitely the best - having in mind what I
needed to protect this specific product - if I could prevent the key
from spreading. Preventing key spreading became my next goal.
I knew I needed something that could give me guarantees that the
application being activated was a legal copy and not a pirate one.
How could I guarantee this? How do you prove that what you own is
legal? How do you prove that you bought something? The answer was
easy: invoice. Every product sold comes with an invoice, which has
different data, like the invoice number, date and entity sold to.
My next step was using the invoice data when activating the product.
But invoice data "per se" was not enough, I mean, if someone gives a
copy of the product can also give the invoice data to activate the
product.
I simulated the piracy process again, using the invoice data:
1. Get the product from friend
2. Install the product
3. Request the invoice data
4. User requests the invoice data from friend
5. Request the key
6. User requests the key from friend
Now, this has the same hole that usual key activation has...
I knew that I needed to force the key request for all installed
products. That became my next goal. How could I force the user to
request a new key? After some more neuron work, I came up with the
answer: time.
On my simulations, both users, the legal an non-legal, did the same
steps to activate the product, but they didn't do it at the same
time... Time is continuous and non-repeating, so time was the answer.
What did I do with time then? Basically, I generated a key using it. To
activate the product you must have a key, which is generated using the
invoice data and the time you have installed the product in the system.
Here's how I made it work:
1. After product installed, an encryption of the current time - year,
month, day, hour, minute, second, millisecond - is saved somewhere in
the system. This is easy to do and there's a lot of ways to hide
something is the system.
2. Invoice data request.
3. Generate a "request-key" using the time from 1. and the invoice data
from 2.
3. Inform the user that it must request the activation key for the
"request-key".
4. Key for product activation request.
I had found the solution.
To request the activation key, the user must specify what is the
"request-key", which is guaranteed to be unique, since time is involved
and the algorithm I used makes sure of that. ;)
Here's a simulation of the legal case:
1. Buy product and receive invoice
2. Install the product
3. Request invoice data
4. Inform user what the "request-key" is
5. User requests the activation key referring the "request-key" and
the invoice data
6. User receives the key
7. User activates the product
It's quite simple, really, the only "visible" change from the original
key activation system is the "request-key" that the user must specify
when requesting the key.
But this is just half the solution, the other half is you controlling the
number of installations. But that is quite easy. Every time a key is
requested, you know who is requesting it, since the invoice data is
specified, so if you got a customer that has 154 key requests in one
month, there's something wrong... :)
I've also exploit the possible holes on the system:
1. A couple of non-legal installations may be done, the customer - or
"customer friend" - may say that the system crashed and must
reinstall... That will just work for a couple of non-legal
installations, since you may ask why that is the 98th key request
done this week or the 3rd this day...
2. Disk clone can be done. There are tools on the market that clone
hard-disks. But what the heck, you cannot prevent that.
3. Someone takes some time and patches the security or creates a key
generator. Like said in the beginning, there's no way to prevent
this...
This system does not work just as a piracy stopper, it also prevents it.
When the invoice data is requested, it's more unlike to someone to give
it away, since you can track the customer that gave the invoice data to
a friend, that gave it to a friend, that gave it to a friend... The
original customer knows he can get troubles with the law by giving that
information.
If you get some "customer" requesting its 10th activation key because
"We got a new computer that is faster and want the application running
on it.", you can say "Why have you bought 9 computers in the last 4
weeks?..."
If you get some "customer" requesting its 50th activation key because
"the system crashed and need to reinstall everything", you can say
"Maybe there's something wrong, I'll send someone there to take a
look at it. Please have your invoice in hand..."
If you get some "customer" requesting its 154th activation key, you
can say that unless proven to be the legal owner of the product you
will not give the activation key... The "customer" may say he is - he
even can be -, but unless he has the invoice, he cannot prove it...
And if you want to be a bit "nasty", you code a special key that will
show the "Do you know that non-legal software may give you 3 years in
jail?" and uninstalls the application from the system... The "customer"
will get the point. ;)
__________________
Nota del editor: Antes que realice cualquier comentario sobre este
artículo, por favor léalo dos veces. El autor nunca dice que su
solución sea original, que la suya sea la última o la mejor solución,
que esta solución sea aplicable o conveniente en todos los casos, o
que su solución no sea vulnerable...
________________________________________________________________________
4. SAVE POSITIONS OF TCOOLBAR BANDS
By Patrick de Kleijn http://www.patrick.nl/
This was fun to do.
Yesterday's Delphi3000.com Newsletter #76 dropped a line on a reader's
request for functions to restore the positions of TCoolBand objects at
run-time. Lacking a property to check how many band are in place
(something like CoolBar.Bands.Count) I thought of another way to test
if all bands are stored.
I have included the properties that tend to change mostly (Index and
Width) but it's easy to add other properties to the Set and Get clauses
which I marked in the comments.
Parse all available coolbands and write their properties to file:
Store(CoolBar1, 'c:\coolbar1.ini');
Parse all available coolbands and check for their properties by matching
IDs:
Restore(CoolBar1, 'c:\coolbar1.ini');
procedure Store(aCoolBar: TCoolBar; aFilename: string);
var I, ID: Integer;
aFile: TStringList;
begin
I := 0; ID := 0;
aFile := TStringList.Create;
{ Parse all available coolbands }
while I=I do // Make this an endless loop
begin
try
ID := aCoolBar.Bands.Items[I].ID;
except
{ Raise an EAbort exception to break out of the endless loop
when properties of all coolbands are written to file. We know
all coolbands are parsed when EListError is raised if we try
to collect properties of a coolband that does not exist }
on EListError do
begin
{ All done? Save! }
aFile.SaveToFile(aFilename);
aFile.Free;
Abort; // Crack the loop with EAbort
end;
end;
{ Write it's properties to file - Set }
aFile.Add(IntToStr(ID) + 'Index=' +
IntToStr(aCoolBar.Bands.Items[I].Index));
aFile.Add(IntToStr(ID) + 'Width=' +
IntToStr(aCoolBar.Bands.Items[I].Width));
I := I+1;
end;
end;
procedure Restore(aCoolBar: TCoolBar; aFilename: string);
var I, ID, J: Integer;
aFile: TStringList;
begin
I := 0; ID := 0;
aFile := TStringList.Create;
aFile.LoadFromFile(aFileName);
{ Parse all available coolbands }
while I=I do
begin
try
ID := aCoolBar.Bands.Items[I].ID;
except
on EListError do Abort;
end;
{ Restore properties from file - Get }
aCoolBar.Bands.Items[I].Index :=
StrToInt(aFile.Values[IntToStr(ID)+'Index']);
aCoolBar.Bands.Items[I].Width :=
StrToInt(aFile.Values[IntToStr(ID)+'Width']);
I := I+1;
end;
// Result := True;
end;
Enjoy! Regards,
Patrick de Kleijn
The Netherlands
________________________________________________________________________
5. GOING UNDERCOVER IN DELPHI
By Charl Linssen <charl @ atomasoft.com>
By default, your application has a corresponding button in the taskbar.
You can switch to it using the [Alt] + [Tab] combination, and it shows
in the 'Close Program' window (when you press [Alt] + [Ctrl] + [Del]).
Suppose you don't want your application to show there, suppose you want
to hide it completely from the user.
In this tutorial I'll give you some code snippets to show you how that
is done.
>> Disable task switching
You can block [Alt] + [Tab] task switching, as well as other key
combinations like [Ctrl] + [Esc] using the SystemParametersInfo API.
This tricks Windows into thinking the screensaver is running.
procedure SystemKeys(Disable: Boolean);
var OldVal : LongInt;
begin
SystemParametersInfo
(SPI_SCREENSAVERRUNNING,
Word(Disable),
@OldVal,
0);
end;
After a call to SystemKeys(True) the program runs, but you are unable to
Alt-Tab to it nor switch to it in the task list. You can't invoke the
Start button, either.
>> Hiding the application's taskBar button
A major part in going undercover, is hiding your application's button
from the taskbar. That can be solved easily, by inserting the following
code into the OnCreate event:
procedure TForm1.FormCreate(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE)
or WS_EX_TOOLWINDOW );
ShowWindow(Application.Handle, SW_SHOW);
end;
>> Hide from the 'Close Program' box
Now that you've hid you app from task switching and the taskbar, it can
still be terminated, using the 'Close Program' box. That can be solved
_really_ easily. To do so, you have to remove your programs title, which
normally also shows in the taskbar button. That is done like this:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.Title := '';
end;
When you combine these things and add a 'Form1.Hide', there's no way
that app is going to shut down (except when the computer is rebooted,
of course).
________________________________________________________________________
6. MOSTRANDO EL DIALOGO "BUSCAR CARPETA" DE WINDOWS
Por Ernesto De Spirito <eds2008 @ latiumsoftware.com>
Si quieres mostrar el diálogo estándar "Buscar carpeta", tienes que
llamar la API SHBrowseForFolder. He visto componentes que encapsulan
la llamada a esta API, pero realmente no me gusta meter más y más
componentes al IDE de Delphi cuando las tareas se podrían implementar
fácilmente como funciones en una unidad, así que he aquí una función
BrowseForFolder que encapsula las complejidades de la llamada a
SHBrowseForFolder:
Sintaxis:
function BrowseForFolder(Title: string; RootCSIDL: integer = 0;
InitialFolder: string = ''): string;
Parámetros:
Title: El texto de la etiqueta en la parte superior de la ventana de
diálogo "Buscar carpeta"
RootCSIDL (opcional): El CSIDL de la carpeta especial que define el
subárbol a explorar. De manera predeterminada, es el el escritorio
(CSIDL_DESKTOP = 0), pero se puede limitar el árbol que el usuario
puede explorar usando constantes como CSIDL_DRIVES, CSIDL_NETWORK,
CSIDL_PERSONAL, CSIDL_PROGRAMS y en general puede usar cualquier
otro valor aceptado por la API SHGetSpecialFolderLocation (ver la
unidad ShlObj).
InitialFolder (opcional): La carpeta inicialmente seleccionada en el
treeview. De modo predeterminado es la carpeta raíz (especificada
por el parámetro RootCSIDL, o el escritorio si se omite).
Valor de retorno:
La función devuelve el camino completo de la carpeta seleccionada por
el usuario. El valor de retorno será la cadena vacía ('') si el
usuario canceló el diálogo.
Compatibilidad:
La función es compatibile con la versión Shell 4.0 de Shell32.dll, así
que no requiere IE 4.0 o superior.
Llamadas de ejemplo:
Carpeta := BrowseForFolder('Elija la carpeta destino:');
Carpeta := BrowseForFolder('Elija la carpeta destino:', CSIDL_DRIVES);
ShowMessage('Carpera seleccionada: "' + BrowseForFolder(
'Elija la carpeta destino:', 0, 'C:\Delphi') + '"');
El código fuente de la función se incluye en el ejemplo adjunto a este
boletín.
________________________________________________________________________
7. FOROS
Delphi
======
Foro abierto
------------
Si estás en la etapa de aprendizaje o si no te agradan los foros
discriminados por niveles, este foro es para ti.
http://espanol.groups.yahoo.com/group/delphi-abierto
Para suscribirte, también puedes hacerlo desde la web o por email:
http://espanol.groups.yahoo.com/group/delphi-abierto/join
delphi-abierto-subscribe@gruposyahoo.com
Nivel Intermedio
----------------
Si sabes mucho de Delphi, pero aún te falta largo trecho para ser un
gurú, tal vez prefieras participar en el foro para programadores en
Delphi de nivel intermedio:
http://espanol.groups.yahoo.com/group/delphi-intermedio
Para suscribirte, también puedes hacerlo desde la web o por email:
http://espanol.groups.yahoo.com/group/delphi-intermedio/join
delphi-intermedio-subscribe@gruposyahoo.com
Nivel Avanzado
--------------
Si te crees un gurú, y quieres estar en un foro sólo para gurús, lo más
probable es que en realidad no necesites estar en un foro, pero bueno,
por si acaso, este es nuestro foro para programadores en Delphi de
nivel avanzado:
http://espanol.groups.yahoo.com/group/delphi-avanzado
Para suscribirte, también puedes hacerlo desde la web o por email:
http://espanol.groups.yahoo.com/group/delphi-avanzado/join
delphi-avanzado-subscribe@yahoogroups.com
Grupo Kylix
===========
El foro para usuarios de Borland Kylix ya alcanzó los 220 miembros:
http://espanol.groups.yahoo.com/group/GrupoKylix
Suscripción:
http://espanol.groups.yahoo.com/group/GrupoKylix/join
GrupoKylix-subscribe@gruposyahoo.com
Free Pascal
===========
Nuestro foro para programadores en Free Pascal (freepascal.org) ya
superó los 150 miembros y sigue creciendo:
http://espanol.groups.yahoo.com/group/freepascal-es
Suscripción:
http://espanol.groups.yahoo.com/group/freepascal-es/join
freepascal-es-subscribe@gruposyahoo.com
Desarrolladores de Software
===========================
Un lugar para tratar todos aquellos temas relacionados con el desarrollo
de software y su comercialización, y para compartir experiencias en el
ámbito laboral, profesional o comercial con otros:
http://es.groups.yahoo.com/group/desarrolladores-software
Suscripción:
http://es.groups.yahoo.com/group/desarrolladores-software/join
desarrolladores-software-subscribe@yahoogroups.com
________________________________________________________________________
8. DELPHI EN LA RED
Por Dave Murray
Componentes, librerías y aplicaciones
=====================================
Shareware/Comercial
-------------------
* Self-Extracting Archive Utility (SEAU)
SEAU binds and compresses a group of files into a single, professional
and self-contained installation program. It supports uninstallation,
multiple languages, shared files, interface customization, license
agreements, readme files, file associations, batch operations,
multiple disk spanning, DLL installation, automated installations,
patches, expiration dates, and much more.
http://www.gammadyne.com/seau.htm
Freeware
--------
* Encryption and security software - By Uri Fridman
Uri Fridman invites us to try his freeware applications and give him
some feedback (bug, comments, suggestions, ideas).
http://www.geocities.com/urifrid/soft.html
* TDirectoryDialog v1.7 - by Aivar, FREEWARE with source (KYLIX)
Displays a modal dialog box for selecting directory. Call Execute
to show dialog, selected directory is stored in DirName property.
http://www.torry.net/kylix/clx/dialogs/directorydialog.zip
* PBFolder Dialog v4.0, FREEWARE with source
Browse for folder dialog that can create new folders. The New button
caption and a Label caption (above the path) are automatic localized
every time the application runs. Also includes a localized
error-message if a new folder could not be created.
http://www.ciemmesoft.com/componenti/categorieing.asp?ID=11&PAG=1
* TicButton v.1.0.0.1 - by Halfpenny Software, FREEWARE
Button images are Up, Down and Disabled and you can change the button
state at run time. Transparent colour is set to pixel 1,1 colour.
http://www.icarus.surf3.net/
* TicButtonA v.1.0.0.1 - by Halfpenny Software, FREEWARE
As TicButton above but with a 'Roll' image, displayed when the cursor
is over the button.
http://www.icarus.surf3.net/
* TicSbutton v1.0.0.1 - by Halfpenny Software, FREEWARE
On mouse down the image changes and a wav sound is played, when
cursor enters the image it rolls over. Images are Up, Down, Disabled
and Roll and you can change the button state at run time.
http://www.icarus.surf3.net/
* TicSButtonA v1.0.0.1 - by Halfpenny Software, FREEWARE
As TicSButton above but with Transparent colour set to the pixel 1,1
colour for each image.
http://www.icarus.surf3.net/
* TicBGimage v1.0.0.2 - by Halfpenny Software, FREEWARE
Sets an image that can be Stretch or Tiled as a backdrop for the form
or placed in a Panel. The Image can be set to transparent.
http://www.icarus.surf3.net/
* Best Random Generator v1.0 - by Anton Zhuchkov, FREEWARE with source
Passes all of the tests for random number generators with a period of
2^144. Completely portable - gives bit identical results on all
machines with 24-bit+ mantissas in the floating point representation.
The algorithm is a combination of a Fibonacci sequence and an
"arithmetic sequence" (using subtraction).
http://www.torry.net/vcl/science/other/rmar.zip
* NC OCI8 v1.0.0 - by Dmitry Arefiev, FREEWARE with source
Component library for direct access to Oracle8i. Includes 7 core
components and 3 advanced.
http://www.da-soft.com/
* PsvDialogs v2.0 - by Sergiy Perevoznik, FREEWARE with source
Library of Windows Dialog components based on undocumented Windows
functions. 17 dialogs include: Add Hardware, Browse Folder, Change
Icon, Control Panel, Format, New Shortcut, Organise Favourites, Run.
http://www.torry.net/vcl/dialogs/stddialogs/psvdialogs.zip
* KWizard v1.6 - by Wei Yu, FREEWARE with source
Fully customisable, easy to use wizard construction kit.
http://members.rogers.com/wyu66/index.htm
Artículos, trucos y consejos
============================
* Adding Custom HTML to your TAdapterPageProducers
Provides a component framework and sample components for adding
custom HTML as child components to TAdapterPageProducers.
http://community.borland.com/article/0,1410,28205,00.html
* Microsoft ComCtrls and Delphi / C++Builder v6 - by Eddie Churchill
Eddie Churchill describes the pitched battle to maintain
compatibility with the XP version of ComCtrls and discusses Themes.
http://community.borland.com/article/0,1410,28423,00.html
* System Tray Delphi application - quick and easy - by Zarko Gajic
Placing Delphi applications in the System Tray in easy steps. The
perfect place form programs that are left running for long periods of
time with no user interaction.
http://delphi.about.com/library/weekly/aa121801a.htm
* Delphi dot NET - by Zarko Gajic
As Borland unveils product strategy for Microsoft's NET platform, a
Delphi developer should find out what .NET is and what the future of
Delphi will be!
http://delphi.about.com/library/weekly/aa021902a.htm
* Indy Step by Step Part 1 - by Romeo Lefter
Part 1: Overview of TCP/IP and Indy.
http://www.delphi3000.com/articles/article_3049.asp
* Indy Step by Step Part 2.1 - by Romeo Lefter
Part 2.1 Overviw of TIdTcpServer Component.
http://www.delphi3000.com/articles/article_3050.asp
* Making 'Safe' ActiveX items for use in HTML Pages - by Scott Price
Actions required to make ActiveX/COM Objects safe for use in Internet
Explorer without "Control may be unsafe for use" dialogs.
http://www.delphi3000.com/articles/article_3053.asp
* Delphi trick for implementing VB's Control Arrays - by Malek Badi
A trick for implementing "arrays of components" similarly to VB's
"Control Arrays" allowing access to controls on a form via an index.
http://www.delphi3000.com/articles/article_3056.asp
* Enhanced Tray Icon and Task Bar Component - by Stewart Moss
How can I hide the program icon on the TaskBar under Win2000 / WinNT?
http://www.delphi3000.com/articles/article_3057.asp
* Extra Color codes for Delphi - by Stewart Moss
Nice list of color codes.
http://www.delphi3000.com/articles/article_3058.asp
* Why use Assembler? - by Max Kleiner
Why use Assembler code and a general understanding of what is meant
by instantiation, null pointer and register memory allocation.
http://www.delphi3000.com/articles/article_3059.asp
* Impersonating a User on WinNT - by Stewart Moss
How to simulate Unix SU command under WinNT and run an application
as a different user.
http://www.delphi3000.com/articles/article_3061.asp
* Some useful Windows NT API functions - by Stewart Moss
http://www.delphi3000.com/articles/article_3062.asp
* Easy Shareware limitation - Liquid Snake
How to determine the number of times an application has been run
using the registry.
http://www.delphi3000.com/articles/article_3063.asp
* Static property of a class in Delphi - Ya Xiang
How to implement a static property like the C++ static member.
http://www.delphi3000.com/articles/article_3064.asp
* Indy Step by Step Part 2.2 - by Romeo Lefter
Part 2.2. The TIdTCPServer in detail.
http://www.delphi3000.com/articles/article_3065.asp
* Get images (GIF/JPG) dimensions - by Khai Vuong Quang
Get width and height of GIF/JPG images stored as arrays of bytes.
Optimized to use within server apps.
http://www.delphi3000.com/articles/article_3066.asp
* Read the text of TEdit from another application - by Maarten de Haan
How to read the text in a TEdit from another application, even if you
only see ****. Eg. the TEdit containing internet address from MS-IE.
http://www.delphi3000.com/articles/article_3067.asp
* Overriding Registration exports from COM In-Process Automation Server
or ActiveX OCX Control - by Scott Price
How to perform additional work during the Registration routines of a
COM In-Process Automation Server or OCX Control. Eg. to create
additional registry keys relating to your configuration settings.
http://www.delphi3000.com/articles/article_3068.asp
* Implementing 'Drag Scrolling' in a Grid - by Duncan Parsons
When dragging an object over a grid, if the cell you require is not
visible it would be useful to have the grid automatically scroll to
bring the cell into view (a kind of drag-hot-tracking). Excel can do
it, let's make a humble TStringGrid do it. Builds on information
given in the article ID 3039.
http://www.delphi3000.com/article.asp?id=3069
* Indy Step by Step Part 3 - by Romeo Lefter
Part 3: Building the client.
http://www.delphi3000.com/articles/article_3070.asp
* NULL Values in a DBGrid - by Andreas Schmidt
How to display and modify NULL-Values in a DBGrid.
http://www.delphi3000.com/articles/article_3071.asp
* TOP ADO programming TIPS - by Zarko Gajic
The last chapter of this ADO tutorial is a collection of frequently
asked questions, answers, tips and tricks about ADO programming.
http://delphi.about.com/library/weekly/aa021202a.htm
* TOP 10 Delphi - by Zarko Gajic
Most popular Delphi Programming articles on delphi.about - Feb 2002.
http://delphi.about.com/library/weekly/bltop10.htm
* The fastest path to Delphi localization - by Zarko Gajic
How to change the captions on [Yes], [No], [Cancel] and similar
buttons that appear on dialog and message boxes in Delphi
applications. Plus how to personalize error, warning and other
messages in those dialogs.
http://delphi.about.com/library/weekly/aa020502a.htm
* Technique for handling mouse actions - by William Egge
A paint program requires that the mouse do different things depending
on what mode you are in. Want a clean way to handle all those mouse
actions without cluttering your form code?
http://www.delphi3000.com/articles/article_3045.asp
* Smart threads with a central management - by Erwin Molendijk
Want to fire up some threads in your application, let them do some
time consuming stuff and then report the results to the user? This
causes some synchronisation trouble. Shutting down while threads are
still running, updating the user interface... This unit gives a good
basis to avoid all kinds of multi-threading trouble using a
TSmartThread class and SmartThreadManager object
http://www.delphi3000.com/articles/article_3046.asp
* TSmartThread: Using blocking Indy sockets in a thread - E Molendijk
An example on how to use the SmartThreadLib (article 3046). Provides
a class called TTCPSmartThread that contains some basic routines to
perform TCP communication using blocking sockets.
http://www.delphi3000.com/articles/article_3047.asp
* Support for Windows Visual Styles API in your controls - by A Abdulin
http://www.delphi3000.com/articles/article_3048.asp
* How to use Strings in a Case Statement? - by Loïs Bégué
http://www.swissdelphicenter.ch/torry/showcode.php?id=1028
* How to calculate the factorial of a given number? - by Loïs Bégué
http://www.swissdelphicenter.ch/torry/showcode.php?id=1026
* How to copy Files to the Windows clipboard? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=1038
* How determine the minimum margins for a printer? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=1039
* How to get all the Permutations of a String? - by Fatih Ölçer
A permutation is an arrangement of n objects arranged in groups of
size r without repetition, where order is important.
Example: Find all two-letter permutations of the letters "ABC"
Answer: AB AC BA BC CA CB
http://www.swissdelphicenter.ch/torry/showcode.php?id=1032
* Additional dbExpress driver options - by John Kaster
List of third-party dbExpress drivers culled from newsgroups.
http://community.borland.com/article/0,1410,28371,00.html
* HTML Stylesheets - by Rick Spence
Why and how to use stylesheets in the HTML that Delphi CGI apps
return as well as avoiding some of the tedium of stylesheets.
//www.delphimag.com/features/2002/03/di200203rs_f/di200203rs_f.asp
* How to detect if Alt, Shift, Control are pressed? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=1002
* How to set TListBox Items right aligned? - by Rainer Kümmerle
http://www.swissdelphicenter.ch/torry/showcode.php?id=1023
* How to rename a directory? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=1024
* How to create a Font Combo Box with OwnerDraw - by Florin Stroiescu
Display the names of system installed fonts in a combo box drawn with
in the actual font.
http://www.delphi3000.com/articles/article_3033.asp
* MDI application without annoying ScrollBars - by Rafael Cotta
How to create a MDI app without scrollbars (like MS-Word) when a
child form is moved outside main form area.
http://www.delphi3000.com/articles/article_3035.asp
* How to export a dataset to Excel - by Steven van Els
How to make the VBA parameters visible for the end-user when
exporting a dataset to Excel.
http://www.delphi3000.com/articles/article_3037.asp
* Published Objects in Components - by Duncan Parsons
How to make properties which have object subproperties drop-down in
the Object Inspector in Delphi 6.
http://www.delphi3000.com/articles/article_3039.asp
* Unsigned 64 bit Integer support - by Erwin Molendijk
This article presents a new unsigned 64 bit integer type: UInt64.
Also two routines to convert between UInt64 and strings.
http://www.delphi3000.com/articles/article_3040.asp
Tutoriales
==========
* Get to know the Delphi 6 container classes - by Bob Swart
A container stores a number of items in a useful way. A collection
stores of a list of items but a container adds special meaning to the
way the items are stored. Eg. a component list, ordered list, stack,
and queue - very handy if you know where to find them and use them.
http://www.techrepublic.com/
article.jhtml?id=r00820020204swa01.htm&page=1&vf=tt
Otros enlaces
=============
* Delphi Search Engine and Directory
Delphi search engine for websites and newsgroup. Delphi link
collection.
http://www.neuber.com/delphi
* vpsource.com
Portal for webmasters and programmers (Delphi, C++, VB, Pascal), also
vp webdesign and programming services, e-store. Many more!
http://www.vpsource.com
* CodeBake.com
A website designed for developers to exchange and share resources and
information about Kylix, Delphi and Linux. CodeBake.com's mission is
to provide quality information to the developer community by sharing
information and resources so that everyone can benefit.
http://www.codebake.com
________________________________________________________________________
¡TÚ PUEDES AYUDARNOS!
Por favor danos una mano y ayúdanos a llegar a los 10.000 suscriptores
en los próximos meses. Una forma en que puedes ayudarnos es enviando
este enlace a tus amigos:
http://www.latiumsoftware.com/es/pascal/index.php
Otra forma es votándonos en alguno de estos rankings para darle más
visibilidad a nuestro sitio web y aumentar así el número de suscrip-
ciones al boletín:
http://www.programmingpages.com/?r=latiumsoftwarecomenpascal
http://top100borland.com/in.php?who=20
http://www.lawebdelprogramador.com/buscar/votar.php?id=615
Por favor vota. Son sólo unos segundos para ti que REALMENTE pueden
hacer la diferencia. Necesitamos tu ayuda para poder continuar.
________________________________________________________________________
Si no has recibido el archivo con el código fuente completo de los
ejemplos que se presentan en este boletín, puedes descargarlo de la
siguiente dirección: http://www.latiumsoftware.com/es/file.php?id=p33
________________________________________________________________________
Página principal: http://www.latiumsoftware.com/es/pascal/index.php
Página del grupo: http://espanol.groups.yahoo.com/group/boletin-pascal/
Para suscribirse / apuntarse: boletin-pascal-subscribe@gruposyahoo.com
Para cancelar / removerse: boletin-pascal-unsubscribe@gruposyahoo.com
Para reportar problemas con la suscripción: eds2008 @ latiumsoftware.com
________________________________________________________________________
Este boletín se provee "TAL Y COMO ESTA", sin garantía de ninguna clase.
Su uso implica la aceptación de nuestros términos de licencia y de la
ausencia de garantía que puedes leer en nuestro sitio web. Allí también
encontrarás una nota sobre marcas registradas. Te animamos a que redis-
tribuyas este boletín, siempre y cuando lo hagas en forma completa
(incluyendo la información de copyright), sin modificaciones y de manera
gratuita. Los artículos son copyright de sus respectivos autores y se
reproducen aquí con el permiso de los mismos.
________________________________________________________________________
Latium Software http://www.latiumsoftware.com/es/index.php
Copyright (c) 2002 por Ernesto De Spirito. Todos los derechos reservados
________________________________________________________________________
|