Ejemplo de un programa utilizando C++.
El siguiente ejemplo muestra cómo generar un reporte usando el lenguaje C++. Este programa lee el fichero person.dat (ver aplicación de ejemplo) y genera el mismo "employees.rpv" que Ud. puede ver en la aplicación de muestra.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/*
Autor: Racav
Este ejemplo muestra como crear el fichero "EMPLOYEES.RPV" utilizando C++.
Tome en cuenta que el fichero "PERSON.DAT" se encuentra en "archivos de programa".
Si Ud. no cuenta con una versión de Windows en español, entonces deberá cambiarlo
por el directorio correcto.
El programador utiliza la rutina "*separate_words" para separar la linea utilizando
la coma como delimitador.
*/
char *separate_words(char *word1,char separator,int num_word);
void main(void)
{
FILE *in, *out;
char buff[256];
char sep_buff[256];
out = fopen("C:\\archivos de programa\\rpv\\samples\\employees.rpv","wt");
fputs("report_title=Reporte Employees utilizando C++\n",out);
fputs("orientation=2\n",out);
fputs("open_view\n",out);
fputs("spacing=250\n",out);
fputs("$c0=400\n",out);
fputs("$c1=1000\n",out);
fputs("$c2=3400\n",out);
fputs("$c3=6800\n",out);
fputs("$c4=8400\n",out);
fputs("$c5=11000\n",out);
fputs("$c6=13000\n",out);
fputs("$c7=13200\n",out);
fputs("[header]\n",out);
fputs("{f=arial;s=8}\n",out);
fputs("{pic=c:\\archivos de programa\\rpv\\samples\\rpvlogo.bmp;400,400,1400,900}\n",out);
fputs("{\\n;$c7} Page {12800;pag}\n",out);
fputs("{s=16;\\n;1800;c=2;b=y} Sample Application Report {spacing=350;\\n}\n",out);
fputs("{c=1;1800} Employees Report {\\n}\n",out);
fputs("{c=0;b=n;\\n;\\n;\\n}\n",out);
fputs("{line=400,14000;\\n}\n",out);
fputs("{s=8;b=y;$c0} Id {$c1} Name {$c2} Address {$c3} Phone {$c4} E-Mail",out);
fputs("{$c5} Birth Date {a=r;$c6} Monsalary {a=l;$c7} Schedule {b=n;spacing=375;\\n}\n",out);
fputs("{line=400,14000;\\n}\n",out);
fputs("[data]\n",out);
in = fopen("c:\\archivos de programa\\samples\\person.dat", "rt");
while (!feof(in))
{
fgets(buff,256,in);
strcpy(sep_buff,separate_words(buff,',',1));
fputs("{$c0}",out);
fprintf(out,"%s",sep_buff);
strcpy(sep_buff,separate_words(buff,',',2));
fputs("{$c1}",out);
fprintf(out,"%s",sep_buff);
strcpy(sep_buff,separate_words(buff,',',3));
fputs("{$c2}",out);
fprintf(out,"%s",sep_buff);
strcpy(sep_buff,separate_words(buff,',',4));
fputs("{$c3}",out);
fprintf(out,"%s",sep_buff);
strcpy(sep_buff,separate_words(buff,',',6));
fputs("{$c4}",out);
fprintf(out,"%s",sep_buff);
strcpy(sep_buff,separate_words(buff,',',7));
fputs("{$c5}",out);
fprintf(out,"%s",sep_buff);
strcpy(sep_buff,separate_words(buff,',',8));
/* si la palabra número 8 (mon salary) < que 1400 se torna rojo */
if (atoi(sep_buff) < 1400)
fputs("{a=r;$c6;c=12}",out);
else
fputs("{a=r;$c6}",out);
fprintf(out,"%s",sep_buff);
strcpy(sep_buff,separate_words(buff,',',10));
fputs("{c=0;a=l;$c7}",out);
fprintf(out,"%s",sep_buff);
fputs("{\\n}\n",out);
}
fclose(in);
fclose(out);
}
char *separate_words(char *word1,char separator,int num_word)
{
char buff[256];
int buff1;
int cc=0;
int j=0;
for (int i=0;i<strlen(word1);i++)
{
if (word1[i] != separator)
{
buff1 = word1[i];
buff[j] = buff1;
j++;
}
else
{
cc++;
if (cc == num_word)
break;
else
{
buff[0]='\0';
j=0;
}
}
}
buff[j] = '\0';
return buff;
}
|
Este ejemplo torna rojos todos aquellos
salarios mensuales menores a 1400; esa es la razón del "if".
Información adicional importante.