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
