Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   PansiChar a string (https://www.clubdelphi.com/foros/showthread.php?t=49867)

jorgegetafe 01-11-2007 16:17:31

PansiChar a string
 
Tengo un problemilla, necesito leer el contenido de edit1 (edit1.text que es de tipo pansichar verdad?) y utilizar dicho contenido en una función que requiere un string, pero claro, me da error por tipos incompatibles.

¿Hay alguna manera de pasar un pansirchar a un string? Estoy buscando en la ayuda de delphi y no encuentro ninguna función que me sirva.

yusnerqui 01-11-2007 17:03:17

Que versión de delphi utilizas, Tengo delphi 7 y la propiedad text del edit es un TCaption, y es perfectamente compatible con las variables string, quizás si pones un poco de tu código aqui podamos deducir qie es lo que pasa.

Saludos.

jorgegetafe 01-11-2007 17:56:42

Tengo tambien la versión 7, utilizando un showmessage no me da error, pero con el MessageBox si.




Código Delphi [-]
PROCEDURE TForm1.ObtenerMensajeClick(Sender: TObject);                          // Obtener mensaje
BEGIN
  mensaje:= edit1.text;
END;

 
PROCEDURE mostrarMensaje (mensaje: STRING);
  BEGIN
{    Application.MessageBox} showmessage (mensaje)//, 'Mensaje programado del usuario', MB_DEFBUTTON1);
  END;




Me pasa lo mismo con:

Código Delphi [-]
ShellExecute(0, 'open', ruta, NIL, NIL, SW_SHOW);

Siento ruta un string.

yusnerqui 01-11-2007 18:18:37

Prueba esto:

Código Delphi [-]
Application.MessageBox(PChar(Edit1.Text),'Prueba',MB_OK)

jorgegetafe 01-11-2007 18:21:10

Perfecto, va que ni pintao, muchas gracias.

xEsk 02-11-2007 04:40:26

El motivo de usar "PChar" (también valido poner "Pointer") en esta función, es porqué "MessageBox" es una función de la API de Windows, así que le pasas un puntero al String, no el String.

Saludos.

JosepMiquel 24-12-2007 17:32:52

Como continuación a este post, el cual me ha parecido interesante, he decidido introducirlo en una aplicación que estoy escribiendo, y el caso es que aplicandolo al siguiente evento,

procedure TFormMantenTitulos.Edit1Change(Sender: TObject);
var
Opcion:integer;
begin
Tabla1.SetKey;
Tabla1.FieldByName('Ticker').AsString:=Edit1.Text;
Tabla1.GotoNearest;
if Edit1.Text = Tabla1.FieldByName('Ticker').AsString then
Opcion:=Application.MessageBox(PChar('El Ticker '+Edit1.Text+' ya existe'),
'ATENCION',mb_YesNo+mb_IconWarning);
if Opcion = IDYes then
begin

(Codigo para efectuar modificaciones
end
else
begin
Edit1.Text:='';
Edit1.SetFocus;
end;
end;

no puedo editar en el Edit1, en tiempo de ejecucición.
¿Alguien puede ayudarme ? Gracias.

Josep.


La franja horaria es GMT +2. Ahora son las 00:51:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi