<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>Te has explicado perfectamente.<br>Me parece que voy a estudiarlo bien porque puede ser la solución.<br>Gracias.<br><br></div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><div style="font-family: arial,helvetica,sans-serif; font-size: 10pt;"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight: bold;">De:</span></b> JoshyFun <joshyfun@gmail.com><br><b><span style="font-weight: bold;">Para:</span></b> Spanish version of Lazarus List <lazarus-es@lists.lazarus.freepascal.org><br><b><span style="font-weight: bold;">Enviado:</span></b> vie,20 noviembre, 2009 12:56<br><b><span style="font-weight: bold;">Asunto:</span></b> Re: [Lazarus-es] Librerías de objetos Visual Studio.<br></font><br>Hello Iván,<br><br>Friday, November 20,
2009, 9:42:13 AM, you wrote:<br><br>IM> El problema que me estoy encontrando, es que los equipos con<br>IM> los que trabajo disponen de SDK's para programar en VS, que son<br>IM> fáciles de usar, pero que luego, en Lazarus, no se si es posible<br>IM> aprovechar.<br>[...]<br>IM> se pueden usar con la herramienta para la que son diseñadas.<br>IM> ¿Qué hay de verdad en eso?<br>IM> ¿Hay alguna manera de poder aprovechar esas librerías?<br>IM> ¿Tendría que contactar con el programador que las hizo para que las adaptara?<br>IM> Cualquier información me vendría bien.<br><br>Las librerías pueden ser en C, esto es con funciones planas<br>las cuales puedes importar directamente en Lazarus y que sólo requiere<br>que conviertas las estructuras necesarias a pascal (h2pas puede ayudar<br>mucho en eso).<br>Y las librerías pueden ser C++ que sólo pueden ser usadas por el mismo<br>compilador que las generó (con raras
excepciones). En estos casos se<br>suele hacer un "aplanamiento" mediante el mismo compilador de C++.<br>Para realizar el aplanamiento primero necesitas saber si vas a tener<br>que derivar clases del SDK, esto es si tus funciones van a usar las<br>clases que ya hay en el SDK o vas a necesitas redefinir nuevas clases<br>derivadas de las que vienen. Todas las derivaciones de esas clases<br>tendrás que hacerlas en el compilador de C++ y después realizar el<br>aplanamiento de todo el conjunto.<br><br>Para realizar el aplanamiento es relativamente sencillo, pero un<br>trabajo manual y un poco tedioso la verdad, y creo que se explica<br>mejor si hago un ejemplo en pseudo-codigo, para ello supongamos un<br>clase en C++ que maneja ficheros, como el TFileStream de pascal (no<br>recurdo bien la sintaxis de C++, ojo).<br><br>class CFileStream<br>{<br>public:<br> HANDLE OpenFile(char *FileName);<br> CloseFile(HANDLE Handle);<br>}<br><br>Para aplanar
esta función necesitamos crear varios datos, uno que<br>controle la instancia, y funciones que creen y destruyan la clase:<br><br>void *CFileStream_Create()<br>{<br> return new CFileStream;<br>}<br><br>void CFileStream_Destroy(void *CFileStream_Handle);<br>{<br> delete (CFileStream)CFileStream_Handle;<br>}<br><br>Lo de arriba es más o menos igual para todas las clases.<br><br>HANDLE CFileStream_OpenFile(void *CFileStream_Handle, char *FileName)<br>{<br> return (CFileStream)CFileStream_Handle->OpenFile(FileName);<br>}<br><br>void CFileStream_CloseFile(void *CFileStream_Handle, HANDLE Handle)<br>{<br> (CFileStream)CFileStream_Handle->CloseFile(Handle);<br>}<br><br>Y ahora exportas esas funciones y ya puedes crear y usar las clases de<br>C++ en tu programa en Lazarus.<br><br>Espero haberlo explicado más o menos :)<br><br>-- <br>Best regards,<br>
JoshyFun<br><br><br>_______________________________________________<br>Lazarus-es mailing list<br><a ymailto="mailto:Lazarus-es@lists.lazarus.freepascal.org" href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</a><br><a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br></div></div>
<!-- cg4.c41.mail.ird.yahoo.com compressed/chunked Mon Nov 16 04:03:34 PST 2009 -->
</div><br>
</body></html>