Boletín Pascal #38
Los ejemplos completos de código fuente de este número están disponibles para descargar.
![]() |
![]() |
Boletín Pascal #38 - 31-JUL-2002 INDICE 1. UNAS PALABRAS DEL EDITOR 2. PROBLEMAS DE RENDIMIENTO DE TCOLLECTION EN DELPHI 3,4,5 Y SOLUCIONES 3. DESHACER / REHACER USANDO COMANDOS 4. SOPORTE INTERNACIONAL DE FECHAS EN DELPHI 3+ 5. OBTENER EL NOMBRE DEL SERVIDOR DADA SU DIRECCION IP 6. FOROS 7. DELPHI EN LA RED - Componentes, librerías y aplicaciones . Shareware/Comercial . Freeware - Artículos, trucos y consejos - Tutoriales - Otros enlaces ________________________________________________________________________ Tecno Soft Solutions. Reseller Autorizado de Symbol Technologies, líder mundial en captura de códigos de barras. >>> http://www.tecno-symbol.com ________________________________________________________________________ 1. UNAS PALABRAS DEL EDITOR Me gustaría agradecerle a William Egge por contribuir su artículo "Deshacer / Rehacer Usando Comandos" para este boletín, y me complace entregarle un CD de la Delphi Information Library (DIL CD), un gran recurso de información con artículos, trucos, consejos, componentes, javascripts, imágenes, update packs, y más, provisto por el UK Borland User Group: http://www.richplum.co.uk/html/dil.asp También quisiera agradecerle al Equipo de Soporte de Clever Components para contribuir su artículo "Problemas de rendimiento de TCollection en Delphi 3,4,5 y soluciones", y me complace entregarles una licencia de AnyShape Transpack v2.0, el componente para facilitar la creación de ventanas transparentes y de formas irregulares con edición WYSIWYG, vista previa en tiempo de diseño, y arrastre automático entre otras características, provistos por MindBlast Software: http://www.mindblastsoftware.com/?page=transpack&ref=PascalNL Agradezco muy especialmente a JMR, un asiduo colaborador de este boletín, por su "Soporte internacional de fechas en Delphi 3+". Como muchos de ustedes probablemente sepan, Borland lanzó el Kylix 3 la semana pasada, añadiendo soporte para C++. A este paso, en 18 meses la versión de Kylix será mayor que la de Delphi! :-) ¿Piensas que Borland está haciendo lo correcto, o que están publicando versiones de Kylix demasiado seguido? Me gustaría escuchar sus comentarios y opiniones sobre el tema. Debido a que he estado enfermo estas dos últimas semanas, no he tenido tiempo de escribir una nueva parte de la serie de ensamblador en Delphi. A propósito, aprovecho para agradecer al Ing. Ernesto Cullen por su colaboración en la edición de este número, ya que sin su ayuda la publicación de este número no hubiera sido posible. Saludos, Ernesto De Spirito eds2004 @ 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-7 y C++ Builder 3-6. http://www.jfactivesoft.com/spindex.htm ________________________________________________________________________ 2. PROBLEMAS DE RENDIMIENTO DE TCOLLECTION EN DELPHI 3,4,5 Y SOLUCIONES Por el Equipo de Soporte de Clever Components <info@CleverComponents.com> Puede ver el articulo original y otros en el sitio web de Clever Components: http://www.clevercomponents.com/articles/article008/collectionperf.asp Si Ud. esta usando clases TCollection en sus aplicaciones Delphi 3, 4 o 5, encontrara este articulo muy interesante. Veamos primero un código muy simple: procedure TForm1.Button1Click(Sender: TObject); var old: TCollection; i: integer; begin old := TCollection.Create(TCollectionItem); for i := 0 to 100000 do begin old.Add; end; Windows.beep(900, 1000); // pitido de alta frecuencia después de // terminar de agregar elementos vacíos old.Free; Windows.beep(100, 1000); // pitido de baja frecuencia después de // terminar de destruir los elementos end; Se podría pensar que el pitido de baja frecuencia se oirá inmediatamente después del pitido de alta frecuencia (¿qué podría ser más rápido que simplemente destruir todos los elementos de la colección?) - pero NO es así! De hecho la destrucción de una colección con unas docenas de miles de elementos toma entre 10 y 20 segundos - y lo peor de todo es que su CPU estará ocupada al 100%. Nos encontramos con este problema cuando nuestros clientes se quejaron diciendo que la aplicación "congela la PC por unos minutos". Para entender porqué sucede esto necesitamos ver mas de cerca los métodos TCollectionItem.Destroy, TCollectionItem.SetCollection y TCollection.RemoveItem en Classes.pas - el último es la clave para comprender el problema. También podríamos comparar el método TCollection.RemoveItem con la versión de Delphi 6: { classes.pas de Delphi 6 } procedure TCollection.RemoveItem(Item: TCollectionItem); begin Notify(Item, cnExtracting); if Item = FItems.Last then FItems.Delete(FItems.Count-1) // Esto corrige el problema else FItems.Remove(Item); Item.FCollection := nil; NotifyDesigner(Self, Item, opRemove); Changed; end; Ahora bien, probablemente Ud. querrá corregir el código; pero no es tan fácil ya que TCollection.RemoveItem no está declarada como virtual o dynamic. Aquí se presentan dos soluciones: 1. Necesitará modificar classes.pas - colocar el código de TCollection.RemoveItem de Delphi 6 en su versión de classes.pas. Copiar el nuevo classes.pas (arreglado) en el directorio de su proyecto y ubicarlo en la primera posición de la sección uses del archivo .dpr, como sigue: program Project1; uses classes in 'classes.pas' // nuevo classes.pas con la corrección de // TCollection.RemoveItem Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Ahora su proyecto será compilado con la nueva versión de TCollection. 2. En algunas situaciones esto no será muy conveniente o incluso puede no ser posible usar la unit classes.pas alterada; en este caso tenemos otro truco. type { TFixCollection - corrige el problema de TCollection.RemoveItem en Delphi 3,4,5 } TFixCollection = class(TCollection) public { Desafortunadamente Clear no es un procedimiento virtual o dinámico, por lo que tenemos que reemplazarlo } procedure Clear; destructor Destroy; override; end; procedure TFixCollection.Clear; var i: integer; AList, OrgList: TList; begin AList := TList.Create; try OrgList := TList(PDWORD(DWORD(Self) + $4 + SizeOf(TPersistent))^); { Guardar los punteros originales a elementos de la colección } for i := 0 to OrgList.Count-1 do AList.Add(OrgList[i]); OrgList.Clear; { Destruir los elementos de la colección } for i := 0 to AList.Count-1 do TCollectionItem(AList[i]).Free; finally AList.Free; end; inherited; end; destructor TFixCollection.Destroy; begin Clear; inherited; end; { Probemos otra vez ! } procedure TForm1.Button2Click(Sender: TObject); var old: TFixCollection; i: integer; begin old := TFixCollection.Create(TCollectionItem); for i := 0 to 100000 do old.Add; Windows.beep(900, 1000); // pitido de alta frecuencia después de // terminar de agregar elementos vacíos old.Free; Windows.beep(100, 1000); // pitido de baja frecuencia después de // terminar de destruir los elementos end; Como puede ver, ahora funciona correctamente. Usamos un truco que nos da acceso a la sección protegida de TCollection. Puede usar ambas técnicas en sus aplicaciones escritas en Delphi 3, 4 o 5. Para su conveniencia, se adjunta el código de la demostración anterior. Equipo de Soporte de Clever Components http://www.CleverComponents.com info@clevercomponents.com ________________________________________________________________________ ITC - Information Technology Consulting. Consultorías y asesorías en informática en general. Desarrollo de aplicaciones y sitios web. Diseño gráfico y animaciones. Venta, instalación y mantenimiento de equipos, redes y software. Capacitación. >>>>>> http://www14.brinkster.com/itcmx/ ________________________________________________________________________ 3. DESHACER / REHACER USANDO COMANDOS Por William Egge egge@eggcentric.com Visite Eggcentric en http://www.eggcentric.com Hay dos maneras de realizar las operaciones Deshacer/Rehacer: una es con estados, la otra usando comandos. Este artículo explica la segunda opción e incluye el código fuente completo de la implementación de una clase TUndoRedoManager. Este artículo cubre 1. Comandos 2. Requerimientos de un comando 3. Pila de comandos 4. Administrador de Deshacer/Rehacer 5. Agrupación de comandos 6. Código fuente completo de la implementación Un comando es simplemente un objeto que implementa una acción en el sistema, por ejemplo en un programa de dibujo un comando podría ser 'dibujar una línea', o un círculo, un rectángulo, y así siguiendo. Para implementar las operaciones de Deshacer/Rehacer basadas en comandos se debe diseñar la edición para que use objetos de comando. Dado que queremos deshacer y rehacer los efectos de comandos, éstos deben ser capaces de deshacer y rehacer su propia acción, así como ejecutar la acción inicial. Los métodos principales de un comando son - Execute (Ejecutar) - Undo (Deshacer) - Redo (Rehacer) Uno podría preguntarse por qué hay un 'Rehacer' separado en lugar de reutilizar simplemente el método Execute. Esto se debe a que la implementación de Redo puede ser diferente de la de Execute. Por ejemplo, si éste fuera un comando de pintar: Execute puede seleccionar el pincel y seguir algún algoritmo para dibujar alguna clase de círculo gradualmente transparente. Redo podría simplemente copiar una imagen del resultado de la pintura en lugar de pintarla de nuevo. En cualquier caso, si no se necesita esta funcionalidad entonces simplemente llame al método Execute desde el método Redo. OK, tenemos entonces un comando. Necesitamos recordar la secuencia de comandos para conseguir deshacer/rehacer de múltiples niveles. Esta es la Pila de Comandos. Cuando se deshace un comando, se toma el último de la pila y se invoca su método Undo. La próxima vez que se usa Undo, se estará invocando el método del segundo comando (mirando desde arriba de la pila) y así sucesivamente. Para rehacer, se invoca el método Redo del último comando sobre el que se invocó Undo. Para simplificar esto creamos dos listas, una lista de deshacer y otra de rehacer y las encapsulamos con un objeto administrador (UndoRedoManager). El administrador UndoRedoManager tendrá tres métodos: ExecuteCommand(Comando) Undo Redo Internamente UndoRedoManager mantendrá dos listas de comandos, llamadas Undo y Redo. Esta es la secuencia completa: 1. Ejecute un comando pasándolo al método ExecuteCommand. Internamente el administrador llamará al método Execute del comando y lo agregará al tope de la lista Undo. 2. Al deshacer, el administrador tomará el último comando de la lista 'Undo', invocará su método Undo y quitará el comando de la lista 'Undo', agregándolo en la lista 'Redo'. 3. Al Rehacer se realiza lo contrario que al deshacer: se toma el último comando de la lista 'Redo', se invoca su método Redo, se quita el comando de la lista 'Redo' y se agrega al tope de la lista 'Undo'. 4. Ahora, la siguiente vez que se invoque ExecuteCommand debemos limpiar la lista 'Redo'... borrar todos los comandos en ella. A veces, o la mayoría de las veces, se ejecutarán unos cuantos comandos como un grupo. Al Deshacer o Rehacer se debería actuar sobre este grupo completo y no por separado sobre los comandos que lo componen. Un ejemplo podría ser un experto que haga un montón de cosas, Ud. podría querer deshacer o rehacer todo como un solo grupo. Agregaré dos métodos al administrador: BeginTransaction EndTransaction Todos los comandos ejecutados entre llamadas a BeginTransaction y EndTransaction serán almacenados como un grupo. Debería también permitirse anidar llamadas a BeginTransaction y EndTransaction. Usando herencia, esto puede ser fácil de implementar. Hacemos una clase 'grupo de comandos' que herede de 'Comando', de manera que el administrador actúe como si estuviera trabajando con comandos simples. Se adjunta en el archivo zip el código fuente completo de un administrador UndoRedoManager funcional, junto con las interfaces IUndoRedoCommand y IUndoRedoCommandGroup. Nota: creo que un montón de gente asocia las interfaces de Delphi con ActiveX o COM y en consecuencia piensan que las interfaces SON ActiveX o COM. Esto no es cierto, se pueden crear clases que implementen interfaces sin ninguna relación con ActiveX o COM. Estas clases no requieren registración ni otras acciones necesarias con ActiveX o COM. Debería tener en cuenta que las interfaces se administran por conteo de referencias, y son destruidas automáticamente cuando ya no son referenciadas. _______________________________________________________________________ Colabora votándonos en este ranking para que esta publicación continúe: http://www.sandbrooksoftware.com/cgi-bin/TopSite2/rankem.cgi?id=latium ________________________________________________________________________ 4. SOPORTE INTERNACIONAL DE FECHAS EN DELPHI 3+ Por JMR <jmr @ clubdelphi.com> Desde la versión 1.0 de Delphi, Borland ha soportado, como suplemento independiente que hay que comprar aparte, una serie de utilidades para permitir el desarrollo de aplicaciones simultáneamente en varios idiomas. Aunque se anuncian dos paquetes, en realidad es uno solo: la Translation Suite que está compuesta de varios módulos, uno de ellos es el Language Pack, que también se vende de forma independiente. Básicamente leen todos los ficheros de un proyecto mediante un gestor de traducciones y extrae las cadenas de caracteres a una especie de de base de datos donde puede traducirlas a todos los idiomas que quiera. Cuando quiera hacer una versión definitiva en un idioma determinado elija el kit de traducción adecuado desde el gestor, un par de clics y ya tiene la versión final en ese idioma y en todos los que se quiera y mante- niendo sólo un fuente en el lenguaje en que se desarrolló originalmente. Para facilitar más las cosas, vienen todos los recursos de la VCL, diálogos más comunes, etc. ya traducidos a nueve idiomas (español incluido), precisamente esta última parte es el Language Pack. El problema es que este paquete es bastante caro, por lo que solo una empresa con fuertes ventas internacionales podría justificar/amortizar su compra. En cualquier caso con la aparición de la versión 3.0 las cosas se han simplificado enormemente, aprovechando las facilidades que soporta Win32 y siguiendo las últimas tendencias potenciadas por Internet (sin ir más lejos tanto Java como C++ soportan plenamente la LOCALIZACION de recursos, o sea la personalización de formatos, idiomas, etc. con respecto a una localidad determinada). Para una discusión sobre el desarrollo completo de aplicaciones con soporte de internacionalización más amplia recomiendo visitar la página de Valentín Sánchez Izquierdo. Aquí nos vamos a centrar sin embargo en una cosa mucho más concreta: a menudo nos basta con tener la VCL y RTL traducidas al español para poder desarrollar nuestras aplicaciones íntegramente en español (dando por supuesto evidentemente que nuestras aplicaciones se van a ejecutar en un sistema gobernado por una versión de Windows 95 o NT en español). Sin embargo, en ciertos casos, hay cosas concretas en que debido a que el inglés es el lenguaje estándar de intercomunicación, nos puede interesar que en ciertas ocasiones salgan en inglés (o en algún otro idioma). El ejemplo más evidente es de los ficheros usados en Internet, donde en muchos sitios la fecha y/o hora debe figurar obligatoriamente en inglés: cabeceras de documentos HTML, cookies, etc. La RTL de Delphi simplemente usa los valores que Windows le indica. Al instalar Windows, todas las configuraciones posibles se listan en: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\NLS La configuración activa (que es uno de los valores listados), se indica en: HKEY_CURRENT_USER\Control Panel\International Como se ve, es posible tener varias configuraciones en un sistema, aunque sólo una por usuario estará activa. Normalmente además sólo se tiene instalada una, aunque por lo general, hay un montón de lenguajes soportados. Cuando se instala Windows para un lenguaje, siempre se instala un soporte mínimo para otros idiomas. Por ejemplo, el inglés se incluye siempre. Hay que tener en cuenta que este soporte es mínimo, y si por ejemplo intentamos tirar por la solución óptima (cambiar el valor de HKEY_CURRENT_USER\Control Panel\International por el del país que deseemos) nos encontraremos con dos pegas: los cambios no tienen efecto hasta que se rearranca el ordenador, y sobre todo, si el lenguaje no está realmente instalado, tan sólo habrá un pequeño grupo de funciones que se traduzcan, quedando el resto indefinido. Como además todos los programas (bien hechos) se habrán instalado en el lenguaje original, tendremos una mezcolanza de idiomas en pantalla impresionante. Por último, aunque su aplicación mostrará las fechas a su gusto, no será así con el resto de documentos que tenga hecho con otros programas (leáse Word, Excel, etc.). La solución ideal es engañar a Delphi para que lea los valores *que Windows le daría de estar configurado para el idioma que le indiquemos*, y eso es exactamente lo que hace la unidad que se adjunta. La unidad está bastante documentada y con una simple llamada se podrá hacer que los programas en Delphi traten las fechas y horas en el formato e idioma que se desee, del estilo: ---------------------------------------------------------- SetDateMajorkan; ...... .......... {dilluns, 22 / desembre / 1997} SetDateEnglish; ...... .......... {Monday, December 22, 1997} SetDateSpanish, // Que siga normalmente. .... ........ {lunes 27 de diciembre de 1997} ---------------------------------------------------------- Lo dicho, tanto el código como los ejemplos que le acompañan unidos a esta breve introducción permitirán a quien lo desee o lo necesite ponerse manos a la obra inmediatamente. ________________________________________________________________________ 5. OBTENER EL NOMBRE DEL SERVIDOR DADA SU DIRECCION IP Por Ernesto De Spirito <eds2004 @ latiumsoftware.com> Si tenemos una dirección IP en una cadena (como '207.105.75.31') y queremos saber el nombre del servidor a que corresponde, podemos usar la función API GetHostByAddr que se incluye en la versión 1.1 o superior de los 'zócalos' de Windows (Winsock). La función siguiente encapsula la llamada a la API. uses WinSock; function GetHostByAddr(IP: string): string; var WSData: TWSAData; SockAddrIn: TSockAddrIn; HostEnt: PHostEnt; begin Result := ''; // Intenta iniciar una sesión Winsock if WSAStartup($101, WSData) = 0 then begin // Convierte la cadena IP en bytes con el orden de red (Network // byte order) SockAddrIn.sin addr.S addr := inet addr(PChar(IP)); // Invoca GetHostByAddr HostEnt := WinSock.GetHostByAddr(@SockAddrIn.sin addr.S addr, SizeOf(SockAddrIn.sin addr.S addr), AF INET); // Si es correcto... if HostEnt <> nil then // ...obtener el nombre del servidor (valor devuelto por la // función) Result := StrPas(Hostent^.h name); // Cerrar la sesión winsocks WSACleanup; end; end; Ejemplo de utilización: procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetHostByAddr('207.105.75.31')); end; ________________________________________________________________________ 6. FOROS Recordamos a los suscriptores las direcciones de nuestros foros. Para unirse a algún foro, lo más recomendable es hacerlo desde la web para así tener acceso a todas las áreas del foro y la configuración de las opciones de suscripción, pero también es posible suscribirse por email. Para suscribirse desde la web es necesario poseer un ID de Usuario de Yahoo! (si no tienes el tuyo, puedes conseguirlo gratis registrándote como usuario de Yahoo!). * Delphi-abierto. Programación en Delphi (todos los niveles). 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 Suscripción: http://espanol.groups.yahoo.com/group/delphi-abierto/join delphi-abierto-subscribe@gruposyahoo.com * Delphi-intermedio. Programación en Delphi (nivel intermedio). Si ya sabes mucho de Delphi, pero todavía te falta un largo trecho para ser un gurú (o no tanto), este foro es para ti. http://espanol.groups.yahoo.com/group/delphi-intermedio Suscripción: http://espanol.groups.yahoo.com/group/delphi-intermedio/join delphi-intermedio-subscribe@gruposyahoo.com * Delphi-avanzado. Programación en Delphi. Sólo para gurús. http://espanol.groups.yahoo.com/group/delphi-avanzado Suscripción: http://espanol.groups.yahoo.com/group/delphi-avanzado/join delphi-avanzado-subscribe@yahoogroups.com * GrupoKylix. Programación en Kylix. http://espanol.groups.yahoo.com/group/GrupoKylix Suscripción: http://espanol.groups.yahoo.com/group/GrupoKylix/join GrupoKylix-subscribe@yahoogroups.com * FreePascal-es. Programación en Free Pascal (freepascal.org). http://espanol.groups.yahoo.com/group/freepascal-es Suscripción: http://espanol.groups.yahoo.com/group/freepascal-es/join freepascal-es-subscribe@yahoogroups.com * Desarrolladores-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 * Componentes. Un foro para buscar/recomendar componentes de software (componentes VCL y CLX, objetos ActiveX, librerías DLL, etc.), así como utilidades, tutoriales, información, etc. http://espanol.groups.yahoo.com/group/componentes Suscripción: http://espanol.groups.yahoo.com/group/componentes/join componentes-subscribe@yahoogroups.com ________________________________________________________________________ 7. DELPHI EN LA RED Por Dave Murray <irongut @ vizzavi.net> Componentes, librerías y aplicaciones ===================================== Shareware/Comercial ------------------- * SMImport v1.60 - por Scalabium Software Conjunto de componentes VCL nativos para importar datos en un dataset sin librerías externas. Soporta importación desde: MS Excel (sin OLE/DDE), archivos de texto delimitados o de ancho fijo, HTML, XML (sin DOM), MS Access (usando DAO/MS Jet), Lotus 123, QuattroPro, Paradox, DBase y cualquier descendiente de TDataSet. Cambios en v1.60: nuevo motor rápido de planilla de cálculo, interpretación extendida de fecha/hora, experto de modificación, configuración adicional para soporte de formatos personalizados (por ejemplo: símbolo de moneda) http://www.scalabium.com/ * The eBook & Box Cover Creator - Por Laughingbird Software software de creación de cubiertas para cajas, discos, libros, etc. Crea cubiertas tomando cubiertas prediseñadas (25 cubiertas profesionales entre las cuales elegir!), cajas de productos 3D, cubiertas de eBooks, cubiertas de CD y revistas! Para Macintosh y Windows. http://www.thelogocreator.com/ Freeware -------- * Indy 9 - por The Indy Pit Crew, FREEWARE con fuentes Se ha liberado el tan esperado Indy 9. Ahora tiene 115 componentes (69 en Indy 8) y varias mejoras. http://www.nevrona.com/indy * JVCL 1.32 for Delphi 5/6 - por Project JEDI, FREEWARE con fuentes La librería JEDI-VCL (JVCL) está formada por código donado por la comunidad JEDI. Consiste en más de 300 componentes VCL que pueden ser inmediatamente reutilizados en sus proyectos Delphi (y potencialmente Kylix) http://jvcl.sourceforge.net/ * Direct SQL Components - por N Shanny + C Nicola, FREEWARE con fuentes Componentes nativos multiplataforma (Windows+Linux) para acceso directo a servidores SQL sin usar ninguna DLL externa. La primera entrega es para My-SQL pero hay planes de extensión. http://sourceforge.net/projects/directsql/ * SourceForge Setup 1.3 - por Delprhree, FREEWARE con fuentes Escrito en Delphi; puede instalar SSH, configurarlo completamente, y también configurar WinCVS para un proyecto dado. Diseñado para hacer fácil de configurar a SourceForge, está dividido en etapas que pueden ser ejecutadas independientemente. Se puede descompactar SSH, configurar SSH y WinCVS individualmente o todo a la vez, dependiendo de sus necesidades. http://sourceforge.net/projects/sfsetup/ * DelphiWebScript - por Matthias Ackermann + Hannes Hernler, OPEN SOURCE Poderoso motor de scripting para su aplicación o ejecución en el servidor. El lenguaje de script es un subconjunto de Delphi Pascal. Cree funciones propias, librerias de funciones o procesos incrustados en páginas HTML. Cree un módulo DWS ISAPI, NSAPI o CGI en 5 minutos! http://www.swissdelphicenter.ch/en/download.php?id=232&kat=komponenten * ActiveX Scripting Components v1.07 - por A Wingrove, FREEWARE c/f Colección de componentes VCL nativos diseñados para hacer fácil la adición de scripting a sus programas. Requiere el ActiveX Scripting Control de Microsoft. http://www.somethingmore.net/scripting * FreeReport PDF Export Filter v1.0 - por R C Ramirez, FREEWARE c/f Exporte reportes a PDF desde FreeReport/FastReport. Características: copias idénticas de sus reportes sin código extra, marcos, imágenes, líneas, memos, códigos de barras, compresión (usa las unidades ZLib) y más. http://www.torry.net/vcl/reports/reportdesigners/frexppdf.zip * MD5 - por Dimka Maslov, FREEWARE con fuentes Una traducción del algoritmo RSA MD5 Message-Digest descrito en la RFC 1321. Contiene funciones para evaluar la suma hash MD5 de una cadena, un archivo, un stream o cualquier buffer de memoria, para convertir el resultado de una funcion de evaluacion de suma hash en un string de dígitos hexadecimales y para comparar el resultado de dos evaluaciones. No se requieren otros archivos o librerías. http://endimus.com * XPControls v2.10 - por Michael Frank, FREEWARE con fuentes Estilos visuales WinXP, soporta componentes: TXPAnimate, TXPCheckBox, TXPCheckListBox, TXPGroupBox, TXPListView, TXPRadioButton, TXPPageControl, TXPThemeAPI, TXPTrackBar. http://www.torry.net/vcl/packs/interfacelite/xpcontrols.zip * TAnalogGauge v1 - por Vyacheslav Shteg, FREEWARE con fuentes Componente medidor/visor simple para valores analogos, por ejemplo un voltimetro http://www.delphipages.com/uploads/Miscellaneous/AnalogGauge.zip * Gradbar - por Stefan Badenhorst, FREEWARE con fuentes Derivado de TGraphic, dibuja una barra de progreso con gradiente de color y un texto por defecto que muestra la posición. El escalado de los colores del gradiente y el texto pueden cambiarse. http://www.delphipages.com/uploads/Gauges Meters/gradbar.zip * TMxOutLookBar v1.51 - por Lajos Farkas, FREEWARE con fuentes Soporta estilos: Office 97, Windows2000 and Windows XP; cabeceras deslizables; fondo en gradiente, normal y con gráfico en mosaico; bordes (bevels) nuevos de Delphi 6; 100% código VCL nativo. http://www.geocities.com/maxcomponents/ * TMSNPopUp v4.3 - por JWB Software, FREEWARE con fuentes Le permite usar ventanas popup como MSN Messenger, ofrece diferentes estilos de texto, iconos, texto, título, gradientes personalizables, deslizamiento, etc. http://people.zeelandnet.nl/famboek/ * TXMLSerializer v1.0 - por JWB Software, FREEWARE con fuentes (DELPHI6) Pase un objeto como parámetro al componente TXMLSerializer para grabarlo en disco como XML; trabaja con cualquier objeto derivado de TPersistent. http://people.zeelandnet.nl/famboek/ Artículos, trucos y consejos ============================ * About XML and Delphi - by Zarko Gajic Everything you need to know about Delphi and the Extensible Markup Language. Find out about creating and parsing XML documents, look for parser components and more. http://delphi.about.com/library/weekly/aa072500a.htm * TOP 10 Delphi - by Zarko Gajic Most popular Delphi Programming articles on Delphi About, July 2002. http://delphi.about.com/library/weekly/bltop10.htm * How to move the cursor to the currently focused control? http://www.swissdelphicenter.ch/en/showcode.php?id=1300 * How to access protected properties? http://www.swissdelphicenter.ch/en/showcode.php?id=1307 * How to extract the audio stream from an AVI file? http://www.swissdelphicenter.ch/en/showcode.php?id=1309 * How to calculate a simple checksum? http://www.swissdelphicenter.ch/en/showcode.php?id=1311 * How to get names of installed Mail-Clients? http://www.swissdelphicenter.ch/en/showcode.php?id=1319 * How to obtain the path to your program at runtime? http://www.swissdelphicenter.ch/en/showcode.php?id=1321 * How to manage, control NT-Services? http://www.swissdelphicenter.ch/en/showcode.php?id=1322 * How to play sound through a sound card? http://www.swissdelphicenter.ch/en/showcode.php?id=1324 * How to play a wave file backwards? http://www.swissdelphicenter.ch/en/showcode.php?id=1325 * How to obtain DLL-specific version information? http://www.swissdelphicenter.ch/en/showcode.php?id=1327 * How to print an Excel file? http://www.swissdelphicenter.ch/en/showcode.php?id=1328 * How to backup a branch of the registry? http://www.swissdelphicenter.ch/en/showcode.php?id=1330 * How to use Subscript or Superscript in a TRichEdit? http://www.swissdelphicenter.ch/en/showcode.php?id=1331 * How to insert a image into a TRxRichEdit? http://www.swissdelphicenter.ch/en/showcode.php?id=1332 * How to bring up a printer's properties dialog? http://www.swissdelphicenter.ch/en/showcode.php?id=1334 * How to access Listbox items with API? http://www.swissdelphicenter.ch/en/showcode.php?id=1335 * How to scroll a Treeview when Drag/Drop? http://www.swissdelphicenter.ch/en/showcode.php?id=1347 * How to use a Webbrowser's OnDocumentComplete with frames? http://www.swissdelphicenter.ch/en/showcode.php?id=1355 * How to change the TDBNavigator images? http://www.swissdelphicenter.ch/en/showcode.php?id=1358 * How to validate credit cards? http://www.swissdelphicenter.ch/en/showcode.php?id=1365 * How to change size of the Windows Start Button? http://www.swissdelphicenter.ch/en/showcode.php?id=1369 * Something missing about packages - by Pablo Reyes Packages are a great feature of Delphi, you can put not only components into packages but also anything you want. This way you can build modular, customizable applications. http://www.delphi3000.com/articles/article_3328.asp * Debugging Shell Extensions using Delphi - by Alex Tischenko Details of Shell extensions debugging under Windows 9x/W2K/XP. http://www.delphi3000.com/articles/article_3331.asp * Quickly Convert JPEG 2 Bitmap - by Howard Barlow http://www.delphi3000.com/articles/article_3334.asp * Delphi Add-On : What's New and Hot in Delphi - by Zarko Gajic Developing a simple Open Tools API menu expert with Delphi. With this add-on you can get Delphi About's new and hot listing without even leaving the Delphi IDE! http://delphi.about.com/library/weekly/aa070902a.htm * How to fix "dsgnintf.pas not found" - by m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=8&categories=General * How to create a hint window with a thin black border - by m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=8&categories=General * How to add autocomplete to a TComboBox - by m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=8&categories=General * How to refresh file icons - by m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=15&categories=Graphics * How to empty a TImage - by m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=15&categories=Graphics * How to read progress with TWebBrowser - by m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=12&categories=Internet/LAN * Determining Kylix (Linux) Application & Library dependancies - m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=16&categories=Kylix * How to read file version information - by Mike Pijl This function returns the full file version structure. http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=9&categories=System * About Calling conventions http://www.swissdelphicenter.ch/en/showcode.php?id=1233 * How to determine the version of Internet Explorer? http://www.swissdelphicenter.ch/en/showcode.php?id=1252 * How to trap own hotkeys in my application? http://www.swissdelphicenter.ch/en/showcode.php?id=1261 * How to get the primary domain controller (PDC)? http://www.swissdelphicenter.ch/en/showcode.php?id=1272 * How to change the value of Constants? http://www.swissdelphicenter.ch/en/showcode.php?id=1284 * How to quickly create a Paradox table using SQL? http://www.swissdelphicenter.ch/en/showcode.php?id=1286 * How to enable the drop shadow effect on a window (XP)? http://www.swissdelphicenter.ch/en/showcode.php?id=1296 * How to access the controls of a TRadioGroup? http://www.swissdelphicenter.ch/en/showcode.php?id=1297 * How to create transparent menus (2000/XP)? http://www.swissdelphicenter.ch/en/showcode.php?id=1298 * How to prevent a control from Redrawing (Refreshing)? http://www.swissdelphicenter.ch/en/showcode.php?id=1301 * How to analyze PE file headers? http://www.swissdelphicenter.ch/en/showcode.php?id=1302 * How to create a icon in the system tray? http://www.swissdelphicenter.ch/en/showcode.php?id=1303 * How to replace text in a word document? http://www.swissdelphicenter.ch/en/showcode.php?id=1304 * Using XML in Delphi applications: Part I - by Sergey Kucherov Understanding XML, developing your own XML Object Model, writing your own XML parser, using XML in Delphi applications and using XML as a local database. http://www.delphi3000.com/articles/article_3314.asp * Dataset Row Checksum - by Andreas Schmidt http://www.delphi3000.com/articles/article_3315.asp * Using MDI while TMDIForm is not your mainform - Uros Gaber You want to use TMDIForm that you open/create somewhere during runtime and is not the mainform of your application but Delphi doesn't allow you to create a TMDIChild if the TMDIForm is not your mainform. http://www.delphi3000.com/articles/article_3317.asp * Variable number of arguments - by Sigurdur Hannesson How to create functions that can accept n number of arguements. http://www.delphi3000.com/articles/article_3318.asp * Rudimentary Menu Plug In Mechanism - by Alex Wijoyo How to define menu plugins using a text file & create them at runtime. http://www.delphi3000.com/articles/article_3319.asp * Using IStrings and TStringsAdapter - Siva Rama Sundar Devasubramaniam A Simple, Straight forward way of using 'IStrings' interface to pass Multiple Strings from a COM Object. http://www.delphi3000.com/articles/article_3320.asp * Precise timer thread using messages - by Brian Pedersen When programming realtime interfaces and computergames, you need a precise timing signal. The engine must run at the same rate no matter what your framerate is. This example shows a game timer implementation using a thread and messaging. http://www.delphi3000.com/articles/article_3321.asp * Changing Interbase Error Messages in runtime - by Ernesto Cullen Shows a technique used to tackle Interbase errors on the client side, using IBX. Using this technique, you can turn ugly error messages into more user friendly ones, or translate them into your own language. http://www.delphi3000.com/articles/article_3322.asp * How to get an Unique Identifier for a File or Folder - Gerald Koeder Everyone who creates a File/folder copy or move-function must check if a sourcefile/folder exists at the destination. But how can we prove that two files don't point to the same physical place? Win2k and XP allow you to mount any volume under a folder and so it's possible that the files at 'c:\data\*.*' are the same as under 'd:\*.*' for example. http://www.delphi3000.com/articles/article_3323.asp * How to create a Combobox in a Stringgrid - by Boris B. Wittfoth How to dynamically create a Combobox within a Cell of a StringGrid. http://www.delphi3000.com/articles/article_3324.asp * Sending data from database by portions - by Vladimir Orlenko Some times we need send a huge quantity of data from a MiddleWare Server to a client application. If we do it in one portion then the user must wait a long time, but we can send this data in portions, when the user needs it. http://www.delphi3000.com/articles/article_3325.asp * How to get the BDE DLL path - by Mike Pijl http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=13&categories=Databases * How to get a list of open files in the IDE - by m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=14&categories=Delphi/Kylix+ID * Access TListbox, TCombobox, TRadioGroup using types - by Mike Pijl http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=8&categories=General * How to center controls at runtime by code - by Mike Pijl http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=8&categories=General * How to read image pixels fast - by m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=15&categories=Graphics * How to invert a bitmap - by m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=15&categories=Graphics * How to get a file's date and time - by m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=9&categories=System * How to create a temporary filename - by m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=9&categories=System * How to launch the Windows Find dialog - by m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=9&categories=System * How to read the mouse cursor position - by m3Rlin http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=9&categories=System * Accessing DataBase via 3rd server - by Vladimir Orlenko Writing n-tier Application for accessing client's app to DataBase without installing Client of Database via 3rd server using Indy. http://www.delphi3000.com/articles/article_3310.asp * Understanding VisualCLX - Max Kleiner (KYLIX) Beginning with Kylix requires learning about signals and slots, the way Linux/Qt deals with events and the Qt-library. http://www.delphi3000.com/articles/article_3311.asp * Top Modeling/CASE Tools - by Zarko Gajic What are the best UML tools on the market? There are a lot, providing an interesting array of features. Here's a list of suggested tools to make your Delphi developer days easier. http://delphi.about.com/library/toppicks/aatpmodelcase.htm * Simple HTML page scraping with Delphi - by Zarko Gajic Shows the techniques nedded to download an HTML page from the net, do some page scraping (using regular expressions for pattern matching) and present the information in more *situation-friendly* manner. http://delphi.about.com/library/weekly/aa062502a.htm * Making Delphi Interoperate with other languages - by Zarko Gajic How to make Delphi and Delphi apps interoperate with apps written in different programming languages. How to convert the code from other languages to Delphi Pascal. http://delphi.about.com/cs/delphiandothers/index.htm * Creating ASP Objects with Delphi - by Zarko Gajic If you use the MS IIS web server you will have noted its support for ASP. Having created COM objects with Delphi you can easily call your components from ASP scripts. http://delphi.about.com/cs/aspwithdelphi/ * New IDE Building Blocks - by Zarko Gajic Exploring ways to extend the Delpih IDE. Including portability issues, IDE Packages, Desktop Windows and learn to write Design Windows. http://delphi.about.com/library/weekly/aa033099.htm * Using ADO.NET datasets in Delphi - by Zarko Gajic If you've experimented with Web Services you might have seen some .NET based services which return data in the default XML format from ADO.NET. So you end up with XML but with no clue what to do with it! http://delphi.about.com/cs/websnap/index.htm * Data Exchange using XML and Delphi - by Zarko Gajic You have a client-server application with data access via ADO or BDE. It works great on a desktop or on a corporate intranet but Now your clients want to access data remotely across a WAN, or the Internet... http://delphi.about.com/library/weekly/aa072500a.htm * Interview with Chad Z. Hower - by SwissDelphiCenter Interview with Chad Hower ("Kudzu") the original author and project coordinator for Indy, 110+ components included with Delphi 6 & Kylix. http://www.swissdelphicenter.ch/en/chadhower.php * How to find all classes registered by a form class? http://www.swissdelphicenter.ch/en/showcode.php?id=1218 * How to Removing the todays date display from a TDateTimePicker? http://www.swissdelphicenter.ch/en/showcode.php?id=1219 * How to make some Days bold in the TMonthCalendar? http://www.swissdelphicenter.ch/en/showcode.php?id=1220 * How to use Base64 encoding and decoding? http://www.swissdelphicenter.ch/en/showcode.php?id=1223 * How to saving several controls to one single file? http://www.swissdelphicenter.ch/en/showcode.php?id=1224 * How to show my own help dialog when user clicks biHelp border icon? http://www.swissdelphicenter.ch/en/showcode.php?id=1225 * How to tile a non-MDIframe window with a backgrund bitmap? http://www.swissdelphicenter.ch/en/showcode.php?id=1226 * How to set a date of a TDateTimePicker to blank? http://www.swissdelphicenter.ch/en/showcode.php?id=1227 * How to get a list of a printer's capabilities? http://www.swissdelphicenter.ch/en/showcode.php?id=1228 * How to hide properties in the IDE? http://www.swissdelphicenter.ch/en/showcode.php?id=1229 * How to show in-place Tooltips in a TListBox? http://www.swissdelphicenter.ch/en/showcode.php?id=1230 * How to check or uncheck a Checkbox in another window? http://www.swissdelphicenter.ch/en/showcode.php?id=1231 * How to Create a DBExpress-Connection at Runtime? http://www.swissdelphicenter.ch/en/showcode.php?id=1234 * How to Set/Get Accessibility Time-out Periods? http://www.swissdelphicenter.ch/en/showcode.php?id=1235 * How to draw a bounding box with the mouse? http://www.swissdelphicenter.ch/en/showcode.php?id=1236 * How to retrieve information about the current keyboard? http://www.swissdelphicenter.ch/en/showcode.php?id=1237 * How to draw a highlight box around the control under the mouse? http://www.swissdelphicenter.ch/en/showcode.php?id=1238 * How to retrieve the handle to the Windows Shell window? http://www.swissdelphicenter.ch/en/showcode.php?id=1239 * How to get handle to the window that ownes the taskbar buttons (NT)? http://www.swissdelphicenter.ch/en/showcode.php?id=1240 * How to change the Button Captions in MessageDlg? http://www.swissdelphicenter.ch/en/showcode.php?id=1241 * How to transfer strings, images (streams) between processes? http://www.swissdelphicenter.ch/en/showcode.php?id=1242 * How to Encrypt/ Decrypt a String? http://www.swissdelphicenter.ch/en/showcode.php?id=1243 * How to extract numbers from a string? http://www.swissdelphicenter.ch/en/showcode.php?id=1244 * How to use MAPI to send an EMail with Attachements? http://www.swissdelphicenter.ch/en/showcode.php?id=1246 * How to show a miniature view of a Webpage in TWebbrowser? http://www.swissdelphicenter.ch/en/showcode.php?id=1247 * How to tell if a folder is shared? http://www.swissdelphicenter.ch/en/showcode.php?id=1248 * How to check if a page in TWebbrowser is secure (SSL)? http://www.swissdelphicenter.ch/en/showcode.php?id=1250 * How to check if a page in TWebbrowser is on a local drive? http://www.swissdelphicenter.ch/en/showcode.php?id=1251 * How to set/get the background color of a page in TWebbrowser? http://www.swissdelphicenter.ch/en/showcode.php?id=1254 * How to change the scrollbar colors of TWebBrowser? http://www.swissdelphicenter.ch/en/showcode.php?id=1255 * How to obtain the text of a specified window's title bar? http://www.swissdelphicenter.ch/en/showcode.php?id=1257 * How to change the default cell selection color in a TStringGrid? http://www.swissdelphicenter.ch/en/showcode.php?id=1258 * How to link a TFilterComboBox with a TShellListView? http://www.swissdelphicenter.ch/en/showcode.php?id=1259 * How to save a font to the registry/a stream? http://www.swissdelphicenter.ch/en/showcode.php?id=1260 * How to Calculate Easter Day for a specified year? http://www.swissdelphicenter.ch/en/showcode.php?id=1262 * How to capture a column resize event in a TListView? http://www.swissdelphicenter.ch/en/showcode.php?id=1264 * Determine if your program/Service is running under the System account http://www.swissdelphicenter.ch/en/showcode.php?id=1265 * How to save many streams in a (compressed, encrypted) file? http://www.swissdelphicenter.ch/en/showcode.php?id=1266 * How to encrypt a image? http://www.swissdelphicenter.ch/en/showcode.php?id=1268 * How to use a Syntax Highlighter? http://www.swissdelphicenter.ch/en/showcode.php?id=1270 * How to save a file to a TBlobStream and read it back? http://www.swissdelphicenter.ch/en/showcode.php?id=1271 * How to check if a service is running? http://www.swissdelphicenter.ch/en/showcode.php?id=1275 * How to implement AfterShow, AfterCreate events? http://www.swissdelphicenter.ch/en/showcode.php?id=1276 * How to get infos about aliases? http://www.swissdelphicenter.ch/en/showcode.php?id=1277 * How to automatically insert a GUID into the code editor? http://www.swissdelphicenter.ch/en/showcode.php?id=1280 * How to register or unregister an OCX/ActiveX? http://www.swissdelphicenter.ch/en/showcode.php?id=1281 * How to check for prime numbers http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=10&categories=Math * How to get the battery life http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=11&categories=Hardware * How to resolve a host name http://www.delphifaq.net/modules.php?op=modload&name=FAQ&file=index &myfaq=yes&id_cat=12&categories=Internet/LAN Tutoriales ========== * Create an effective Data Model for your Database The three phases of the data modeling process will help you create an effective business database that transcends applications and won't need reworking when new data is introduced. Learn about these three phases and get more data modeling resources. http://builder.com.com/article.jhtml?id=u00320020605dol01.htm * Use SQL Subselects to consolidate queries - by Shelley Doll Are normalized data structures giving you problems? Learn how to use the SQL subselect statement and handle your database like a pro! http://builder.com.com/article.jhtml?id=u00320020703dol01.htm * Creating Custom Delphi Components: Inside and Out - Alistair Keys This tutorial explains component writing which should result in more code reuse. It goes over properties, events and methods, and also how to install components. The final part is about Object-Oriented design. http://delphi.about.com/library/bluc/text/uc061102a.htm * Remedial XML: Learning to play SAX - by Lamont Adam Using DOM to parse XML documents you will notice that performance suffers when dealing with large documents. This is endemic to DOM's tree-based structure so where performance is problematic you can use the Simple API for XML (SAX). This part of the Remedial XML series introduces the SAX API and provides some links to implementations. http://builder.com.com/article.jhtml?id=u00220020527adm01.htm * Remedial XML: For Further Reading - by Lamont Adams Wraps up this six-part remedial XML series with a list of suggested Web resources to further your studies. http://builder.com.com/article.jhtml?id=u00320020521adm01.htm Otros enlaces ============= * Press Release: Borland Breaks New Ground with C++Technology for Linux® Kylix 3 delivers the first C/C++ and Borland Delphi integrated rapid application development solution for creating database, GUI, Web, and Web Services applications for the Linux® operating system. http://community.borland.com/article/0,1410,28896,00.html * Vote in Linux Journal's 2002 Readers' Choice awards Vote for your favorite Linux related products. http://community.borland.com/article/0,1410,28921,00.html * Web Services: Messiah or Mirage? - by David Braue Software vendors keep telling us that Web services are the answer but noone knows the question. Explore the state of Web services today. http://builder.com.com/article.jhtml?id=u00420020626gcn01.htm * Programming within your comfort zone - by Shelley Doll It's nice to be the expert but as time passes & technologies advance, your area of expertise shrinks noticeably. If you never stop to look outside your comfort zone you could be using obsolete techniques and spending time programming solutions that have already been solved. http://builder.com.com/article.jhtml?id=u00420020620dol01.htm ________________________________________________________________________ ¡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 boletin-pascal-subscribe@gruposyahoo.com 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.sandbrooksoftware.com/cgi-bin/TopSite2/rankem.cgi?id=latium http://news.optimax.com/topdelphi/links.exe/click?id=70C517ECAE6E http://www.programmingpages.com/?r=latiumsoftwarecomenpascal http://www.top219.org/cgi-bin/vote.cgi?delphi&83 http://top100borland.com/in.php?who=20 http://top200.jazarsoft.com/delphi/rank.php3?id=latium http://213.65.224.200/cgi-bin/toplist.cgi/hits?Id=80 http://www.programacion.net/votar-enlace.php?id=474 http://www.lawebdelprogramador.com/buscar/enlace.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/descarga/p0038.zip ________________________________________________________________________ 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: eds2004 @ 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 ________________________________________________________________________ |
Los ejemplos completos de código fuente de este número están disponibles para descargar.
![]() |
¿Errores? ¿Omisiones? ¿Comentarios? Por favor contáctanos!






