Boletín Pascal #21 - 03-MAY-2001
INDICE
1. UNAS PALABRAS DEL EDITOR
2. PORTANDO APLICACIONES DELPHI A KYLIX - Por Peter Pohmann
- Nombres de archivo
- Nombres de archivo, otra vez
- Unidades
- Formularios
- Funciones API de Windows
- Componentes VCL
- Componentes de bases de datos
3. CONVIRTIENDO DE TFILETIME A TDATETIME - Por Ernesto De Spirito
4. VIEJOS TIEMPOS (I) - Opinión - Por H.R Quiroga
- Un repaso de los viejos tiempos
- Un momento histórico crucial. Mediados de los 80.
- Lenguaje de juguete
5. EXPRESIONES REGULARES EN DELPHI - Por Ernesto De Spirito
- ¿Qué son expresiones regulares?
- ¿Para qué se usan?
- Biblioteca freeware TRegExpr
- Ejemplos
6. JOB SATISFACTION OF NETWORKING AND IT PROFESSIONALS: A relationship
with dispositions and the mediating influence of training.
7. DELPHI EN LA RED
- Artículos Delphi
- Tecnología
- Noticias Borland
8. SORTEO DE HELP & MANUAL
________________________________________________________________________
1. UNAS PALABRAS DEL EDITOR
¿Está interesado en una herramienta de autoría de ayuda autosuficiente
y verdaderamente WYSIWYG que lo asista en crear muy buena documentación
(archivos HLP, HTML y CHM, y manuales impresos) rápida y fácilmente? ¿Y
qué le parecería tenerla GRATIS? El Sorteo de Help & Manual sigue en
marcha y se puede ganar una LICENCIA de Help & Manual, incluyendo un año
de actualizaciones GRATUITAS. ¡Un valor de $199! Las registraciones
cerrarán el Lunes 14 de Mayo de 2001 a las 20:00 hrs. GMT, así que
apúrese e INGRESE HOY! El premio está allí, esperando que alguien se lo
lleve... ¡que puedes ser tú! Así que, ¿qué esperas? ¡Ayuda tu suerte!
¡Tú puedes ser el ganador!
http://www.latiumsoftware.com/ec-software/index.php?lang=es
¿No tienes acceso a la WWW? Puedes usar el servicio www4mail o puedes
participar por email completando el formulario al final de este boletín.
Saludos,
Ernesto De Spirito
eds2008 @ latiumsoftware.com
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. PORTANDO APLICACIONES DELPHI A KYLIX - Por Peter Pohmann
Portar aplicaciones GUI de Windows a Linux nunca ha sido más fácil. Dado
que la biblioteca CLX de Kylix es tan similar a la VCL, en algunos casos
la migración se hace en unos pocos minutos. La mayoría de los programas
sin embargo necesitarán de un cierto trabajo substancial. Este artículo
cubre los puntos más comunes y muestra cómo resolverlos:
Nombres de archivo
------------------
El primer problema con el que se encontrará son los nombres de archivo
de Linux. Hace la diferencia si es MiUnidad, miunidad o Miunidad y con
Kylix uno tiene que escribir el nombre de la unidad correctamente en
directiva "uses". Lo más probable es que también tenga que renombrar sus
archivos fuente si no quiere vivir por siempre con nombres de archivo
escritos descuidadamente.
Para el servidor Netware 4.11 que estamos utilizando en la oficina, esto
es un problema. No permitirá nombrar un archivo Prueba sino que siempre
lo renombrará internamente a PRUEBA. Por eso tuvimos que escribir una
pequeña utilidad que corre en Linux y que renombra los archivos vía el
servidor Samba.
Nombres de archivo, otra vez
----------------------------
Si su programa trabaja con archivos (¿y cuál no?), tiene que revisar
todas las barras invertidas ("\") usadas como delimitadores de caminos,
mayúsculas y minúsculas en nombres de archivos y extensiones, y
especificaciones de unidad (por ejemplo "C:\"). Hay funciones de
SysUtils como ExtractFileName que trabajan correctamente en ambas
plataformas pero no todos las emplean. Otras ayudas estarán disponibles
con Delphi 6 tales como IsPathDelimiter e IncludeTrailingPathDelimiter.
Además, comparar dos nombres de archivo usando CompareText puede que no
sea tan buena idea en sistemas Linux.
Unidades
--------
Parte de las unidades CLX tiene nombres que son precedidos por una Q.
Q viene por Qt, que es la biblioteca de Troll Tech para los controles
visuales usados para VisualCLX. Los formularios CLX se encuentran en
QForms, Controls ahora es QControls y así sucesivamente. Usamos el
"define" LINUX para compilar contra las bibliotecas correctas como
esto:
uses
{$ifdef LINUX}
QForms, QControls, QStdCtrls,
{$else}
Forms, Controls, StdCtrls,
{$endif}
System, SysUtils;
Es importante tener por lo menos una unidad común después del endif. Si
pone un punto y como después de StdCtrls y QStdCtrls el IDE a veces
siente debe añadir otras unidades dentro del ifdef.
Formularios
-----------
Sí, usted puede reutilizar los formularios de Delphi con Kylix. No, no
es una buena idea hacerlo. Si guarda su formulario con Delphi 5 en modo
binario (apagando "Text DFM" en el menú local del diseñador de
formularios) podrá abrirlo con Kylix. Pero probablemente no le guste la
disposición de sus controles bajo Kylix porque se parece trabajar de
manera diferente. Esto significa que tendrá que cambiarla. Además, los
controles CLX están faltos de algunas de las propiedades que tienen los
controles VCL, hay diferentes valores de enumeración, diferentes nombres
de fuentes, propiedades adicionales. No son tantas las diferencias pero
las pocas son suficientes para hacer que quiera guardar su formulario de
Kylix en un archivo distinto. Nuestro procedimiento preferido es así:
- Guardar el formulario en un archivo binario bajo Delphi 5.
- Copiar los *.dfm a *.xfm para uso en Kylix.
- Cambiar {$R *.dfm} a {$ifdef LINUX}{$R *.xfm}{$else}{$R *.dfm}{$endif}
en la unidad de código fuente del formulario.
- Abrir la unidad y el formulario con Kylix y ajustar la disposición
para Linux.
De esta forma usted puede reusar sus formularios existentes pero tiene
que mantener dos copias. En mi opinión es lo mejor que puede hacer por
ahora.
Funciones API de Windows
------------------------
Hay una sola cosa que decirle a las Funciones API de Windows: Adiós. Aún
si el IDE Kylix usa Wine para correr en Linux, las aplicaciones Kylix no
lo hacen. Esto es lo que tendrá que hacer:
- Reemplace las funciones API de Windows por funciones Delphi o compo-
nentes donde sea posible. Puede hacer esto para la mayoría de las
rutinas de manejo de archivo por ejemplo.
- Escribe una función "envoltorio" para cambiarse entre la versión
Windows y Linux usando la definición LINUX. Esto es lo que hemos
hecho por ejemplo para Sleep y LockFile. Las funciones del sistema de
Linux las encontrará en la unidad Libc.
Componentes VCL
---------------
La buena noticia es que hay una versión CLX de la mayoría de los
controles y componentes comúnmente usados como TEdit, TStringGrid,
TListView, TTimer. Pero casi todos no son todos y no encontrará por
ejemplo un reemplazo uno a uno para el control TRichEdit porque está
basado en una DLL distribuida con Windows. Hay dos componentes nuevos
llamados TTextViewer y TTextBrowser que puede usar en su lugar, pero
son bastante limitados en términos de funcionalidad. No hay mucho que
usted pueda hacer si un control que necesita no está disponible. O
tendrá que arreglárselas sin él, o esperar a que un desarrollador lo
ofrezca, o desarrollarlo usted mismo.
Componentes de bases de datos
-----------------------------
Puesto que Borland ha abandonado la BDE, extrañará los componentes
TTable, TQuery, TDatabase y TSession es su paleta Kylix. Si su aplica-
ción los usa, tiene tres alternativas para pensar:
- Pasarse a MyBase. MyBase es una especia de base de datos surrogada
basada en archivos XML que pueden ser accedidos a través de un
componente TClientDataSet. Dado que MyBase no tiene archivos índices
y no soporta acceso multi-usuario, es una solución sólo para proyectos
de un sólo usuario con tablas de base de datos muy pequeñas.
- Pasarse a dbExpress y usar un servidor de bases de datos. dbExpress es
la nueva y liviana capa de acceso a bases de datos de Borland. Kylix
viene con controladores dbExpress para MySQL e Interbase (en la
edición Desktop Developer) y para Oracle and DB2 (en la edición Server
Developer). Inconveniente: La arquitectura de su aplicación se hace
mucho más compleja, sus clientes necesitarán tener un servidor de
bases de datos instalado y mantenido, grandes partes de su código
fuente tendrán que ser modificadas.
- Pasarse a un reemplazo BDE-compatible. Hay varios reemplazos para la
BDE disponibles bajo Windows y ya hay uno para ambas plataformas al
momento es escribir este artículo. Con los Componentes TurboDB tiene
que convertir los archivos de sus tablas BDE pero puede conservar la
arquitectura de su aplicación, sólo se requieren cambios mínimo en su
código fuente y sus clientes ni se enterarán que su aplicación está
usando una base de datos. http://www.turbodb.de
Aún quedan unos temas más como ayuda en línea y sentencias en ensam-
blador. Pero creo que los listados arriba son los problemas más comunes
así que este artículo le da una vista previa de lo que le espera cuando
comience a portar sus aplicaciones Delphi a Kylix.
------------------------------------
Copyright (c) 2001 Peter Pohmann <pohmann@dataweb.de>
¿Está portando aplicaciones Delphi basadas en la BDE a Kylix? TurboDB es
un motor de bases de datos multiusuario especialmente diseñado para
desarrollo multiplataforma en Delphi y Kylix. Su uso es muy similar a
los componentes BDE por lo que TurboDB es fácil de aprender. La versión
gratuita de evaluación está disponible en: http://www.turbodb.de
________________________________________________________________________
3. CONVIRTIENDO DE TFILETIME A TDATETIME - Por Ernesto De Spirito
El campo FindData de TSearchRec, el registro usado por FindFirst y
FindNext para obtener las entradas de un directorio, es otro registro
que entre otra información (como por ejemplo el nombre corto y el
nombre largo del archivo) tiene tres campos que representan las horas
de creación, último acceso y última escritura (ftCreationTime,
ftLastAccessTime, ftLastWriteTime respectivamente). Estos tres campos
están declarados como TFileTime, un tipo que representa fechas de 64
bits en Tiempo Universal Coordinado (UTC).
Si desea convertir esos valores a TDateTime, puede usar la siguiente
función:
uses Windows;
function FileTime2DateTime(FileTime: TFileTime): TDateTime;
var
LocalFileTime: TFileTime;
SystemTime: TSystemTime;
begin
FileTimeToLocalFileTime(FileTime, LocalFileTime);
FileTimeToSystemTime(LocalFileTime, SystemTime);
Result := SystemTimeToDateTime(SystemTime);
end;
Llamada de ejemplo:
procedure TForm1.Button1Click(Sender: TObject);
var
sr: TSearchRec;
begin
if FindFirst(Application.ExeName, faAnyFile, sr) = 0 then
begin
ShowMessage(DateTimeToStr(
FileTime2DateTime(sr.FindData.ftLastWriteTime)));
FindClose(sr);
end;
end;
________________________________________________________________________
4. VIEJOS TIEMPOS (I) - Opinión - Por H.R Quiroga
Un repaso de los viejos tiempos
-------------------------------
Se dice que toda revolución tecnológica requiere 30 años para conver-
tirse a una forma definitiva y cotidiana de la vida humana. Esto ha sido
así con la televisión y el teléfono. La computación en algunos de sus
aspectos (como revolución) parece estar llegando a sus treinta años por
lo cual podemos asumir que ya está tomando su forma definitiva.
Desde finales de los ochenta, en computación de escritorio, no se ha
presentado un producto verdaderamente nuevo (original) que sea impor-
tante fuera de su entorno operativo, el último fue Access, Microsoft se
lo compró a una empresa Francesa según recuerdo, y si somos rigurosos es
una evolución algo más visual de los sistemas de base de datos (xBase,
por ejemplo). Tenemos unos 10 años viendo como los programas existentes
sólo cambian de versión. Incluso nuevos fabricantes sólo hacen nuevas
versiones de programas ya existentes. Piense en esto un poco, Star
Office y MS-Office vienen de WordStar, Visicalc (o Multiplan) en los 80.
Los lenguajes de programación no son nuevos, solo evoluciones de Basic,
Pascal y C. De resto los visualizadores de Internet son tan nuevos como
el www (lo cual no es realmente muy nuevo). Revisando mi computadora no
encontré software realmente original que no fuese dependiente del
sistema operativo (FindOrphan, StartupCop por ejemplo).
Lo anterior viene a colación porque creo que Delphi está llegando a su
forma definitiva como evolución de Pascal. No está de más mirar un poco
al pasado. No pretendo recontar lo que muchos ya sabemos, sólo quiero
hacer unos comentarios curiosos de la historia. En adelante refiero a
Delphi como evolución de Pascal.
Un momento histórico crucial. Mediados de los 80.
-------------------------------------------------
Lotus 1-2-3, CP/M, PC-AT y el lenguaje más común (al nivel de) micros:
Basic.
En algún lugar del mundo, un noche fría, un miserable programador
arrodillado terminó un rezo así "... y líbranos de Basic, amén."
Entonces apareció Turbo Pascal. Eso es el tipo de cosas que me hace
dudar de la inexistencia de Dios.
Delphi surge como evolución de Pascal y Pascal es prototipo (como Ada,
APL y otros) de lo que ha sido llamado lenguaje B&D ("bondage-and-
discipline"). La imagen de una mujer inglesa vestida de negro con un
látigo, cadenas dispuesta a no dar posibilidad de salirse de ciertas
normativas ('right programming') es de muy claro entender para los que
pasamos por "Basic" en los ochenta. Turbo Pascal es responsable del
primer intento valido por quitarnos dos etiquetas respecto a Pascal:
Lenguaje B&D y la de "toy language".
Lenguaje de juguete
-------------------
Como lenguajes de juguete se han entendido a los lenguajes de carácter
instruccional diseñados como prueba de alguna teoría de ciencia de la
computación. Pascal, como Niklaus Wirth lo definió en 1967, era así. De
hecho por mucho tiempo muchas personas han pensado que llevar a Pascal a
un lenguaje para programación de propósito general es una mala idea.
Entre ellos Brian Kernighan.
En el año 1981 Brian Kernighan escribió un "paper" titulado "Why Pascal
is Not My Favorite Programming Language". Según entiendo pueden buscarlo
en "Comparing and Assessing Programming Languages" de Alan Feuer y
Narain Gehani (Prentice-Hall, 1984). Allí manifiesta algunas cosas
interesantes. Tuvo razón en al menos una: las extensiones del lenguaje
acaban con la portabilidad. El hecho es que, volviendo a la actualidad,
de no ser por la limitada portabilidad hacía Kylix, Delphi no es
portable (aún). De todas formas uno de los problemas que él veía eran
los de los tipos "string" (una extensión que no es parte de Pascal
estándar), variables estáticas y globales y en fin males que la OOP ha
tratado de eliminar con bastante éxito.
Yo nunca programé en Pascal estándar, mi primer Pascal fue Turbo Pascal
2.xx en CP/M que quizás era de juguete como consideró Kernighan, pero
daba para todo lo que era capaz CP/M (¿Será que CP/M era un juguete?).
Hoy en día muchos programadores de Delphi provienen de C y Basic en sus
versiones más evolucionadas (Visual C++, Visual Basic) y no creo que
piensen en Delphi como algo inadecuado para la programación de propósito
general. Claro Delphi es más que un superconjunto de Pascal.
------------------------------------
Copyright (c) 2001 H.R Quiroga
En el próximo número publicaremos la segunda parte de este artículo.
________________________________________________________________________
5. EXPRESIONES REGULARES EN DELPHI - Por Ernesto De Spirito
¿Qué son expresiones regulares?
-------------------------------
Expresiones regulares son una forma de buscar y reemplazar patrones de
texto. En cierta forma estos patrones son como usar los caracteres
comodines '?' y '*' al buscar archivos, pero las expresiones regulares
son inmensamente más poderosas que eso. En el patrón uno puede
especificar si la cadena que se busca debe estar al principio o al final
de una línea, qué caracteres se permiten, cuántas veces se pueden
repetir y muchas cosas más.
¿Para qué se usan?
------------------
Básicamente se usan para tres propósitos:
1) Poder de búsqueda (y reemplazo) de texto
Puede usar expresiones regulares por ejemplo para buscar un registro
específico en una base de datos de una manera mucho más poderosa que
usando el operador SQL LIKE.
2) Validación de datos
Con las expresiones regulares puede validar la entrada del usuario
para verificar si sigue un formato dado que debido a su complejidad u
variabilidad no se puede chequear con máscaras. Por ejemplo, puede
chequear si una cadena comienza opcionalmente con un signo más o
menos, luego una secuencia de no más de siete dígitos y opcionalmente
una coma seguida de hasta dos dígitos.
3) Extracción de datos
No sólo que puede chequear si una cadena sigue un cierto patrón, sino
que puede extraer arbitrariamente partes del texto. Por ejemplo, para
un número de teléfono como '+1 (123) 555-9999' usted puede extraer el
código de país ('1'), código de área ('123') y el número local
('555-9999').
Biblioteca freeware TRegExpr
----------------------------
¿Quiere implementar expresiones regulares en sus aplicaciones Delphi?
Una buena forma de hacerlo es usando la biblioteca TRegExpr, que es
freeware y viene con código fuente completo y está documentada en
varios lenguajes. Esta biblioteca ha sido desarrollada por Andrey V.
Sorokin portando el código en C de las conocidas rutinas V8 de Henry
Spencer (un subconjunto de las expresiones regulares de Perl) a Object
Pascal. La última versión de la biblioteca es 0.942 y la puede obtener
desde "AnSo @ Web" (el sitio web de Sorokin) en:
* AnSo @ Web
http://anso.da.ru/
http://www.regexpstudio.com/AnSo/Andrey_Sorokin.html
* TRegExpr library
http://www.regexpstudio.com/ (~118 KB)
Hay descargas del componente y del archivo de ayuda disponibles en
español, inglés, francés, alemán, ruso y búlgaro.
Ejemplos
--------
La sintaxis de las expresiones regulares V8 está bien documentada en el
archivo de ayuda y también puede encontrar muchas fuentes de documen-
tación en la Internet, así que no vamos a adentrarnos en eso, pero sí
vamos a mostrar un par de ejemplos del uso de la biblioteca:
uses RegExpr;
procedure TForm1.Button1Click(Sender: TObject);
// Valida la dirección de email en Edit1
begin
// Aviso: este código no debe ser usado para realizar validación
// real de email. Debe chequear la especificación RFC. Esto es
// sólo una simplificación para mostrar el uso de ExecRegExpr.
if not ExecRegExpr('[\w\d\-\.]+@[\w\d\-]+(\.[\w\d\-]+)+',
Edit1.Text) then begin
ShowMessage('La dirección de email no es válida');
Edit1.SetFocus;
end else
ShowMessage('La dirección de email es válida');
end;
procedure TForm1.Button2Click(Sender: TObject);
// Extrae direcciones de email contenidas en Memo1
var
RegExpr: TRegExpr;
begin
// Aviso: este código no extraerá todas las direcciones de email
// válidas. Esto es sólo una simplificación para mostrar el uso de
// Exec, ExecNext y Match.
ListBox1.Clear;
RegExpr := nil;
try
RegExpr := TRegExpr.Create;
if RegExpr <> nil then begin
RegExpr.Expression := '[^\w\d\-\.]([\w\d\-\.]+@[\w\d\-]+'
+ '(\.[\w\d\-]+)+)[^\w\d\-\.]';
if RegExpr.Exec(Memo1.Text) then
repeat
ListBox1.Items.Add(RegExpr.Match[1]);
until not RegExpr.ExecNext;
end;
except
end;
RegExpr.Free;
end;
________________________________________________________________________
6. JOB SATISFACTION OF NETWORKING AND IT PROFESSIONALS: A relationship
with dispositions and the mediating influence of training.
(Contenido sin traducir)
I am a continuing Psychology student at the University of Hull
researching the job satisfaction of IT and Networking professionals.
As you may well be aware, the IT industry is booming and demand for IT
professionals is extremely high. Most organisations naturally wish to
improve or maintain job satisfaction, at least for retention reasons if
not for other reasons.
While traditional job satisfaction theories highlight potential
antecedents of job satisfaction, few researchers have applied theories
or elements of theories to the domain of IT, an important element of our
world economy. I therefore feel that further research is needed in this
area. By completing the following questionnaire, you will be helping me
and members of the University to further our understanding.
You are asked to complete a QUESTIONNAIRE designed to be quick and
easily answered. There are four short sections to complete:
Part 1 - Core self-evaluations
Part 2 - Training
Part 3 - Job satisfaction
Part 4 - Demographics
Your identity will remain entirely anonymous and your data will be held
in a secure database. Although we don't ask for you name, please provide
your demographic details and the country in which you currently work.
To answer all questions takes approximately 10 minutes. You have until
12pm Friday, 04-May-2001.
http://www.researchuk.net/
Thank You
Martin Lynch
m.a.lynch@psy.hull.ac.uk
________________________________________________________________________
7. DELPHI EN LA RED
Artículos Delphi
================
* Delphi Database Programming Course - by Zarko Gajic
Free online database programming course for beginner Delphi developers
focused on ADO techniques. Two new chapters have been added in the
last two weeks (Chapter 6 "Data modifications" and Chapter 7 "Queries
with ADO").
http://delphi.about.com/compute/delphi/library/weekly/aa010101a.htm
* Zoom - by Zarko Gajic
How to write a Delphi application that is able to zoom in a portion of
your desktop screen.
http://delphi.about.com/library/weekly/aa120198.htm
* Displaying Macromedia Flash .SWF files in your Delphi Application
- by Douglas Tietjen
http://www.delphipages.com/news/detaildocs.cfm?ID=38
Tecnología
==========
* IBM Breakthrough May Lead to Smaller Computer Chips - by Nicole Volpe
Will Silicon Valley become Carbon Nanotubes Valley?
http://dailynews.yahoo.com/h/nm/20010426/tc/
Noticias Borland
================
* Borland reports profits for the fourth-straight quarter
- by Jennifer Pittman
"Borland Software Corp. is bucking the technology-tumble trend – and
in a big way."
http://www.santacruzsentinel.com/archive/2001/April/27/top/stories/
1top.htm
________________________________________________________________________
8. SORTEO DE HELP & MANUAL
Si desea participar en el Sorteo de Help & Manual puede llenar este
formulario y enviárnoslo por email para que podamos operar la registra-
ción por usted. Se puede registrar SOLO UNA VEZ usando una dirección de
email válida que le pertenezca. Después que se haya registrado recibirá
un email con el número que jugará por la Lotería Oficial de Córdoba a
realizarse el Miércoles 16 de Mayo de 2001. Podrá ver los resultados en:
http://www.ruta1000.com.ar/sorteos/index2.htm (siguiendo el
enlace "ULTIMOS RESULTADOS" bajo el título "LOTERIA CORDOBA")
Los datos del ganador (número, nombre, edad, ocupación y país) serán
publicados en la próxima edición de este boletín.
Nombre completo:
Email:
Compañía:
Posición/Ocupación:
Area de negocios de su empresa: Marque una de las siguientes opciones:
( ) Desarrollo de Software
( ) Entrenamiento basado en computadoras
( ) Servicios IT
( ) Marketing
( ) Servicios Financieros
( ) Otros
Empleados: Marque una de las siguientes opciones:
( ) Sólo yo
( ) 1-10
( ) 11-50
( ) 51-500
( ) Más de 500
País:
¿Qué tipo de documentación crea? Marque una opción:
( ) Archivos de ayuda WinHelp (.HLP)
( ) Archivos HTML HELP (.CHM)
( ) WinHelp y HTML HELP
( ) HTML estándar para uso en Internet
( ) Otra documentación
¿Ha encontrado Help & Manual interesante? Marque una opción:
( ) No
( ) Poco
( ) Más o menos
( ) Bastante
( ) Muy mucho
¿Ha encontrado alguna característica faltante? (OPCIONAL):
¿Usa otra/s herramienta/s de autoría de ayuda?
( ) Sí --> Por favor especifique:
( ) No --> ¿Planea usar una herramienta de autoría de ayuda en el
futuro? ( ) Sí ( ) No
________________________________________________________________________
¡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=p21
________________________________________________________________________
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
________________________________________________________________________
|