Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-07-2020
tiqui_loquito tiqui_loquito is offline
Miembro
 
Registrado: oct 2013
Posts: 56
Poder: 11
tiqui_loquito Va por buen camino
error al pasar una cadena de delphi7 a delphi 10.3

Hola a todos

Estoy realizando conexión entre delphi7 y delphi10.3

En delphi7 tenemos el aplicativos que esa el cliente y en delphi10.3 realice una bpl para conectarse a un servicio mediante el post.

Lo que sucede es que envío una cadena desde delphi7 a la bpl pero al llegar a la BPL me llega en caracteres chinos. Se que hay un problema de conversión pero aún no logro encontrar la solución, espero me puedan ayudar.

Código Delphi [-]
var
  vCadena: string;
begin
 vCadena := 'Esta es una cadena de prueba sel servico';

 TU_ServicioCliente.ServicioPrueba(vCadena);//procedimiento en la BPL

Gracias
Responder Con Cita
  #2  
Antiguo 29-07-2020
tiqui_loquito tiqui_loquito is offline
Miembro
 
Registrado: oct 2013
Posts: 56
Poder: 11
tiqui_loquito Va por buen camino
Lo solucione

Solucione el inconveniente con algo de investigación y cacharreo

Por ahora me ha funcionado, tengo que ver con cadenas con más caracteres.

En delphi7 define la variable como AnsiString

Código Delphi [-]
var
 vCadena: AnsiString;
begin
 vCadena := 'Esta es una cadena de prueba sel servico';

y en el servicio igual. Aunque me toco usar UTF8ToWideString, ya que al asignar la variable al label me la enviaba vacía.

Código Delphi [-]
procedure TForm2.validarCadena(pCadena: AnsiString);
begin
  Label1.Caption :=  UTF8ToWideString(pCadena);


Espero a alguien le sea de ayuda alguna vez
Responder Con Cita
  #3  
Antiguo 29-07-2020
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 134
Poder: 19
MaxiDucoli Va por buen camino
No será problemas con la configuración UTF-8?
Responder Con Cita
  #4  
Antiguo 29-07-2020
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.232
Poder: 20
ElKurgan Va camino a la fama
Este problema se ha tratado muchas veces en el foro. A partir de la versión 2009 de Delphi, los antiguos String son ahora AnsiString, y los antiguos WideString son los actuales String. Lo mismo pasa con PChar y PAnsiChar. Todo ello con vistas a soportar Unicode en la herramienta.

Saludos
Responder Con Cita
  #5  
Antiguo 07-09-2020
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por ElKurgan Ver Mensaje
A partir de la versión 2009 de Delphi, los antiguos String son ahora AnsiString, y los antiguos WideString son los actuales String. Lo mismo pasa con PChar y PAnsiChar. Todo ello con vistas a soportar Unicode
Me siento obligado a enmendar una pequeña parte de tu respuesta, ElKurgan. Qué gusto leerte nuevamente, por cierto.

WideString sigue siendo único en su diseño y comportamiento. Ciertamente es Unicode como el String actual, y el valor de ambos se representa como una matriz (array) unidimensional de WideChars. Pero tienen una diferencia importante:

Código Delphi [-]
String1 := String2;
hace que String1 apunte a la misma dirección de memoria que String2, sin copiar realmente ningún carácter. Solo se incrementa en 1 el contador de referencias de la cadena, un pequeño campo numérico interno que indica cuántas variables String están apuntando al mismo contenido. String (o UnicodeString) es un tipo de dato eficiente y ágil para tratar con cadenas de caracteres.

Mientras que
Código Delphi [-]
WideString1 := WideString2;
realmente crea una copia del valor de WideString2, de tal manera que resulta en dos cadenas con los mismos caracteres, y por lógica en un mayor consumo de memoria. A diferencia de String, WideString no usa un contador de referencias. Este tipo de dato es apropiado para usarlo con interfaces COM, donde las cadenas expuestas por la interfaz (en forma de propiedades) o recibidas por la misma (en forma de parámetros) no emplean un contador de referencias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Usar cadena en librería DLL para D7 y RX10 error en tipo de datos al pasar y recibir CrazySoft OOP 4 04-05-2019 21:55:47
pasar este codigo vb 6.0 a delphi7 DarkSton Varios 4 09-10-2018 10:17:35
Ayuda a pasar codigo delphi7 a XE3 elmago00 Varios 2 25-11-2014 19:27:05
pasar for (Entry in FSMBiosTablesList) do a delphi7 fcios Varios 2 01-05-2013 19:50:19
Pasar de Turbo Pascal 7 a DELPHI7 BEPAI Varios 6 14-03-2007 12:44:19


La franja horaria es GMT +2. Ahora son las 21:34:37.


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