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)