Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Mayúsculas y carácteres raros con ParamStr(1) y _argv[1]

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Mayúsculas y carácteres raros con ParamStr(1) y _argv[1] Responder citando

Utilizo la global ParamStr(1) para mandar parámetros a mi aplicación, esto es la ruta del archivo ejecutado. El caso es que funciona perfecto pero resulta que esa ruta la utilizo luego en el programa para otros fines como por ejemplo mostrarla en la barra de estado del programa pero, me he fijado que si el nombre del archivo contiene espacios entonces ese parámetro se transforma todo a mayúsculas y en el lugar de los espacios aparece esa títpica "ESE" en horizontal. He intentado utilizar _argv[1] pero el resultado es el mismo, la ruta sólo se muestra correctamente si el nombre no contiene espacios. ¿Hay algún modo de mostrar correctamente la ruta completa de ParamStr(1) cuando ésta contiene espacios? gracias.
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

No se si está muy correcto que yo mismo me conteste la pregunta pero ya que he dado con la solución creo que está bien que la postee por si sirve de ayuda a alquien más de vosotros. Bueno ... el problema viene a la hora de escribir en el registro de windows por ejemplo, si estamos asociando la extensión .txt con el nombre de programa MiPrograma, a la hora de escribir el valor MiPrograma\shell\open\command el cual contiene la ruta a nuestro ejecutable junto con los parámetros pues resulta que si queremos capturar el nombre completo de la ruta así como el nombre completo del archivo ambos con sus espacios (si los tienen) debemos hacerlo escribiendo ambos parámetros entre comillas:
De la ayuda del Builder:
Cita:

Note: Use double quotes to wrap multiple words as one parameter (such as long file names containing spaces).

Y un pequeño ejemplo de como escribir los valores "Entrecomillados" en el registro:
Código:

    TRegistry *registrar = new TRegistry;
    registrar->RootKey = HKEY_CLASSES_ROOT;
    if (registrar->OpenKey(MiPrograma+"\\shell\\open\\command",true)){
        registrar->WriteString("","\""+Ruta_de_mi_programa+"\"\"%1\"");
        registrar->CloseKey();
    }
    delete registrar;

Lógicamente me he ayudado de los diferentes ejemplos que he encontrado en el foro los cuales me han ayudado mucho pero escribían los valores en el registro sin comillas lo que provocaba que ParamStr(1) en caso de contener espacios apareciera en el programa en mayúsculas y con carácteres raros lo cual se ha podido solucionar escribiendo los valores entrecomillados en el registro.
Espero no haberme hecho muy pesado y que pueda ayudar a más gente.
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.