Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con uso de DLLs en Delphi 2009. (https://www.clubdelphi.com/foros/showthread.php?t=63778)

Cheerpipe 02-03-2009 18:38:28

Problemas con uso de DLLs en Delphi 2009.
 
Hola a todos.

En algunos proyectos he utilizado dlls de terceros, en efecto tengo varios programas utilizando la libreria de reconocimiento de codigos de barra de Softek, y otros varios.

El problema es que al compilar mis proyectos con Delphi 2009 (Con Hotfix2) las aplicaciones simplemente no funciona, especificamente porque las DLLs no funcionan.

El problema parece ser que el programa compilado con Dlphi 2009 es incapaz de recibir strings desde las DLLs, funciones que generan strings (en las dlls) generan caracteros orientales o simplemente retornan una cadenaa vacia.


Alguien sabe si esto es un caso aislado o un problema conocido de Delphi 2009.

En el caso de softek estoy utilizando el mismo archivo de interfaz .pas que ellos suministran.

De antemano gracias por cualquier ayuda.


EDITADO:

Leyendo por ahi me entere de que el manejo de strings ha cambiado algo en Delphi 2009. El tipo PChar ahora es lo mismo que el PWideCHar, por lo que en la mayoria de los casos el problema se soluciona reemplazando todos los PChar por PAnsiChar en la declaracion de las funciones de la dll.

Bueno, eso fue lo que hice, ahora la DLL funciona parcialmente, pero por lo visto hay funciones que no se debiesen declarar con PAnsichar, si no que con PWideChar.

Mi pregunta concreta es, hay alguna forma de saber el tipo de dato que debo usar?????


Solucionado:

Ademas de reempalzar, en las declaracion de la dll, todos los PChar por PAnsiChar, eso porque PChar es ahora PWideChar, y la mayoria de las DLLs comerciales trabajan con strings ANSI, al transformar un tipo String (que ya no es solo String si no UnicodeString) a PAnsiChar, primer hay que transformarlo a Ansi, por lo que por ejemplo, si desean tomar el caption de una ventana que es de tipo string, tendrian que hacer la siguiente transformacion.

PAnsiChar(AnsiString());

Espero esto pueda ayudar a algun otro colega que este con dolores de cabeza migrando su aplicacion de delphi2007 o menor a Delphi 2009.

PD: El IDE de la version 2009 vuela, comparable con el IDE de VisualStudio :D

ElKurgan 03-03-2009 16:18:33

Muchas gracias por el aporte. Precisamente tenía problemas compilando algunas units antiguas que incluso funcionaban en D2005 y que no sabía por donde pillar los fallos

Un saludo


La franja horaria es GMT +2. Ahora son las 15:18:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi