![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
PChar y PAnsiChar en WinExec
Hola Compañeros,
Les tengo la siguiente inquiteud: Tengo una instrucción en Delphi 7 de la siguiente manera: Código:
WinExec(PChar('Ejecutable.exe '+Parametros),SW_SHOWNORMAL); Tambien, al navegar en algunos foros encontré que la solución sencilla es reemplazar todos los PChar por un PAnsiChar, asi: Código:
WinExec(PAnsiChar('Ejecutable.exe '+Parametros),SW_SHOWNORMAL); Código:
ShowMessage(PAnsiChar('Cadena de texto')); ¿Quién ya ha pasado por esto? les agradezco, |
#2
|
||||
|
||||
hola amigos,
Les cuento que ya encontré la solución, en el siguiente hilo de otro foro: http://stackoverflow.com/questions/2...in-delphi-2009 La respuesta es primero convertir la cadena en AnsiString y luego si hacer el llamado a PAnsiChar, asi: Código:
s := PAnsiChar(AnsiString('Ejecutable.exe '+strParametros_l); Espero que les sirva..!!! un saludo, |
#3
|
|||
|
|||
Hola, Esta cuestion me tiene loco, tengo un problema algo similiar, intente la solución que sale en el otro foro que tu indicas que la cuestion no funciona. Explico mi problema.
Tengo una variable string (FAppFileName) dentro de un componente la cual contiene la ruta completa mas el ejecutable, especificamente asi: D:\Proyectos\Delphi\Cap\CapMain\AppNew.exe ahora bien, el problema que tengo es que WinEXEC NO me ejecuta el archivo (AppNew.EXE) ahora bien si el mismo archivo lo pongo en la raiz del disco (D:\AppNew.EXE') y se lo asigno en forma absoluta a la variable FAppFileName: WinExec(PAnsiChar(FAppFileName), SW_SHOWNORMAL); SIIII ABREEEE LA aplicación, pero con ruta completa no hay manera que funcione. ahhh y lo olvidada me pasa lo mismo con Shellexecute, ¿Alguna idea? ¿Porque m... será? Saludos |
#4
|
||||
|
||||
Debes entender que char, string y pstring y pchar son ALIAS al tipo string especifico de compilador. Antes de D2009 eso era ANSi y esde 2009 es UNICODE.
Entiende que el API de Windows es NATIVO EN UNICODE y tiene tambien alias y versiones en ANSI y UNICODE. Asi, hay una version de la llamada al API de windows que empieza o termina en "A" y una que termina en "W". La que termina en W es nativo unicode y no tienes que hacer las conversiones.
__________________
El malabarista. |
#5
|
|||
|
|||
ok Mamcx, entiendo lo que quieres decir, pero en mi caso en particular cual es el problema? Utilizo D2005 Pro UPD3!!! y los parametros que paso a la función son los correctos?
function WinExec(lpCmdLine: LPCSTR; uCmdShow: UINT): UINT; stdcall; // LPCSTR = PAnsiChar;
Iluminame por favor, dime que estoy haciendo MAL!!!! mmm lo olvidaba...ambas rutas el archivo existe ![]() gracias por tu tiempo, Saludos |
#6
|
||||
|
||||
Amigo SyncReuter, tu dices que ya probaste, pero intenta hacer un showmessage a las instrucciones:
ShowMessage(PAnsiChar(p)); ShowMessage(PAnsiChar(PAnsiString(p))); Hazlo para ambos PATH: D:\Proyectos\Delphi\WSam\WSamManager\AppWFP.EXE D:\AppWFP.EXE Ahora, ¿de que tipo es tu variable FAppFileName? Un saludo, |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
PansiChar a string | jorgegetafe | Varios | 6 | 24-12-2007 17:32:52 |
Problema con WinExec. | Drahcir | Varios | 5 | 15-06-2007 08:28:57 |
WinExec | karlita_cb | Varios | 3 | 18-05-2004 20:52:21 |
convertir de 'TCaption' para usar su valor en 'PAnsiChar' | jbgpina | OOP | 5 | 03-03-2004 14:06:45 |
winexec en w2000 | ogorut | API de Windows | 2 | 23-06-2003 18:41:58 |
![]() |
|