lunes, diciembre 18, 2006

Codegear

 

Pues el sitio de la nueva compañia "is up and running", ya esta disponible y se puede visitar http://www.codegear.com la nueva casa de Delphi.

 

Aprovecho para mandarle un saludo a todo mundo y desearles Feliz Navidad y año nuevo 2007!!!

Ando un poco atareado por esta epoca navideña pero no me olvido...

 

Saludos a Hector Jesus Avila... echale mi Chuy!!!

miércoles, noviembre 15, 2006

Delphi ya tiene dueño

Bueno, en realidad no es dueño nuevo... sigue siendo Borland, no se si recuerden pero por ahi hace un aproximadamente un año que Borland anuncio la venta de sus productos de desarrollo... o sea Borland developer studio, JBuilder, etc.. y pues hace un par de dias se anuncia que siempre no se vendio, pero si que han creado una subsidiaria totalmente independiente que se encargar de las herramientas de desarrollo, esta nueva compañia se llama "CodeGear"... asi es que Delphi tiene nueva casa....

Bueno Bienvenido CodeGear y esperemos que todo sea cada vez mejor...

"Letter to our customers, partners, and fans from Ben Smith, CEO CodeGear"

Aahhh, aprovecho para anunciar que casi vuelvo, nomas me doy una escapadita a mi durango este puente del 20 de nov y seguimoss.....

 

Saludos a Ivette Mora!!!

lunes, octubre 09, 2006

Developers Community Day - Cd. Juarez

Se acerca el dia del evento de MS en Cd. Juarez, que es el proximo 17 de Octubre 2006, si eres de Cd. Juarez o tienes posibilidad de venir te hago extensa la invitacion para que te registres en la siguiente direccion:

Developers Community Day

Registrate!! o como dirian los gringos Register Now!! its Free...

viernes, septiembre 29, 2006

Mezclando Managed Code and UnManaged Code

En estos dias he tenido la talacha de tener que importar y/o usar Dll's escritos en VB 6 (grrrr) y pa acabarla sin nada de documentacion por parte de los creadores de los Dll, simplemente no soportan .Net, y pues claro hay que escarbar en la isla del internet a ver que se encuentra por ahi... Alguien es chucho para esto? Escribame o mandeme un comentario, jajaja!! o pongan algo en el chat de este Blog!!

Ire actualizando esta entrada conforme vaya avanzando...

Lo poco que se es que hay un Record declarado como el sig:

Public Type registro_INFO
  Clave As String * 19
  archivoclave As String * 256
  archivover As String * 256
  password As String * 256
End Type

y el DLL exporta una funcion como esta:

GeneraArchivoDig(ByVal strArchOrig As String, ByVal tipo As Long, ByRef VALORES() As registro_INFO) As Long

El dll es una biblioteca dinamica pero no es de tipo COM...

Aaahh, muy bien gracias al comentario de Carlos, y comence a sospechar de que tal vez el DLL no esta hecho en VB, empeze a escarbar un poco mas y la Doc que tengo solo dice como utilizarla en VB... pero ya encontre algo mas... encontre las definiciones en C (en otro lado y no el doc), y son asi:

typedef struct struct_INFO
{

  char Clave[19],
  archivoclave[256],
  archivover[256],
  password[256]

} struct_INFO ;

int GeneraArchivoDig(char *strArchOrig, int tipo, struct struct_INFO *VALORES);

 

 

Ahh, ya bajaste el patch de Delphi, bueno si se te paso aqui te dejo un link de donde puedes bajarlo, busca Turbo Explorer hotfix rollup..

Y claro ya esta disponible otro sreencast de Nick Hodges:

28.- Live Templates (Post)

Por ultimo, si eres Delphiniano te invito a que te apuntes en el mapa de los Delphinautas, puse un mapita en la "sidebar" de este blog, ahi seleccionalo y dale clic an Add, o ve directamente a la pagina:

http://www.frappr.com/delphinautes

Saludos!

viernes, septiembre 22, 2006

Reproducir video...

En respuesta a la pregunta que dejaron en el chat :)

Como no tengo el Delphi 6, pues el siguiente ejemplo lo hice en Turbo Delphi explorer. Asi es que espero y estos componentes ya existian en el Delphi 6....

La forma mas facil y rapida es la siguiente:

1.- Crea un proyecto de tipo VCL Forms Application - win 32 (en delphi 6 solo crea un proyecto nuevo).

2.- De la paleta de componentes y de la pestaña System, localiza y arrastra a la forma el componente llamado TMediaPlayer

3.- De la paleta de componentes y de la pestaña Dialogs, arrastra un componente TOpenDialog.

4.- De la paleta de componentes y de la pestaña Standar arrastra y coloca un componente TPanel.

5.- De la paleta de componentes, en la pestaña Additional, arrastra y coloca dos componentes TBitBtn en la forma, al primero le pones de caption &Open, al segundo busca la propiedad Kind cambiale a bkClose y solo se pondra el caption y tambien el bitmap de Close.

6.- Selecciona el componente MediaPlayer1 y establece las siguientes propiedades: Display -> Panel1, o sea a la propiedad Display asignale el Panel1.

7.- Selecciona el componente OpenDialog1 y establece las propiedades como muestra la imagen debajo y que estan en un rectangulo rojo.

8.- Haz doble click sobre el boton 1, y escribe el siguiente codigo:

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    MediaPlayer1.FileName := OpenDialog1.FileName ;
    MediaPlayer1.Open ;
  end;
end;

9.- Compila y corre el programa (F9), dale clic al boton abrir, selecciona un archivo de video y dale ok, dale click a la flecha de Play en el componente MediaPlayer y disfruta el video... Para salir del programa solo dale clic al boton Close

 

Claro, no es un quicktime player, ni un windows media player o un winamp, simplemente es lo mas basico y que funciona para aplicaciones que solo quieran mostrar algun video, de introduccion por ejemplo...

Saludos!

lunes, septiembre 18, 2006

Continuando...

Aqui les dejo otros 4 screencast's del Delphi Product Manager, o sea Nick Hodges:

24.- Turbo Pad - Guardando (Post)

25.- Turbo Pad - Menú de edición (Post)

26.- Turbo Pad - Barra de herramientas (Post)

27.- Turbo Pad - Ajuste de línea y fuentes (Post)

We are back...

miércoles, septiembre 13, 2006

Screencasts with Turbo Delphi

Ahh, me fui a mi tierra de nuevo!! Pero ya regrese...

Y como creo que ya bajaron e instalaron la version gratuita de Turbo Delphi for .Net, aqui les dejo los demas links de los screencasts para practicar un poco:

16.- Polimorfismo (Post)

17.- Por que OOP (Post)

18.- Propiedades (Post)

19.- Visibilidad de campos (Post)

20.- Constructores y destructores (Post)

21.- Turbo Pad - About Box (Post)

22.- Turbo Pad - File Open (Post)

23.- Turbo Pad - File Menu (Post)

Ahh, y ya que andamos con eso del Turbo Pad, NotePad y esas cosas, les dejo un link de un programita que me gusto para editar XML (Si debe de haber mucho mas y tambien gratuito, tienen uno mejor, compartanlo!), extrañamente se llama XML Pad, Saludos!!

miércoles, septiembre 06, 2006

Instalando Turbo Delphi .Net

 

Pues no podia dejar pasar la oportunidad de instalar la version free de Delphi for .Net, lo instale sobre el windows vista 5536, tuve alguans broncas de compatibilidad, pero quedo funcionando... por mientras les

dejo unas imagenes de como me fue :)

Esta la pantalla de inicio...

 La pantalla de instalacion...

 

 Que desea instalar?

 

 Dice que hay que esperar 35 segundos, sera cierto?

 Si la primera vez que lo corres no lo haces con derechos de administrador te sale este error...

 Vaya, dice que la licencia expira dentro de 36558 dias, mmm.. wtf!

Lo que si no pude hacer, es que detectara el IIS 7 del windows vista :(

 Por ultimo un par de fotos del win que no tienen nada que ver.. pero que pronto posteare de como me fue con la instalacion del vista...

 Experience Index?

 Cambiar de aplicacion (Tecla de windows+Tab)

martes, septiembre 05, 2006

The Turbos are Here!!!

Ya estan disponibles para bajar las versiones turbo de Delphi, Delphi for .Net, C++, C#, sigan alguno de estos links:

Borland Site

Delphi-Praxis Site

A chupar diria el sanguijuelo del Benito...

lunes, septiembre 04, 2006

Caso de estudio

Ok, despues de investigar un poco... y hasta toparme con el mismo articulo con el que se topo Kamikaze, pues efectivamente, existe ese detalle! En realidad no es un problema del Framework, tampoco es problema de logica/programacion... asi esta diseñado y como no se le puede dar gusto a todos, pues algunos se presentan con estas situaciones no deseables, efectivamete todo el problema viene en la serializacion y deserializacion de DateTime... Un ejemplo bueno es una fecha de cumpleaños, donde solo te interesa la fecha y no la hora, muchos de nosotros no sabemos a que hora nacimos, ok, suponiendo ando de vacaciones en x lugar que tiene horario diferente al mi ciudad, y en ese viaje me doy de alta en una pagina importante para mi, y al darse de alta digo yo naci el 4 de Julio, haaay we.. bueno el caso es que cuando llego a mi ciudad y veo mis datos dice que naci el 3 de Julio, porque la convertir la hora  ami tiempo local y al hacer la resta de horas, pues me da 3 de Julio, el cual para mi es incorrecto... Ah solo es un ejemplo donde esto puede llevar a un comportamiento no deseado y no necesariamente mal (que nunca quize decir esta mal mi logica o esta mal el .net)

En cuanto a manejar todo en UTC, pues tambien tiene sus detalles, como dice el articulo, no es 100% confiable debido a los horarios de verano.. pero bueno es solo una hora la que se "pierde" en el universo y a lo mejor esto no afecta a la mayoria...

Bueno por ahorita mi posible solucion es implementar uno de los workarounds que se encuentran en varios articulos de la red...

Por cierto para mañana tengo otro caso de estudio (asi es como le llamo a los problemas)....

*********************************************************

Cuantas veces no hemos tenido broncas con resultados inesperados, o por lo meno inesperados para nosotros pero esperados para el sistema, jajajajajaja... bueno antes de ponerme a investigar a fondo aqui les dejo una pregunta para los dot neteros, a lo mejor y alguien ya se topo con eso y ya encontro una solucion:

Si tengo un webservice en un servidor (virtual o no virtual), y una base de datos en el mismo server, y ademas tengo un programa cliente que accesa a ese webservice y le pide datos de la DB...

Pues bien el detalle que surgio es el siguiente: Si en la PC donde se esta ejecutando el webservice tiene una zona horaria (digamos Eastern Time por ejemplo) diferente a la de la maquina cliente (digamos GMT-07 Chihuahua) pues me hace por ahi una conversion indeseada (por lo menos para mi) de las fechas... Pues resulta que si un programa cliente da de alta un registro con la pura fecha (sin el time) el cliente manda ese dato al server, el server lo guarda pero ajusta la fecha basado en su zona horaria, si el cliente manda una fecha digamos 14 de Sept, en la base de datos se guarda 15 de Sept, pero al leerlo el cliente pone 14 de Sept, como si todo estuviera muy bien... es decir al mandar una fecha por el cliente, el webservice la toma y automaticamente la convierte y la guarda en la DB "convertida", al leerla el cliente, el webservice lee los datos y los convierte y el cliente la lee como deberia de ser... pero que pasa si en el cliente ejecutas un query construido directamente en codigo (ej. select * from Socios where FechaIngreso = '09/14/2006'), pues ya no encuentra el registro en la DB y esto puede causar muchos dolores de cabeza...

Alguien sabe como decirle al .net, que no haga ninguna conversion.. si mando 9/15/2006 12:00:00 AM, que asi lo guarde en el server aunque este este en japon y viceversa, que si lee 9/15/2006 12:00:00 AM, asi lo ponga el cliente aunque este en una zona horaria distinta? o cual seria lo correcto en este caso para evitar algun problema parecido?

Bueno espero a esos dotneteros chuchos que yo se hay muchos por aqui :))

PD: Estoy utilizando .Net 1.1 y no me puedo migrar al 2.0, que ya resolvio este problema :(

sábado, septiembre 02, 2006

More...

Bueno seguimos dando los links de los screencast's de Nick Hodges:

13.- Procedimientos y Funciones (Link al Post)

14.- Unidades (Link al Post)

15.- Herencia (Link al Post)

martes, agosto 29, 2006

Records

Seguiremos con los cambios si vienes de Delphi win32 (la mayoria de los que se quedo en win32 lo hizo con Delphi 7, asi es que habra algunos que ya vieron estos cambios para win32 despues de la version 7) a delphi .Net, otro cambio es en las estructuras de datos tipo Record como el struct en C, aquellas donde podiamos agrupar varios campos se transforma para tener un comportamiento mas parecido a una clase.

En Delphi clasico solo podiamos definir los campos en un Record:

Persona = record
Nombre:
string ;
Paterno:
string ;
Materno:
string ;
Edad : Integer ;
end ;


 y podiamos utilizar esa estructura de la siguiente forma: 


var
p: Persona ;

begin
p.Nombre :
= 'Manuel' ;
p.Paterno :
= 'Perez' ;
p.Materno :
= 'Lopez' ;
p.Edad :
= 22 ;

MessageBox.Show(p.Nombre
+' '+p.Paterno) ;
end ;

 Ahora los tipos Record tambien soportan metodos, propiedades, constructores y tipos anidados, por ejemplo:



type

Persona
= record
Nombre:
string ;
Paterno:
string ;
Materno:
string ;
Edad : Integer ;
function NombreCompleto:
string ;
procedure AsignaEdad(NuevaEdad: Integer) ;
end ;

{ Persona }

procedure Persona.AsignaEdad(NuevaEdad: Integer);
begin
Self.Edad :
= NuevaEdad ;
end;

function Persona.NombreCompleto:
string;
begin
Result :
= Self.Nombre+' '+Self.Paterno+' '+Self.Materno ;
end;


y su uso es practicamente el mismo:



var
p: Persona ;

begin
p.Nombre :
= 'Manuel' ;
p.Paterno :
= 'Perez' ;
p.Materno :
= 'Lopez' ;
p.AsignaEdad(
25);
MessageBox.Show(p.NombreCompleto
+', '+p.Edad.ToString) ;
end ;


Y me imagino que de ahi surge la inche pregunta.. entonces cual es la diferencia entre un record y una clase? Aqui las listo:


* Los Records no soportan herencia.


* Los Records pueden contener partes variantes, las clases no.


* Los Records son tipos por valor, es decir pueden ser copiados en una asignacion, pasarlos por valor, y son alojados en la pila (a menos de que sean declarados globales o explicitamente creados con new y dispose). Las clases son tipos por referencia, no pueden ser copiadas por asignacion, se pasan por referencia y se alojan en el "heap".


* Los Records soportan sobrecarga de operadores en win32 y .Net, las clases solo permiten sobrecarga de operadores en .Net


* Los Records son construidos automaticamente, usando un constructor por default y sin argumentos, si declaras un constructor en un Record este forzosamente tendra que llevar argumentos, mientras que las clases tienen que ser construidas explicitamente.


* Los Records no pueden tener destructores.


* Los metodos virtuales, que son los que especificas con virtual, dynamic o message no pueden ser usados en un Record.


* Los Records en win32 no pueden implementar interfases, pero los Records en .Net si pueden implementarlas.

Que sigue...

 

Bueno despues de haber salido un par de dias a mi tierra retomamos esto, pues la semana pasada estuve preparando unas cosas porque iba a salir a mi Durango, Mex., estuve alla y llovio padre, ya hacia mucho que no veia lluvia de esa manera, o la neblina que tenia años que no la veia como el domingo al levantarme muy temprano, salir y ver la calle completamente llena de niebla, cosa que nunca pasa en Juarez o por lo menos no me ha tocado verla...

Ok, esta noche escribire sobre mas diferencias de Delphi Win32 y Delphi .Net, para aquellos que se quedaron en Delphi 7 o simplemente no han creado proyectos winforms o webforms en Delphi.

 

Saludos a Juan Hidalgo Carmona y felicitarlo por su primer Bebita!!!!

viernes, agosto 25, 2006

Links

Continuamos con los links a los screencasts:

7.- Tipos de datos basicos (Articulo aqui)

8.- Conjuntos (Articulo aqui)

9.- Arreglos (Articulo aqui)

10.- Records (Articulo aqui)

11.- Acceso Basico a Datos (Articulo aqui)

12.- Clases Basicas (Articulo Aqui)

Y bueno ya que andamos con links relacionados con el Delphi, pues ahora les dejo uno pa que bajen el codigo fuente del Quake 2 portado a Delphi... Chequenlo Aqui...

Bueno, me voy en este momento a Durango, ahi nos vemos mañana por mi tierra querida!!

lunes, agosto 21, 2006

DB Web

Antes de continuar actualizemos los links de los Screencasts con Turbo Delphi:

4.- Introducción al Lenguaje (Articulo Aquí)

5.- Introducción al Lenguaje Parte II (Articulo Aquí)

6.- Manipulación Básica de Cadenas (Articulo Aquí)

Los links de los screencasts anteriores los podemos encontrar al final del post anterior donde hablamos de BDP.

Como vimos con BDP, Borland Devco tambien creo controles para ASP .Net, en este caso aparecen en la Tool Palette bajo la pestaña que dice DB Web, y la cual tiene los siguientes controles:

1.- DBWebDataSource: Esta clase nos sirve para especificar la fuente de datos que va a proveer los datos que se le van a pasar aun control de datos. Funciona en conjunto con BDP y tambien con ADO .Net, El componente automaticamente identifica las relaciones, llaves primarias, etc del DataSet referenciado. Almacena informacion de errores para cada tabla. Tambien maneja y administra el estatus, binding y las conexiones a los DataSets, DataTables o DataViews.

2.- DBWebAggregateControl: Sirve para obtener resultados de funcion de "agregacion", es decir resultados de sum, avg, max, min, count de una columna de datos. El control muestra el valor en un TextBox y tambien le agrega un Label si le especificas la propiedad Caption.

3.- DBWebCalendar: Un componente que es un calendario "data-aware", es decir con acceso a una fuente de datos.

4.- DBWebCheckBox: Creo que todos conocemos los checkboxes, este tiene la funcionalidad de que es "data-aware", ademas de aceptar campos boleanos, tambien acepta campos de tipo string, aunque solo reconoce los siguientes valores cuando el campo es cadena, 'true', 'false', 'yes', 'no', 'on' y 'off'. ¿Y donde quedo uno como este para WinForms?

5.- DBWebDropDownList: Es un ComboBox con acceso a datos, se puede "poblar" con datos de un DataSet (Como un DBLookupCombo).

6.- DBWebGrid: Es un DataGrid, pero con mas funcionalidad, por ejemplo en la reunion de la comunidad mencionaron lo de la paginacion del grid, pues claro que Borland Devco ya incluye esta funcionalidad desde hace rato :), le puedes especificar el numero de renglones por pagina, editar renglones, reconoce las llaves primarias, etc.. tambien incluye todo lo del DataGrid de Asp .Net. (Claro y como Delphi nos tiene acostumbrados, desde diseño puedes llenar y ver los datos en el Grid y ver como va a quedar con datos)

7.- DBWebImage: Un control para mostrar imagenes, es "data-aware" y reconoce los campos "BLOB" de una base de datos, soporta los formatos de imagenes web estandars (jpg, gif, bmp y png).

8.- DBWebSound: Un web control, que permite reproducir un archivo de sonido, tambien es "data-aware" y soporta campos "BLOB", adicionalmente le puedes especificar una cadena, cuando es cadena esta debe de ser el nombre de una archivo de sonido, pudiendo ser un archivo mp3, wav, wma, etc.

9.- DBWebVideo: Un control muy parecido al anterior, solo que este es para archivos de video, igual soporta campos "BLOB" y string, cuando es cadena se especifica el nombre del archivo de video.

10.- DBWebLabel: Igual que un Label normal, solo que este es "data-aware" :)

11.- DBWebLabeledTextBox: Es una extension de un TextBox, "data-aware" pero con un Label adjunto, se puede especificar el caption a usar y la posicion de este.

12.- DBWebListBox: Es como un control ListBox con propiedades Lookup y con acceso a datos.

13.- DBWebMemo: Un control que deriva de un TextBox, solo que multilinea, con acceso a datos.

14.- DBWebNavigator: Un control navegador de datos, en la comunidad mencionaron algo parecido, es como un BindingNavigator, parece ser que los usuarios de VS no lo tenian en .Net 1.1, con botones para los registros como Siguiente, Anterior, Primero, Ultimo, Refresh, Agregar, Borrar.

15.- DBWebNavigationExtender: Esta clase actua como un extensor para cualquier control estandar web, para que actuen como controles "data-aware" y tambien operaciones de navegacion como siguiente, anterior, refresh, etc.

16.- DBWebRadioButtonList: Este control encapsula una serie de RadioButton, por default son 3, el control se acomoda automaticamente segun el numero de radiobuttons y captions que se especifiquen. Como todos los controles de esta pestaña, tiene acceso a datos.

17.- DBWebTextBox: Pues a que no adivinan... es lo mismo que un TextBox comun, solo que con acceso a datos, es decir le puedes especificar un dataset, una tabla y un campo donde leer o guardar los datos.

miércoles, agosto 16, 2006

ADO .Net ---> BDP

El lunes pasado fue la reunion de la Comunidad .Net de Juarez, y se hablo de ADO .Net, y pues para los que fueron y utilizan Delphi .Net (como los compañeros de trabajo), pues vamos a hablar de BDP (Borland Data Provider), BDP es un modelo de datos alterno a ADO .Net y esta disponible desde que salio el .Net Framework 1.0, por ahora vamos a listar los componentes que se incluyen en BDP, estos componentes son estandars y vienen con el Delphi y no estan disponibles por separado, digamos que es un beneficio extra para los que desarrollan aplicaciones .Net con Delphi.

Estos componentes los encuentras en la Tool Palette (En VS se llama ToolBox), en la pestaña que dice Borland Data Provider y son los siguientes:

BdpConnection .- Se utiliza para establecer una conexion con una base de datos, algo parecido a lo que vimos en la comunidad donde mencionaron clases como SqlConnection, OracleConnection, etc.. tambien mencionaron que en .Net 2.0 se implemento algo asi como basado en un modelo de proveedor, no recuerdo el nombre que dijeron exactamente, pero en estos dias investigo.. llamado ADO.NET 2.0 Factory Classes (Gracias a KaMiKaZe por recordarmelo). Bien pues como decia, Borland ya implemento algo muy parecido desde hace rato, con la clase BDPConnection te puedes conectar a alguna de las siguientes bases de datos (sin tener que utilizar otro componente o clase): IBM DB2, Borland Interbase, Microsoft Access, Microsoft SQL Server, Oracle Database, SyBase y MySql.. solo configuras el connection string ya sea visualmente o con codigo y asi puedes cambiar de manejadores de bases de datos facilmente.

BdpCommand .- Equivalente a SqlCommand, OracleCommand, etc.. Solo que para ser usado con un BdpConnection y por consiguiente en cualquiera de las BD's que soporte BdpConnection.

BdpDataAdapter .- Equivalente a SqlDataAdapter, etc.. Para ser usado con BdpConnection.

BdpCommandBuilder .- Equivalente a SqlCommandBuilder, etc. Para ser usado con BdpConnection.

BdpCopyTable .- Con este componente o clase, podemos copiar una tabla a otra tabla... jajaja, uy que sofisticado me salio... bueno lo interesante de esta clase es que copia la estructura, las llaves primarias, los datos y ademas se encarga de la migracion de los datos... o sea como?? o sea que con esta clase podemos copiar una tabla de sqlserver y guardarla en oracle :)) y la clase se encargara de crear la nueva tabla, primary key, y migrar los datos a la nueva base de datos.

DataHub .- Esta clase sirve como "puente" entre las clases DataSync y un Dataset. Trabaja junto con DataSync para proveer y resolver un DataSet desde multiples fuentes hetereogeneas... whatta?? pues un dataset ya sea de sqlserver o de oracle o de db2, etc... de multiples fuentes, esta clase se usa cuando transfieres remotamente un dataset desde otra aplicacion o aplicaciones multiples con conexiones a diferentes manejadores de bases de datos... bueno ya veremos algunos ejemplos despues..

DataSync .- La clase que resuelve y provee un Dataset desde multiples fuentes hetereogeneas.. mmm, otra vez... recordemos dijimos que trabaja en conjunto con DataHub... ahh, esta un poco complejo de tratar de explicar escribiendolo, creo que lo mejor sera cuando hagamos un ejemplo :))

RemoteConnection .- Esta clase sirve para establecer una conexion con una clase remoteserver, que por supuesto estara en una aplicacion remota. Funciona en conjunto con DataHub y DataSync, claro tambien se necesita RemoteServer... igual, ya veremos un ejemplo :)

RemoteServer .- Se utiliza para "servir" y administrar peticiones de multiples clientes. Estos ultimos cuatro componentes se utilizan en conjunto para implementar de manera sencilla aplicaciones two-tier o three-tier (doble capa o multicapas)... Bueno, esto es un vistazo rapido a los componentes que nos proporciona Delphi para acceso a datos, en los siguientes dias vamos a ir haciendo programitas de ejemplo para ir viendo como se utilizan e ir aprendiendo mas.

 

Si eres principiante o quieres repasar, les voy a dejar unos links de unos screencast's de introduccion al Turbo Delphi. El autor planea publicar 30 screencast's hechos con Turbo Delphi. (Realizados por Nick Hodges)

1.- Introducción al IDE (Post completo Aquí)

2.- Hello World (Post completo Aquí)

3.- Aplicaciones Basicas (Post completo Aquí)

Saludos a Ivonne Santillan que ya se fue a refugiar a su casita y esperar la llegada del nuevo miembro de la familia!!!

domingo, agosto 13, 2006

Programas, Herramientas, Chucherias

Al momento de desarrollar cuantas veces no necesitamos editar una imagen? Cambiarla de formato o cambiarle colores, escalarla o x cosa... Bueno como muchos de nosostros somo pobres y por lo tanto "open sourceros" pues voy a recomendarles algunas herramientas:

Para las imagenes pues muchos pensaran primero en Gimp, que es muy bueno, pero en lo personal me gusto mas el Paint .Net (que no tiene nada que ver ni es el sucesor del paint de windows), les dejo los links para que los prueben y vean que estan buenisimos, por supuesto son Open Source o Free....

Paint . Net
http://www.getpaint.net/

Gimp
http://www.gimp.org/

Ah, pero si tu desarrollo es mas sofisticado y hasta animaciones te avientas, pues ahi esta el programa para hacer animaciones que no le pide nada a otros comerciales.... Blender, excelente ahi les dejo el link para quien tenga el tiempo suficiente... y por supuesto si quieres "renderear" una imagen puedes hacerlo con un plugin para el Blender llamado Yafray...

Blender
http://www.blender.org

Yafray
http://www.yafray.org/


Y antes de que se me olvide, ya que hablamos de lenguajes, si como yo, te gusta el Delphi, pues no dejes de echarle un ojo a Chrome, un "nuevo" lenguaje de programacion tambien basado en Object Pascal y diseñado para .Net y Mono (Y por cierto despues lo analizaremos mas a fondo en un post a futuro), solo que este es una especie de plugin y puede ser usado dentro de Visual Studio, segun esto fue creado para superar o hacer mas faciles ciertas limitaciones de C# y de Delphi (Por cierto C# es muy similar y esta influenciado por Delphi, si ya se que va a pillar mas de uno diciendo que no, que estoy loco... pero investiguen en la red y veran, sobre todo porque el mero mero (Anders Hejlsberg) de C# tambien fue el mero mero en la creacion de Delphi) la verdad solo conozco de la existencia de Chrome y he leido su pagina pero no me he dado el tiempo para probarlo y eso que se ve muy interesante... asi es que despues lo veremos juntos, que les parece?


Chrome
http://www.chromesville.com/


Bueno, solo tuve el tiempo para postear un poco, asi es que nos vemos pronto!!

Saludos a Jeenifer Espino!!

jueves, agosto 10, 2006

Beginners

Varios amigos me han comentado que no saben nada de .Net, asi es que hoy solo les voy a evitar la fatiga de andar investigando y les dejo unos links del buen Alex (un saludo y nos vemos el proximo Lunes en la reunion de la comunidad .Net) que ya se encargo de investigar lo que es y para que sirve el .Net, del lado derecho pueden ver la lista de los posts anteriores, y regresarse a la tarea 1 que ahi empieza lo que es .Net

Que es tecnologia .Net?

Que es un Assembly?

Ultima tarea resuelta?


Y claro no dejen de escuchar los podcast's de Carlos Madrigal (http://podcast.pozotecnico.com/) y de Raul Guerrero (http://superneurona.blogspot.com/) que hablan de desarrollo en .Net y otras pulgas y garrapatas, si les da flojera leer, pues escuchen los podcast de ellos que estan en mp3 y los echan a su iPod (yo prefiero un iRiver) para que los escuchen en el auto (excepto en el avion pk luego los van a acusar que son terroristas y el iPod es el detonador) y/o camino a casa!!

Hasta pronto y un saludote a Liz Enriquez que nos lee desde las tierras de Santiago Papasquiaro!!

miércoles, agosto 09, 2006

Declarando clases en Delphi .Net

Algunos de mis amigos que han programado en Delphi (win32) me han preguntado y comentado que han tratado de hacer un programa en Delphi .Net pero que nomas no le han entendido muy bien, para empezar pues tenemos que mentalizarnos que las cosas van a ser diferentes, que vamos a usar un "Framework nuevo" y por lo tanto las clases disponibles cambian, la migracion no es tan sencilla como podria parecer... Pues vamos a ir viendo poco a poco algunas diferencias....

Lo primero que vemos que cambia para los que estamos acostumbrados al Delphi win32, son que las clases traen nuevos atributos de visibilidad para los miembros de la clase (que algunos tambien entran para win32 a partir de BDS 2005), en Delphi existen las siguientes palabras reservadas para especificar la visibilidad de un miembro: private, protected, public, published, strict private, strict protected y automated (esta ultima es solo para win32), de ahi que la declaracion de una clase en delphi .Net puede llevar la siguiente estructura:

UnaClase = Class
strict private
... // declaraciones strict private en esta seccion
strict protected
... // declaraciones strict protected en esta seccion
private
... // declaraciones private
protected
... // declaraciones protected
public
... // declaraciones public
published
... // declaraciones published
end ;



Cabe destacar que no es necesario indicar cada una de las secciones, una clase solo puede constar de private y public o inclusive sin definir ninguna, si no se especifica por default son published si esta activo {$M+} o de lo contrario son public, es valido declarar una clase asi:


UnaClase = Class(System.Object)
private
... // declaraciones private
public
... // declaraciones public
end ;


Recordemos que nuestra "mother" es la clase System.Object {UnaClase = Class(TObject) es lo mismo} , por default todas las clases derivan de esta clase y si no se especifica pues de todos modos desciende de la clase Object, ssss, a huevo...

Y que diantres significa todo esto? pues es solo el nivel en el que son visibles los miembros de una clase (sea metodo o campo), un miembro strict private es visible solo dentro de la clase en la que se declararon, un miembro strict protected puede ser accesado dentro de la clase en que se declara y desde cualquier clase descendiente sin importar donde sea declarada, los miembros declarados como private son visibles dentro de toda la unidad (Unit xxx) donde esta la clase declarada, los miembros declarados protected tienen la misma visibilidad del private, mas aparte pueden ser accesados desde cualquier clase descendente declarada en otra unidad diferente, un miembro public es visible desde cualquier lado en que la clase pueda ser referenciada, por ultimo un miembro published tiene la misma visibilidad que un miembro publico, la diferencia es que un miembro published genera informacion extra llamada "runtime type information" (RTTI) esta informacion se usa principalmente para mostrar las propiedades en el Object Inspector en tiempo de diseño....

Bueno, es todo por hoy, espero y no se haya hecho demasiado aburrido, pero asi podemos empezar comprendiendo mejor desde la declaracion de las clases e ir entrando poco a poco a .Net, los que ya saben todo esto pues si estoy echando mentiras no duden en hacermelo saber y asi aprender mas :)), tambien cualquier critica, comentario, sugerencia, queja, etc....

Saludos a Fernando Hernandez que hoy me lo encontre en el messenger...

Turbo Delphi

Bueno, vamos a entrarle a esto de los blogs, que en realidad este blog lo cree en el 2004, pero solo escribi unas cosas de caracter personal y pues vamos a darle borron y cuenta nueva!! Primero que nada un saludo a todos los miembros de la comunidad .Net de Cd. Juarez, por ahi conoci a Carlos Madrigal, Pepe devora, Alex Briseño y ya que andamos saludando gente pues un saludote a Juan Hidalgo, Roberto Escobedo alias el Benito que anda por las tierras francesas, al Toño, a Luis Felipe Gonzalez y a otros personajes que se me va el nombre, mil disculpas por todos los que no mencione :)... claro un saludo muy especial a Veronica Avitia.....

Gracias a ellos descubri el pozo tecnico y me volvi pozolero, y tambien escucho el podcast de Raul Guerrero, hasta conoci al Bombetito en la reunion a la que fue en Cd. Juarez... tal vez alguno de ellos conozca quien soy o tal vez no... no lo se.. bueno tratare de recordarles y al que no me conoce pues pa que me conozca, jejeje... Mi nombre es Edgar Montoya, desde hace muchos años he tenido que ver con el "semidesarrollo" o desarrollo de software... claro aun me falta mucho por aprender y no me jacto de ser un programador pragmatico asi es que le vamos haciendo la lucha para acercarnos cada vez mas... Pero a pesar de que me la paso con .Net, asisto a las reuniones de la comunidad .Net de cd. Juarez, pues que creen, soy borlander DevCo y utilizo mayormente las herramientas de Borland, principalmente el Delphi, o en su ultimo caso el Borland Developer Studio... Asi es que este blog sera un poco mas de .Net, pero utilizado con Delphi... asi es que espero y no sea igual a los de los compas... a lo mejor y tiene menos interes pero yo se que por ahi debe de andar alguno que otro que tambien utiliza Delphi y le gustaria saber un poco mas.

Pues es buena oportunidad para que aprendamos cada vez mas y claro tambien vamos a experimentar con herramientas de "ms" e ir aprendiendo mas de C#.

Despues de ese largo choro, y ya para no hacerla mas larga, pues vamos a empezar con una noticia relacionada... Borland (o como se vaya a llamar la compañia o division que se va a encargar de el) planea sacar versiones "Turbo" de sus productos, entre ellos se anuncian:
Turbo Delphi, Turbo Delphi .Net, Turbo C++ y Turbo C#, todos ellos con dos versiones, la version Professional y la version Explorer, lo bueno de todo esto es que las versiones Explorer seran Free o Gratis pa los de este lado del charco.... Algo asi como lo son las versiones Express del Visual Studio.. Se planea su salida para mas o menos dentro de 28 dias... censored, jajajajajajaja....

Para mas informacion pueden visitar el siguiente sitio:

http://www.turboexplorer.com/

Ahh, y para los que quieran ver un video de Turboman.....

Saludos y nos vemos pronto.... espero postear seguido como "Pepe" que al parecer esta rompiendo records ya que lo mencionan por todos lados!