Boletín Pascal #24 - 11-JUL-2001
INDICE
1. UNAS PALABRAS DEL EDITOR
2. DBISAM
- ¿Qué es DBISAM?
- Características
- Licencia
- Precios y Ordenes
- Evaluación
- Soporte
- Más información
3. CUSTOM CONTAINERS PACK (CCPACK 5)
- ¿Qué es Custom Containers Pack?
- Descargas
- Un ejemplo de un componente compuesto
- Más información
4. UNA SIMPLE APLICACIÓN DE BASES DE DATOS
5. NOTICIAS
- Delphi3000.com anuncia su nuevo sistema de membresía
- Kylix Desktop Developer Edition por sólo $199!
- Borland lanza ediciones educativas
- BORCON 2001
- Nueva política de registración de Borland
6. DESCOMPILANDO EJECUTABLES DELPHI
7. DELPHI EN LA RED
________________________________________________________________________
1. UNAS PALABRAS DEL EDITOR
En esta edición me complace presentarles DBISAM, uno de los mejores
reemplazos de la BDE disponibles en el mercado para Delphi y C++Builder.
Si usted está interesado en el desarrollo de componentes, le recomiendo
leer el artículo acerca de CCPack5. Con este experto freeware puede
desarrollar fácilmente componentes compuestos.
Según lo prometido en la edición pasada, aquí encontrará un ejemplo de
una aplicación simple de base de datos para principiantes en la
programación de base de datos.
Espero que disfrute de esta edición... y no se olvide de votar por
nosotros! ;)
Saludos,
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. DBISAM
¿Qué es DBISAM?
===============
DBISAM es un sistema de gestión de base de datos que se enlaza en sus
aplicaciones Delphi y C++ Builder, y soluciona muchos problemas
asociados a la BDE y a MDAC.
Las tablas DBISAM emplean un formato propietario de archivo, pero pueden
ser convertidas a y desde tablas de MS Access, Paradox y otras tablas
BDE. Las tablas DBISAM se pueden crear y reestructurar fácilmente por
código, y normalmente no necesitan ser compactadas puesto que DBISAM
reutiliza automáticamente todo el espacio libre en archivos de datos,
índices y BLOBs (aunque uno puede fácilmente compactar las tablas si lo
juzga necesario). Con DBISAM es fácil cifrar una tabla protegiéndola con
una contraseña.
La corrupción de datos es una preocupación con otros sistemas. DBISAM es
muy estable y reduce al mínimo la posibilidad que ocurra una corrupción
de datos debido a una pérdida de energía, y viene con una utilidad para
reparar las tablas si se llegaran a corromper.
Las aplicaciones que usan DBISAM pueden funcionar desde un CD-ROM y se
puede tener acceso a bases de datos DBISAM en un CD-ROM o marcadas con
el atributo de sólo lectura.
DBISAM proporciona eventos de progreso para las operaciones de indexado,
reparación, copiado, optimización y reestructuración de tablas, así que
con DBISAM uno puede mostrar al usuario una indicación visual del
progreso de cualesquiera de estas operaciones.
DBISAM es multiusuario. Maneja automáticamente todos los refrescos de
cache y cuestiones de bloqueo de manera transparente. El bloqueo se
implementa a nivel de registro, no a nivel de página.
DBISAM es "thread-safe" y se puede utilizar en múltiples hilos de
ejecución mientras por cada hilo se utilice una instancia del
componente TDBISAMSession creada dinámicamente. Esto también significa
que cualquier componente TDBISAMDatabase, TDBISAMTable, o TDBISAMQuery
se debe crear dinámicamente y unir solamente al componente
TDBISAMSession para el hilo de ejecución que las crea. Las tablas en
memoria de DBISAM también son "thread-safe", así que usted puede
compartir con seguridad las tablas en memoria entre múltiples hilos de
ejecución como una tabla normal.
Características
===============
Podríamos hablar mucho sobre DBISAM, pero mejor dejemos que las
características hablen por sí mismas:
* Características de productividad
- Compila directamente en su EXE sin que sean necesarias DLLs ni
archivos externos de configuración
- Tiene un tamaño muy pequeño, sólo 250-300K (el tamaño base del
motor, no incluye la capa de componentes de acceso a datos)
- Uso monousuario y multiusuario transparente, sin cambios de
configuración requeridos
- Código fuente completo para todas las utilidades provistas, y el
código fuente de DBISAM mismo está disponible por un precio
adicional.
* Soporte de versiones
- Disponible para Delphi 3, 4, 5 y C++Builder 3, 4, 5
- Componentes TDBISAMTable, TDBISAMQuery, TDBISAMDatabase, y
TDBISAMSession proporcionados para todas las versiones de Delphi
(3, 4, 5) y C++Builder (3, 4, 5)
* Soporte internacional
- Soporte internacional para más de 100 idiomas
- La información idioma y orden se almacena en cada tabla, sin
requerirse archivos de configuración o controladores especiales
* Características del motor de base de datos
- No pre-asigna bloques grandes de memoria y utiliza una cantidad muy
pequeña de memoria por tabla
- Los índices primarios y secundarios soportan atributos "case-
insensitive" (insensible a mayúsculas/minúsculas), descendente y
único.
- Compresión configurable de la clave del índice
- Números de secuencia lógica que muestran la posición exacta de un
registro en relación al total de registros, inclusive dentro de un
rango
- Búsquedas y rangos por claves parciales
- Cuentas de registro precisas, aún con rangos y/o filtros activos
- Soporte completo de filtros de expresiones, incluyendo un optimi-
zador de filtros, funciones SUBSTRING, TRIM, LOWER, UPPER, POS,
OCCURS, REPLACE, EXTRACT, CAST, ABS, ROUND, e IF, y operadores
extendidos IN, LIKE, IS NULL y BETWEEN.
- Soporta SQL SELECT, INSERT, UPDATE, DELETE CREATE TABLE, ALTER
TABLE, DROP TABLE, CREATE INDEX y DROP INDEX completado con un
optimizador de consultas, subconsultas, funciones agregadas SUM,
MIN, MAX, COUNT y AVG, funciones SUBSTRING, TRIM, LOWER, UPPER, POS,
OCCURS, REPLACE, EXTRACT, CAST, ABS, ROUND e IF, operadores
extendidos IN, LIKE, IS NULL y BETWEEN, resultados vivos como
"enlatados", consultas parametrizadas, consultas en consultas
(cláusula INTO), cursores de consulta en memoria, eventos de
progreso de consultas, scripts SQL DDL, y sintaxis SQL extendida
para características específicas de DBISAM.
- Tablas en memoria compartibles que son idénticas a las tablas
basadas en disco e incluyen soporte de "streaming".
- Todos los tipos de campo nativos de Delphi soportados (incluyendo
los tipos de campo BCD, BLOB, y auto-incrementable)
- Tamaño de bloque configurable para BLOBs
- Soporte de NULL
- Restricciones Min, Max y Requerido, valores predeterminados y
especificador de mayúsculas/minúsculas para los campos
- Nombres de campo largo y descripciones de tablas y campos para
propósitos de referencia
- Cifrado (encripción) de tablas con contraseñas
- Versionado de tablas definido por el usuario
- Bloqueo por semáforo definido por el usuario
- Bloqueo automático de registro y bloqueo manual de tabla
- Detección de cambios automática, con política configurable de
detección de cambios - lazy o strict
- Gestión de caché completa incluyendo buffering inteligente de
lecturas anticipadas de registro, buffering de páginas de índice,
buffering de bloques BLOB, y escrituras serializadas y optimizadas.
- Soporte automático de sólo lectura para CD-ROMs incluyendo buffering
optimizado
- Transacciones con búfer que permiten que las tablas sobrevivan a
pérdidas inesperadas de energía en la estación de trabajo cliente
con poca o en la mayoría de los casos ninguna corrupción de datos.
- Capacidad incorporada de verificación y reparación de tablas
completa con eventos de progreso y bitácora
- Reciclado automático de espacio libre para registros de datos,
páginas de índice, y bloques BLOB
- Capacidad incorporada de optimización de tablas completa con
eventos de progreso
- Soporte multi-threading
- Alta velocidad. DBISAM supera a Access, Paradox y muchos otros.
* Utilidades Proporcionadas
- Las utilidades software DBISAM están disponibles para cualquier
persona y de ser necesario pueden redistribuirse a los clientes
- BDE Database Transfer Utility para transferir tablas basadas en la
BDE al formato de DBISAM
- Database System Utility para crear, reestructurar, examinar, buscar,
consultar, hacer ingeniería inversa, y reparar tablas interactiva-
mente
* Características no soportadas
- Procedimientos almacenados (Stored procedures)
- Batch moves (importación/exportación nativa). Sin embargo hay una
muestra de código pensado para realizar esta tarea
- Actualizaciones cacheadas (Cached updates)
Licencia
========
DBISAM se licencia para uso libre de regalías dentro de sus aplicaciones
compiladas con Delphi y/o C++Builder.
Usted tiene que comprar una licencia de DBISAM por cada copia licenciada
completa de Delphi y/o C++Builder en la cual se proponga instalar los
componentes de DBISAM. Por ejemplo, si usted posee una copia licenciada
de Delphi 3, de la actualización a Delphi 3.01, de la actualización a
Delphi 4.0, etc., se requiere solamente comprar solamente una licencia
de DBISAM. Sin embargo, si por ejemplo usted posee dos copias licen-
ciadas de Delphi 3.0, se requiere comprar dos licencias de DBISAM para
poder utilizar DBISAM en ambos.
Precios y Ordenes
=================
Una licencia de DBISAM cuesta U$S 249, más U$S 130 adicionales si usted
quiere el código de fuente. Hay un descuento de 10% en el precio normal
de DBISAM para instituciones educativas y gubernamentales así como para
estudiantes de tiempo completo en una institución educativa.
http://www.elevatesoft.com/sales.htm
Evaluación
==========
Hay una versión de evaluación gratuita disponible para descargar. La
única diferencia con la versión comercial es que aparece un diálogo de
molestia (nag) durante la inicialización de DBISAM cuando la aplicación
se ejecuta fuera del IDE, y la licencia permite solamente su uso para
propósitos de evaluación únicamente.
* Versión de prueba de DBISAM - versión 2.10
http://www.elevatesoft.com/download?action=login
* Software y utilidades adicionales
http://www.elevatesoft.com/download?action=login
Soporte
=======
Elevate Software ofrece soporte electrónico vía email o a través de sus
foros (newsgroups) de soporte oficialmente monitoreados. Las preguntas
de soporte por email o newsgroup se contestan en el plazo de 12 horas a
partir de su recepción. En ambos casos los mensajes se revisan de 8:00
A.M. EST a 8:00 P.M. EST, así que la espera más larga para una respuesta
sería de 24 horas.
Elevate Software proporciona ayuda para aquellos que evalúan la versión
de prueba de DBISAM.
* Email:
support@mail.elevatesoft.com
* Newsgroup:
- Anuncios
news://news.elevatesoft.com/elevatesoft.public.announcements
- Pruebas beta públicas
news://news.elevatesoft.com/elevatesoft.public.beta
- DBISAM
news://news.elevatesoft.com/elevatesoft.public.dbisam
- Discusión general
news://news.elevatesoft.com/elevatesoft.public.discussion
- Ofertas laborles de terceros
news://news.elevatesoft.com/elevatesoft.public.jobs
- SQL
news://news.elevatesoft.com/elevatesoft.public.sql
- Sugerencias de mejoras
news://news.elevatesoft.com/elevatesoft.public.suggestions
- Pruebas
news://news.elevatesoft.com/elevatesoft.public.test
- Anuncios e información de terceros
news://news.elevatesoft.com/elevatesoft.public.thirdparty
Más información
===============
Puede encontrar más información sobre DBISAM, incluyendo comentarios de
clientes, muestras de pantallas, manual de usuario en línea, boletines
técnicos, etc. en el sitio web de Elevate Software:
http://www.elevatesoft.com/
---------------------
Partes de este artículo fueron tomadas del sitio web de Elevate Software
y son Copyright (c) 2001 Elevate Software - Todos los derechos reser-
vados. Han sido reproducidas y modificadas aquí con permiso del autor.
________________________________________________________________________
3. CUSTOM CONTAINERS PACK (CCPACK 5)
¿Qué es Custom Containers Pack?
===============================
CCPack 5 es un paquete freeware que le permite combinar, extender y
heredar visualmente contenedores VCL. El paquete fue desarrollado por
Sergey Orlik, Jefe de Producto de la oficina de Inprise Moscú (Rusia,
C.I.S. y estados bálticos).
CCPack 5 trabaja con Delphi/C++Builder 5, y es la evolución de dos
add-ins existente para Delphi/C++Builder 3,4: Custom Forms Pack (CFPack)
y Composite Components Pack (CCPack 4).
Uno de los usos comunes de CCPack 5 es crear componentes hechos de
varios componentes:
* CCPack Introduction movie
http://www.geocities.com/sergey_orlik/ccpmovie.zip (~337K)
Descargas
=========
* Custom Containers Pack (CCPack 5) para Delphi 5
http://cc.codegear.com/Item.aspx?id=13985 (~695K)
* Código fuente de Custom Containers Pack para Delphi 7
http://cc.codegear.com/Item/19483 (~356K)
* Código fuente de Custom Containers Pack para Delphi 6 - 2006
http://cc.codegear.com/item.aspx?id=24236 (~584K)
Se proporciona el código de fuente completo y usted puede modificarlo
sin restricciones para cualquier proyecto no comercial. Haga saber al
autor si desea utilizar este software en sus proyectos comerciales por
e-mail a <sorlik@inprise.ru> indicando el nombre de la herramienta en la
línea de asunto.
Un ejemplo de un componente compuesto
=====================================
Una vez que haya instalado CCPack, está listo para el primer ejemplo.
Cierre todos los proyectos. En el menú "File" elija "New...", seleccione
"Custom Container" (o "Composite Control" en Delphi 3/4) en el diálogo
"New items", y haga clic en "OK". En el diálogo "New Container"
seleccione "TFrame", escriba "TFileComposite" en el campo "New class
name" y haga clic en "Finish".
Aparece un formulario. Su superficie es la superficie de su nuevo
componente de Delphi. Establezca las siguientes propiedades en el
Inspector de Objetos:
Width = 281
Height = 164
Éste será el tamaño predeterminado del componente. Suelte un Panel sobre
el formulario, y fije sus propiedades:
Align = alLeft
Width = 130
BevelOuter = bvNone
Caption =
Constraints.MinWidth = 110
Suelte un Splitter a la derecha del panel. Se alineará automáticamente
al costado del panel. Ponga un DriveComboBox y un DirectoryListBox en el
panel y fije sus propiedades:
DriveComboBox:
Left = 0
Top = 0
Width = 130
Height = 19
Anchors = [akLeft, akTop, akRight]
DirectoryListBox:
Left = 0
Top = 19
Width = 130
Height = 145
Anchors = [akLeft, akTop, akRight, akBottom]
Haga clic en la parte derecha del formulario, y coloque un FileListBox:
Align = alClient
TabOrder = 0
Con esto hemos terminado la interfaz visual de nuestro componente
compuesto. Ahora es momento de agregar algo de código para "acoplar" los
componentes. Haga doble-clic en el DriveComboBox y en el gestor del
evento Change escriba:
procedure TFileComposite.DriveComboBox1Change(Sender: TObject);
begin
DirectoryListBox1.Drive := DriveComboBox1.Drive;
end;
Haga doble-clic en el DirectoryListBox y en el gestor del evento Change
escriba:
procedure TFileComposite.DirectoryListBox1Change(Sender: TObject);
begin
FileListBox1.Directory := DirectoryListBox1.Directory;
end;
Con esto hemos terminado el comportamiento básico de nuestro componente
compuesto, que para el interfaz de programación heredará los métodos y
las propiedades de TFrame (la clase base que elegimos cuando creamos el
componente). Vamos a agregar un par de propiedades públicas: FileName y
Directory. En la declaración de la clase agregue:
type
TFileComposite = class(TFrame)
:
:
protected
{ Protected declarations }
function GetFileName: string;
procedure SetFileName(FileName: string);
function GetDirectory: string;
procedure SetDirectory(Directory: string);
public
{ Public declarations }
property FileName: string read GetFileName write SetFileName;
property Directory: string read GetDirectory write SetDirectory;
:
:
La implementación es bastante simple. Básicamente obtenemos y estable-
cemos la propiedad FileName del FileListBox y la propiedad Directory del
DirectoryListBox:
function TFileComposite.GetFileName: string;
begin
Result := FileListBox1.FileName;
end;
procedure TFileComposite.SetFileName(FileName: string);
begin
FileListBox1.FileName := FileName;
end;
function TFileComposite.GetDirectory: string;
begin
Result := DirectoryListBox1.Directory;
end;
procedure TFileComposite.SetDirectory(Directory: string);
begin
DirectoryListBox1.Directory := Directory;
end;
Ahora vamos a agregar tres eventos: Change, Click y DblClick. En la
declaración de la clase agregue:
type
TFileComposite = class(TFrame)
:
:
private
{ Private declarations }
FOnChange: TNotifyEvent;
FOnClick: TNotifyEvent;
FOnDblClick: TNotifyEvent;
protected
:
public
:
published
{ Published declarations }
property OnChange: TNotifyEvent read FOnChange write FOnChange;
property OnClick: TNotifyEvent read FOnClick write FOnClick;
property OnDblClick: TNotifyEvent read FOnDblClick write
FOnDblClick;
end;
Como puede estar suponiendo, estos eventos serán generados por los
eventos Change, Click y DblClick del FileListBox, así que genere los
correspondientes manejadores de evento y escriba lo siguiente:
procedure TFileComposite.FileListBox1Change(Sender: TObject);
begin
if Assigned(FOnChange) then FOnChange(Self);
end;
procedure TFileComposite.FileListBox1Click(Sender: TObject);
begin
if Assigned(FOnClick) then FOnClick(Self);
end;
procedure TFileComposite.FileListBox1DblClick(Sender: TObject);
begin
if Assigned(FOnDblClick) then FOnDblClick(Self);
end;
Si se pregunta acerca de la función Assigned, permítame por favor que le
explique. FOnChange es un campo del tipo TNotifyEvent, y esto significa
que puede contener la dirección de un procedimiento de objeto (procedure
of object) que toma un parámetro "Sender: TObject"... o puede ser Nil,
así que debemos cerciorarnos que FOnChange no sea Nil antes de hacer la
llamada " FOnChange(Self)". Sin embargo, lo siguiente no funcionará:
if FOnChange <> nil then ...
La razón es que la referencia a FOnChange es tomada por el compilador
como la invocación del procedimiento al que apunta. Puesto que es un
procedimiento, no devuelve un valor compatible con el tipo Pointer (así
que no podemos compararlo con Nil), pero antes de darse cuenta de ello,
el compilador encontrará que nos olvidamos del parámetro (Sender) en la
llamada a FOnChange... Nuestra intención no es llamar al procedimiento
al que FOnChange apunta, sino saber si el valor de FOnChange no es Nil.
Ése es el propósito de la función incorporada Assigned usada arriba.
Para el propósito del ejemplo, esto es todo. Puede instalar esta unidad
y después utilizar el componente desde la Paleta de Componentes, o puede
incluir la unidad en un proyecto de prueba y crear el componente por
código como hicimos nosotros en la aplicación de prueba para evitarle de
tener que instalar un componente inútil.
Como puede ver, con CCPack alguien con poca experiencia en el desarrollo
de componentes puede construir componentes compuestos rápida y fácil-
mente.
Más información
===============
Puede encontrar más información sobre CCPack, y encontrar otros
componentes interesantes en el sitio web de Sergey Orlik:
http://www.geocities.com/sergey_orlik
________________________________________________________________________
4. UNA SIMPLE APLICACIÓN DE BASES DE DATOS
De tanto en tanto en Latium Software recibimos una petición como la
siguiente:
> Quisiera saber cuál es la manera de construir una aplicación de base
> de datos en Delphi. Ya sé trabajar con tablas, formularios,
> componentes, etc. Lo que deseo saber es la manera de integrar todo...
En muchas formas Delphi es como esos kits de construcción con los que
jugaba cuando era pequeño. Esos kits tenían muchas piezas de diversas
formas, tamaños y colores, y con ellas uno podía construir lo que
deseara, limitado solamente por la imaginación... y las piezas
disponibles, por supuesto. Delphi tiene muchos componentes y uno puede
utilizarlos para construir la aplicación que desee. Borland no sugiere
una manera de hacer las cosas. Simplemente pone los ladrillos allí, y
queda en uno cómo construir su casa.
Hay muchas maneras de hacer las cosas. En el archivo adjunto a este
boletín encontrará una de esas maneras. No pretende ser la mejor manera
de escribir una aplicación de base de datos, o una manera recomendada de
hacerlo. Lo que es más, tampoco sostengo que siquiera sea una buena
manera de hacerlo. La intención es simplemente servir como ejemplo para
mostrar una de las posibilidades. Usted puede mejorarlo y utilizarlo
como base para sus propios proyectos.
Cuando le dé una mirada al ejemplo, verá que utilicé un módulo de datos
con dos tablas (Clientes y Ordenes, que vienen como tablas de muestra
con la BDE) con una relación maestro-detalle (puede verla en el diagrama
de los datos). Si usted hace doble clic en los componentes Table verá
que definí algunas propiedades de los campos como los anchos de visuali-
zación, formato de visualización, máscara de entrada, etc. Puse los
componentes DataSource en el módulo de datos, para mostrar que uno puede
ponerlos allí y no necesariamente colocar uno en cada formulario que
tenga acceso a estas tablas.
La aplicación utiliza un interfaz MDI. Del menú usted puede mostrar el
formulario de Clientes, que exhibe el contenido de la tabla Clientes en
un DbGrid. En el formulario hay un botón "Ordenes..." para mostrar el
formulario de Ordenes del cliente actualmente seleccionado. Note que uno
puede cambiar de nuevo al formulario de Clientes y si se mueve de
registro, el formulario de Ordenes se actualiza automáticamente (gracias
a la relación maestro-detalle establecida entre las dos tablas).
En ambos formularios usted tiene botones para agregar, borrar y
modificar registros de las tablas respectivas. Los botones "Agregar..."
y "Modificar..." muestran un formulario modal que permite agregar o
editar un registro. Verá que este formulario es creado la primera vez y
después se oculta cuando se cierra, así que está rápidamente disponible
si necesitamos invocarlo otra vez. El formulario será liberado automáti-
camente cuando se libere su formulario padre.
En el formulario de Orden hay un ejemplo de un DbCombo y de un
DbLookupCombo que lista un campo calculado de otra tabla (Empleados).
Le dejamos el resto del ejemplo a usted para su análisis. Si tiene dudas
o preguntas sobre él, quisiera invitarle a unirse a nuestro foro de bajo
tráfico para programadores en Delphi en Yahoo! Groups, donde otros
miembros o nosotros mismos tal vez podamos ayudarle.
Principal: http://espanol.groups.yahoo.com/group/delphi-intermedio
Suscripción: http://espanol.groups.yahoo.com/group/delphi-intermedio/join
delphi-intermedio-subscribe@gruposyahoo.com
________________________________________________________________________
5. NOTICIAS
Delphi3000.com anuncia su nuevo sistema de membresía
====================================================
Delphi3000.com ahora ofrece tres clases de membresía:
* Membresía de Bronce. Acceso limitado. Gratis.
* Membresía de Plata. Acceso total. U$S 4,90 por mes.
Los "uploaders" obtienen una Membresía de Plata gratis.
* Membresía de Oro. Acceso total, más un mensaje en el boletín.
U$S 14,90 por mes.
Los miembros de Delphi3000.com ahora tienen iTecture CodeFinder, una
aplicación para examinar la base de datos de Delphi3000.com fuera de
línea.
¿Por qué? http://www.delphi3000.com/why.asp
Detalles: http://www.delphi3000.com/whysignup.asp
NOTA: Si no puede entrar al sitio con www.delphi3000.com inténtelo con
213.208.2.22 en su lugar.
Kylix Desktop Developer Edition por sólo $199!
==============================================
Exactamente como lo dice el título, Borland está vendiendo la Desktop
Developer Edition (DDE) de Kylix por solamente $199! ¡Sí! ¡Sólo $199!
¿No me cree? Bueno, léalo por usted mismo:
http://shop.borland.com/Product/0,1057,3-15-CQ100479,00.html
Si usted compró el Kylix DDE antes que esta oferta estuviera en efecto,
puede contactarse con su representante local de Borland para conseguir
una actualización gratis a Kylix Server Developer Edition.
Borland lanza ediciones educativas
==================================
Borland ahora ofrece ediciones educativas de Delphi y de Kylix:
* Delphi 6 Enterprise Educational edition.........................$399
* Delphi 6 Professional Educational edition........................$99
* Kylix Server Developer Educational edition (disponible pronto)..$399
* Kylix Desktop Educational edition (disponible pronto)............$99
BORCON 2001
===========
La XII Conferencia Anual de Borland (BORCON 2001) se llevará a cabo del
21 al 25 de Julio en Long Beach, California. Aún hay tiempo de
registrarse.
http://www.borland.com/conf2001/
Nueva política de registración de Borland
=========================================
Comenzando con JBuilder 5 y Delphi 6, el registro del software de Borland
ya no es opcional:
* Carta abierta a la comunidad Borland con respecto al registro de los
productos de Borland - por David Intersimone
http://community.borland.com/article/0,1410,27382,00.html
* Registro de Delphi 6 por Internet - por David Intersimone
http://community.borland.com/article/0,1410,27385,00.html
________________________________________________________________________
6. DESCOMPILANDO EJECUTABLES DELPHI
No es posible recuperar totalmente los fuentes originales de Delphi de
una aplicación a partir de su fichero ejecutable, lejos de eso, pero
algo puede hacerse. Si está interesado en descompilar o hacer ingeniería
inversa de ejecutables Delphi, le sugiero las siguientes páginas:
* EXE2DPR - Delphi project sources Rescuer
Versiones soportadas: Delphi 1.0-4.0 y C++Builder 3.0
http://www.ems.ru/~gold/exe2dpr.html
* DeDe
Versiones soportadas: Delphi 2,3,4,5 y Builder
http://www.softpedia.com/progDownload/DeDe-Download-1426.html
* Revendepro
Versiones soportadas: Delphi 4 y Delphi 5
http://www.puthoon.com/Revendepro/index.html
* MultiRipper
Versiones soportadas: N/D
http://www.csee.uq.edu.au/~csmweb/decompilation/application.html
* Delphi project sources rescuer - without sources
Versiones soportadas: Delphi 3 y Delphi 4
shareit1.element-5.de/programs.html?productid=100815&languageid=1
________________________________________________________________________
7. DELPHI EN LA RED
En español
==========
* Delphi 5, Ponga una dll (ISAPI) en su vida.
Algunos trucos, funciones y comentarios para programadores de cgis.
http://redraven.garcia-cuervo.com/delphi.htm
En inglés
=========
* Delphi Database Programming Course - por Zarko Gajic
Free online database programming course for beginner Delphi developers
focused on ADO techniques. Three new chapters have been added in the
last two months (Chapter 9 "Searching for data", Chapter 10 "ADO
Cursors" and Chapter 11 "From Paradox to Access with ADO and Delphi").
http://delphi.about.com/compute/delphi/library/weekly/aa010101a.htm
* An introduction to hook procedures - por Chris Cummings
What Windows hooks are and how to use them in a Delphi application.
http://delphi.about.com/compute/delphi/library/bluc/text/uc063001a.htm
* Sticky Windows - por Zarko Gajic
How to dock your Delphi forms to the edges of your desktop screen.
http://delphi.about.com/library/weekly/aa070301a.htm
* Automating Internet Explorer to find all links on a web page
- por Corbin Dunn - Borland Developer Support Staff
You may want to find all links on a given web page. This document has
source code and directions on how to do this.
http://community.borland.com/article/0,1410,26574,00.html
* General Issues in Delphi Client/Server Development - por Bill Wolf
This paper will cover some important aspects of client/server
development learned the hard way – in real world situations. It will
include a brief overview of the client/server methodology and a
discussion of why so many projects run in to difficulties as well as
ways to avoid them.
http://ourworld.compuserve.com/homepages/billw/dl130.htm
* Anti Cracking FAQ - por R. Fellner
How to make cracking your programs a little harder
http://www.inner-smile.com/nocrack.phtml
* Kylix & Delphi 6 New Language Features - por Dr. Bob
This article shows a few of the Kylix and Delphi 6 changes in the
compiler and the RunTime Library (RTL).
http://www.drbob42.com/Delphi5/examin19.htm
* Cross-platform DrBobCGI (and Cookies) - por Dr. Bob
This article presents the cross-platform edition of DrBobCGI (to
produce web server applications with Delphi and Kylix without the need
for the WebBroker Technology). As one of the examples, Dr.Bob shows
how to (set and) get cookie values using DrBobCGI.
http://www.drbob42.com/Delphi5/examin18.htm
* Shakespeare on the Web - por John Kaster
This article shows how to produce a basic web service application that
spews Shakespearean insults
http://community.borland.com/article/0,1410,27399,00.html
* Community TV: RAD Product Group Overview with Simon Thornhill
Anders O interviews Simon Thornhill about Delphi 6 and future plans of
the RAD product group. Now with MP3 audio and text transcript.
http://community.borland.com/article/0,1410,27299,00.html
* Community TV: Delphi 6 XML Data Bindings with Mark Edington
John K talks with Mark Edington about XML Data Bindings and how
support for XML DOM is implemented with Object Pascal language
bindings. Includes MP3 audio and text transcript.
http://community.borland.com/article/0,1410,27323,00.html
* Community TV: Delphi 6 Overview with Michael Swindell
Anders O interviews Michael Swindell, Director of Product Management
for the RAD Group, who provides an overview of Delphi 6's new features
BizSnap, WebSnap and DataSnap. Includes text transcript and audio mp3
http://community.borland.com/article/0,1410,27300,00.html
* Getting started with WebSnap in Delphi 6 Enterprise
John K explains how to use the WebSnap framework to produce a fully
functional browser-based database application, complete with graphic
field support
http://community.borland.com/article/0,1410,27404,00.html
________________________________________________________________________
¡TÚ PUEDES AYUDARNOS!
Necesitamos tu ayuda para que este boletín pueda continuar y crecer. 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, que esperamos en el futuro se traduzca también en un
mayor número de colaboraciones de artículos, trucos, etc.:
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=p24
________________________________________________________________________
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) 2001 por Ernesto De Spirito. Todos los derechos reservados
________________________________________________________________________
|