Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-11-2013
darkmir darkmir is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 28
Poder: 0
darkmir Va por buen camino
Exclamation Error al mostrar Cadena(AnsiString) desde una función

Hola a todos, trato de mostrar una cadena (AnsiString) en un TEdit llamandolo desde otra función, pero me muestra error de conversión, el error es el siguiente:

Código:
[bcc32 Error] Unit1.cpp(26): E2034 Cannot convert 'UnicodeString' to 'TStrings *'
  Full parser context
    Unit1.cpp(25): parsing: void _fastcall TForm1::Button1Click(TObject *)
el código que utilize es :

Código:
void mostrar(TStrings *P)
{
    P->Add("Hola Mundo");
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   mostrar(Edit1->Text);
}
he estado tratando de convertirlo pero no he podido hasta el momento, cambie de TStrings a AnsiString de esta manera:

Código:
void mostrar(AnsiString prueba )
{
    prueba ="Hola Mundo";
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   mostrar(Edit1->Text);
}
no me da errores, pero no me muestra la cadena ("Hola Mundo"), sale en blanco, cualquiera de los 2 metodos que me puedan ayudar, se los agradezco de antemano.

Saludos.
Responder Con Cita
  #2  
Antiguo 14-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola darkmir.

En el primer código:
Código:
void mostrar(TStrings *P)
{
    P->Add("Hola Mundo");
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   mostrar(Edit1->Text);
}
El parámetro P está declarado de tipo TStrings y le envias un argumento de tipo AnsiString, de allí el error. No sucede lo mismo si envias un argumento del tipo correcto, por ejemplo:

Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 mostrar(ListBox1->Items); // o Memo1->Lines, ...
}
En el segundo código:
Código:
void mostrar(AnsiString prueba )
{
    prueba ="Hola Mundo";
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   mostrar(Edit1->Text);
}
Tenes declarar el parámetro por referencia, ya que lo está por valor y así no se alterará el valor de la varíable enviada como argumento:
Código:
void mostrar(AnsiString &prueba )
{
  prueba = "Hola Mundo";
}
De todos modos no va a funcionar de forma directa con Edit->Text, ya que Text no es la variable en sí sino una propiedad que la referencia, así que tendrías que usarla de este modo:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString s;
  mostrar(s);
  Edit1->Text = s;
}
Si deseas ahorrarte la variable AnsiString (s), una opción es:
Código:
void mostrar(TEdit *ED )
{
  ED->Text = "Hola Mundo";
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  mostrar(Edit1);
}
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 14-11-2013
darkmir darkmir is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 28
Poder: 0
darkmir Va por buen camino
Gracias

Muchas gracias ecfisa por el código, pero agradesco más por la explicación en ellos.
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
funcion split de una cadena look OOP 4 10-10-2011 23:14:56
Llamar funcion dll con una cadena... robinsongm Varios 6 26-02-2010 20:55:21
Funcion para borrar la cadena que aparesca repetida dentro de otra cadena flystar Varios 1 02-07-2007 23:51:10
Funcion para buscar cadena dentro de otra cadena y el numero de veces flystar Varios 3 02-07-2007 22:48:08
Funcion de Que Retorna una Cadena Abel Garcia Firebird e Interbase 4 23-07-2005 10:30:02


La franja horaria es GMT +2. Ahora son las 01:24:11.


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