PDA

Ver la Versión Completa : ¿como pasar de String dentro de un PChar?


Moises22
23-09-2005, 14:31:26
Hola a todos, soy novatillo en Delphi y mi pregunta es la siguiente:

Tengo lo siguiente:


var
cadena:String;
url:String;
begin
cadena:=Edit1.Text;
url:='http://paginasinconcretar?ID='+cadena;
ShellExecute(Self.Handle, PCHar('open'), PChar('explorer.exe'),
PChar(url), nil, SW_SHOWNORMAL);
end;

Lo que no me deja hacer es lo que esta en rojo, como puedo pasarle la variable al PChar()¿?????

marcoszorrilla
23-09-2005, 14:48:03
Prueba a pasarlo antes a una variable.

MiVar:Pchar;
Begin
MiVar:=Pchar(Url);
ShellExecute(Self.Handle, PCHar('open'), PChar('explorer.exe'),
PChar(MiVar), nil, SW_SHOWNORMAL);

Un Saludo.

Moises22
26-09-2005, 09:34:59
Lo he probado como dices, pero sigue sin funcionar, que puedo hacerr?????

marcoszorrilla
26-09-2005, 15:05:11
Primero no dices que error te da.

Incluye ShellApi en el Uses de tu form.

procedure TForm1.Button2Click(Sender: TObject);
var
MiVar:Pchar;
url:String;
Begin
url:='http://www.clubdelphi.com';
MiVar:=Pchar(Url);
ShellExecute(Self.Handle, PCHar('open'), PChar('explorer.exe'),
PChar(MiVar), nil, SW_SHOWNORMAL);
end;


Lo acabo de probar y funciona sin ningún problema.

Un Saludo.

rastafarey
26-09-2005, 15:40:04
Mira que no haga lo quieres lo que esperas es una cosa pero el codigo esta bien pero lo que quieres hacer es esto.


Var
url: string
Begin
//url := 'lo que sea';
ShellExecute(Handle,nil,PChar(url),'','',SW_SHOWNORMAL)
end;


Asi haces lo que de verda esperas ya que si no especificas la aplicacion esta llamara aplicacion por defecto no solo para paginas sino para cualquier archivo.

Moises22
27-09-2005, 09:47:37
Tienen razon funcionaba perfectamente, el problema que me sigue dando es que mi cadena es del tipo www.loquesea.com?ID=8, (http://www.loquesea.com/?ID=8,) es en el caracter = donde me da el problemas. ¿Cual es la forma de introducirlo como cadena??

Mi probema es con el caracter =, se que en Java se resuelve poniendolo asi \= pero en Delphi al ser novato no lo se.¿Alguien me podria ayudar?

rastafarey
27-09-2005, 15:43:47
Esto funciona perfecto no veo cual es el problema.

Aqui tienes un codigo ejemplo

Solo pruebalo

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;

type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Edit1: TEdit;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

Uses ShellApi;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Edit1.Text := 'http://www.clubdelphi.com/foros/forumdisplay.php?f=19';
ShellExecute(Handle,nil,PChar(Edit1.Text),'','',SW_SHOWNORMAL)
end;

end.