LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

USAR GetProjectDir para guardar datos

Hoola: Vamos a ver, Quiero guardar los datos que escribe el usuario en un NUMERIC (llamado PASOS) en un archivo "datosguardado.txt".Quiero asociar ese NUMERIC a este archivo.Es decir, cada vez que el usuario escribe en ese NUMERIC, lo guarde en el .txt. es guardar todas las veces que se introduce "x" en NUMERIC en .txt y que al final nos aparezcan los 100 ultimos datos introducidos por el usuarioLo que he utilizado es lo siguiente:

 

char pathname[100];

static FILE*file_handle;

GetProjectDir(pathname);

MakePathname(pathname,"datosguardados.txt",pathname);

file_handle=fopen(pathname,"w+");

num=fprintf(file_handle,"%lf\n",x);    // x es la variable donde se guarda el valor del NUMERIC que introduce el usuario. Queremos guardar "x" en el .txt//

fclose(file_handle);

Igual nos falta un for. que hemos intentado poniendo esto:

int i ;char datos[100];       for(i=0; i<100;i++) ;    num=fprintf(file_handle,"lf\n",datos[i]);      //siendo datos[] un char, pero no sabemos asociarlo al NUMERIC)

Gracias

0 Kudos
Message 1 of 2
(3,071 Views)

Hola motores,

la primera parte del código está bien, simplemente podrías cambiar el "w+" con el "a+" de manera que los datos sean añadidos al archivo sin cancelar los precedentes. Así haciendo, cada vez que se corre esa parte del código se añade una línea al archivo.

 

En la segunda parte (la del for) no puedes pasar un char a la fprintf puesto que "%lf\n" indica que la función va a elaborar un valor double: recibirás un error al hacerlo. Simplemente le pones double datos[100] y puedes correr el código. Esto también te simplifica puesto que puedes leer directamente del control numeric y pasarlo al array ( GetCtrlVal (panelHandle, PANEL_NUMERIC, &datos[i]) siendo "i" el índice progresivo del número que el usuario quiere archivar).

 

Por último, para compatibilidad con el sistema operativo, debes dimensionar a la variable pathname de manera diferente: char pathname[MAX_PATHNAME_LEN]; esto te garantiza que la variable sea lo suficientemente larga para conservar el nombre del archivo en el caso de que uses nomres largos u muchas carpetas una dentro de la otra.

Message Edited by Roberto Bozzolo on 02-20-2009 04:02 PM


Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Message 2 of 2
(3,058 Views)