Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Duda en declaracion de variables (https://www.clubdelphi.com/foros/showthread.php?t=69975)

Paulao 22-09-2010 15:36:23

Duda en declaracion de variables
 
Tengo un campo del tipo Text en Mysql. Que pasa que yo necesito pasar por una funcion, un parametro para este campo. Este parametro viene de un memo. Como hago para declarar este parametro deste tipo y cargalo en mi funcion?
Si mi campo en el banco de Datos fuera Varchar, yo declararia como string mi variable, pero como es Blob(Text) como yo declaro, pues el contiene varias leneas y tengo que pasar esto en una funcion. Otra cosa, esta funcion está en um servidor de aplicacion(3 tier) y los parametros en el client.

Ñuño Martínez 23-09-2010 15:49:10

Los objetos TMemo tienen una propiedad llamada Lines, la cual es un objeto de tipo TStringList del que puedes extraer el contenido completo como un STRING. Es este último el que debes utilizar. Useasé:

Código Delphi [-]
  PROCEDURE MiMetodo (Texto: STRING);
  ···
VAR
  Memo1: TMemo;
  ···
  MiMetodo (Memo1.Lines.Text);
  ···

Paulao 23-09-2010 16:19:47

la ejecucion de los metodos estan en el servidor y en el client solo se van los parametros. Que pasa que el retorno del servidor para el client es OleVariant y el no soporta TStrings. Entonces pasar un retorno del tipo TMemo no funciona. Pense en un record, pero no se como.

Al González 23-09-2010 17:24:04

Cita:

Empezado por Paulao (Mensaje 377125)
Si mi campo en el banco de Datos fuera Varchar, yo declararia como string mi variable, pero como es Blob(Text) como yo declaro, pues el contiene varias leneas...

Hola Paulao. Aunque un texto esté compuesto por varias líneas, puedes manejarlo como un String. Los diferentes saltos de línea son también caracteres (especiales) que forman parte del texto.

Supongo que esto tiene que ver con el tema: http://www.clubdelphi.com/foros/show...012#post377012

Código Delphi [-]
VarString := StringList.Text;

VarString := Memo.Text;

Saludos. :)

Paulao 23-09-2010 20:10:33

Creo que usteds no intedieron. O que pasa no es manipulacion de string o otra cosa. Es pasarlo de un Servidor de Aplicacion para un Cliente. Es un sistema 3 tier. Entonces tengo un metodo que es executado en el servidor y envia el result para el client via AppServer del Socket. Como estás en el Servidor su tipo es Olevariant(Return). Y este tipo no acepta TStrings o StringList, luego no consigo pasarlo como un Memo, una Lista y etc...
Esta es mi duda.

Al González 23-09-2010 20:31:10

Cita:

Empezado por Paulao (Mensaje 377303)
Creo que usteds no intedieron...Como estás en el Servidor su tipo es Olevariant(Return). Y este tipo no acepta TStrings o StringList, luego no consigo pasarlo como un Memo, una Lista y etc...
Esta es mi duda.

Sí entendimos el problema, Paulao. Pasa como resultado la propiedad Text del TMemo o del TStringList.

Código Delphi [-]
OLEVariantX := Memo1.Text;

o bien:

Código Delphi [-]
OLEVariantX := StringList.Text;

(OLEVariantX = variable, parámetro "return", etc.)

La propiedad Text contiene todas la líneas del texto, el cual así podrá pasarse como OLEVariant sin problema alguno.

El tipo OLEVariant sí es compatible con String, y dentro de ese String Text están todas las líneas del memo.

¿Se entiende un poco mejor? :)

egostar 23-09-2010 21:24:15

Hola Paulao

Como te han explicado, lo que debes pasar es un string, en los métodos tu deseas pasar un StringList (lo que no es permitido)

Tu intentas hacer algo así:

Código Delphi [-]
MetodoX(const Lista: TStringList); stdcall;

Pero lo que debes hacer es cambiarlo a widestring:

Código Delphi [-]
MetodoX(const Lista: widestring); stdcall;

Y en el cliente ya puedes enviar el parámetro como string aunque sea una lista

Código Delphi [-]
MetodoX(memo1.text);

Creo que falta mas información de tu parte para entender como estás generando los métodos en el servidor.

Saludos

Ñuño Martínez 24-09-2010 10:25:51

Sospecho que algo se pierde en la traducción, dado que Paulao es brasileño.:(


La franja horaria es GMT +2. Ahora son las 13:46: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