Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema parámetros función

Estas en el tema de Problema parámetros función en el foro de C/C++ en Foros del Web. hola, lo primero voy a poneros en situación. Estoy realizando una aplicación y la interfaz gráfica de dicha aplicación la he desarrollado con Visual Studio ...
  #1 (permalink)  
Antiguo 15/08/2010, 11:34
 
Fecha de Ingreso: marzo-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Problema parámetros función

hola,
lo primero voy a poneros en situación. Estoy realizando una aplicación y la interfaz gráfica de dicha aplicación la he desarrollado con Visual Studio 2008. Asociado a los correspondientes botones hay código en visual basic, pero el programa que realiza la funcionalidad pedida está implementado en C.
Tengo un menú tipo Windows con la típica opción de abrir archivo y necesito pasarle a mi programa en C la ruta del archivo que se abre. Esta ruta se encuentra en una variable (OpenFileDialog1.FileName), y mi problema es que no sé como acceder al contenido de esa variable.
Es decir, si le pasará a mi programa en C la ruta como una cadena no habría problema, declararía la función así: main (int argc, char *argv[] ).
Pero no sé como se definirían los parámetros para poder recibir una variable y poder después acceder a su contenido, que será la ruta del fichero que se acaba de abrir.
Se me había ocurrido una chapucilla para salir del paso y es crear un fichero y escribir en él la ruta, y modificar mi programa en C para que reciba un fichero como parámetro, lo cual me parece un poco chapuza la verdad.

Agradecería cualquier tipo de ayuda.

Muchas gracias de antemano y perdón por lo extenso del mensaje.

Un saludo.
  #2 (permalink)  
Antiguo 15/08/2010, 14:28
Avatar de gvite666  
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años
Puntos: 4
Respuesta: Problema parámetros función

La verdad no se si lo puedas relizar de alguna manera en C, lo que yo puedo recomendarte es que te metas en la programacion orientada a objetos (POO en C++)ya que aqui es demaciado facil arreglar tu problema.
  #3 (permalink)  
Antiguo 16/08/2010, 10:29
 
Fecha de Ingreso: marzo-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema parámetros función

Muchas gracias por tu respuesta. Tengo que hacerlo en C y por no complicarme más lo haré pasando la ruta en un fichero y ya está. Muchas gracias de nuevo por atención.

Un saludo.
  #4 (permalink)  
Antiguo 17/08/2010, 11:49
Avatar de calambrenet  
Fecha de Ingreso: julio-2010
Ubicación: Jaén
Mensajes: 162
Antigüedad: 13 años, 9 meses
Puntos: 18
Respuesta: Problema parámetros función

Supongo que el objeto FineName es de tipo string por lo que puede devolver una cadena de texto normal y corriente. mira en el api.
char *texto = OpenFileDialog1.FileName.c_str();
  #5 (permalink)  
Antiguo 19/08/2010, 05:54
 
Fecha de Ingreso: marzo-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema parámetros función

Muchas gracias por tu aportación, pero he estado mirando y c_str es de C/C++, yo necesitaría algo así pero en Visual Basic y luego preparar la función en C para que reciba una cadena de caracteres.
Se agradece la idea. Indagaré un poco a ver si encuentro algo parecido en VB.

Un saludo.
  #6 (permalink)  
Antiguo 19/08/2010, 06:19
Avatar de calambrenet  
Fecha de Ingreso: julio-2010
Ubicación: Jaén
Mensajes: 162
Antigüedad: 13 años, 9 meses
Puntos: 18
Respuesta: Problema parámetros función

Haber empezado por ahí!
Visual Basic también tiene una clase string, no se si será ese tipo (FileName)

Public NotInheritable Class String
  #7 (permalink)  
Antiguo 19/08/2010, 06:46
 
Fecha de Ingreso: febrero-2007
Mensajes: 163
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Problema parámetros función

No entiendo la pregunta, o sea el contenido de la variable esta ahi OpenFileDialog1.FileName que es una variable tipo string y es publica, luego cuando llamas a tu programa estas haciendo haces un new de Process y llamas al metodo start con la linea de comandos en esa linea armas el nombre del ejecutable espacio el contenido de la variable o sea:

"miexe.exe " & OpenFileDialog1.FileName

Y en tu programa C levantas el parametro haciendo referencia a argv[1].
  #8 (permalink)  
Antiguo 20/08/2010, 11:00
 
Fecha de Ingreso: marzo-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema parámetros función

hola,
antes de nada gracias por intentar ayudarme y por el interés que estais poniendo.
A ver os cuento, tengo una interfaz con un menú tipo "word" (hecho con Visual Basic) que me permite abrir una imagen. La ruta de la imagen que abro se guarda en una variable, que en mi caso se llama 'OpenFileDialog1.FileName', y que contiene esa ruta y que es un string.
Lo que quería es que mi programa en C recibiera dicha ruta.
Para llamar a mi programa en C utilizo la funcion 'Shell' de VB, a la cual tienes que pasarla la ruta del ejecutable y los parámetros necesarios. Mi problema es que al hacer: Shell Programa.exe param1, mi programa piensa que "param1" es la ruta, y lo que me interesa es su contenido, ¿me habeis entendido? a lo mejor me explico un poco mal...
Lo que quería era saber como decirle a mi programa que no coja "param1" como ruta, sino que coja su contenido.
No sé si se podrá hacer tan siquiera, pero he estado mirando funciones de VB a ver si había alguna que devolviera el contenido de una variable para pasarlo como parámetro y no he encontrado nada.

Un saludo.
  #9 (permalink)  
Antiguo 20/08/2010, 14:14
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Problema parámetros función

Que version de visual estas manejando, supongo k c, estas utilizando visual c++...
  #10 (permalink)  
Antiguo 23/08/2010, 01:28
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: Problema parámetros función

Aunque no conozco Visual Basic, intentaré darte una idea.

Supongo que la función Shell de VB funciona algo así como

shell "programa parametro1 parametro2 ..."

es decir, lo que hay detrás de shell es una cadena de caracteres, ya sea una constante literal, ya sea una variable de cadena.

Prueba creando una cadena de caracteres, algo así como:

comando = "programa.exe"

y luego a la variable de cadena comando le concatenas la variable en la que guardas la ruta, algo así como

comando = comando + param1

con lo que tendríamos ahora

comando = "programa.exe la_ruta_que_yo_quiero"

y, al hacer el shell, programa.exe debería tomar como parámetro la ruta correcta.

Repito, no conozco VB, así que tendrás que adaptar esto a la sintaxis correcta. Ten en cuenta los espacios en blanco a la hora de crear el comando.

Espero que te sirva de ayuda. Saludos,
  #11 (permalink)  
Antiguo 23/08/2010, 04:20
 
Fecha de Ingreso: marzo-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema parámetros función

Cita:
Iniciado por margarito04 Ver Mensaje
Que version de visual estas manejando, supongo k c, estas utilizando visual c++...
Pues la verdad no tengo ni idea... lo estoy haciendo con Visual Studio 2008, He usado las WinForms que vienen para poner menús, botones....
  #12 (permalink)  
Antiguo 23/08/2010, 04:27
 
Fecha de Ingreso: marzo-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema parámetros función

Como bien dices Fw190 la función shell funciona de esa manera. Lo que me propones en principio parece una buena idea. Voy a intentarlo así y ya te comento si funcionó.

Muchas gracias.

Un saludo.
  #13 (permalink)  
Antiguo 24/08/2010, 10:16
 
Fecha de Ingreso: marzo-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema parámetros función

Bueno Fw190, eres un máquina. Funcionó lo que me propusiste. Creé una cadena con la ruta de mi ejecutable y el parámetro que le quería pasar. La verdad es que es una solución bastante ingeniosa.

Muchas gracias a todos los que habeis interesado en mi problemilla.

Y siento que al final se haya convertido en un problema de VB siendo ésta la sección de C.

Un saludo.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:47.