Ver Mensaje Individual
  #2  
Antiguo 14-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
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