Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-03-2009
Cheerpipe Cheerpipe is offline
Miembro
 
Registrado: oct 2006
Posts: 46
Poder: 0
Cheerpipe Va por buen camino
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

Última edición por Cheerpipe fecha: 02-03-2009 a las 20:21:22.
Responder Con Cita
  #2  
Antiguo 03-03-2009
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.235
Poder: 20
ElKurgan Va camino a la fama
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Evento Delphi 2009 y C++ Builder 2009 en Guadalajara y Mexico con David poliburro Noticias 14 15-09-2008 01:03:58
Delphi + Dlls + VisualFox brandolin Varios 2 21-01-2006 01:50:40
problemas con DLLs tannyk Varios 2 04-01-2006 14:14:30
Como incluir las DLLS del Delphi en mi proyecto? bustio Varios 2 24-09-2005 17:51:09
Dlls en Delphi Khelma API de Windows 0 08-03-2005 15:52:08


La franja horaria es GMT +2. Ahora son las 00:44:47.


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