home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / window / winedit / lager.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-28  |  2.3 KB  |  138 lines

  1. #include <w_def.h>
  2. #include <fcntl.h>
  3. #include <sys\stat.h>
  4.  
  5. #define MAXZAHL 256
  6. #define DATEI "lager.dat"
  7. #define MASKE "lager.msk"
  8. #define HMASKE "lagerH.msk"
  9. #define NAMLEN 10
  10.  
  11. typedef struct
  12.     {
  13.     byte  nummer;   /* -> Maximal 256 Produkte*/
  14.     char  name[NAMLEN+1]; /* ->10 Zeichen + \0 */
  15.     word  istmenge;
  16.     word  bestellmenge;
  17.     DMark stueckpreis;
  18.     DAte  letzte_bestellung;
  19.     }
  20. PRod;
  21. PRod produkt[MAXZAHL];
  22.  
  23. void sichern(void)
  24. {
  25. int i,handle;
  26.  
  27. if ((handle = open(DATEI, O_RDWR | O_CREAT | O_BINARY,S_IREAD | S_IWRITE))== -1)
  28.     {
  29.     puts("Fehler beim ERzeugen der Lager-Datei");
  30.     exit(1);
  31.     }
  32. write(handle,produkt,MAXZAHL*sizeof(PRod));
  33. close(handle);
  34. }
  35.  
  36. void laden(void)
  37. {
  38. int i,handle;
  39. PRod leer;
  40. leer.nummer                 =0;
  41. strcpy(leer.name,"     NONAME");
  42. leer.istmenge               =0;
  43. leer.bestellmenge           =0;
  44. leer.stueckpreis.mark       =0L;
  45. leer.stueckpreis.pfen       =0;
  46. leer.letzte_bestellung.day  =1;
  47. leer.letzte_bestellung.mon  =1;
  48. leer.letzte_bestellung.year =1980;
  49.  
  50. if ((handle = open(DATEI, O_RDWR | O_BINARY,S_IREAD | S_IWRITE))== -1)
  51.     /*
  52.     Datei existiert noch nicht, wird also erzeugt*/
  53.     {
  54.     for(i=0;i<MAXZAHL;++i)
  55.         {
  56.         produkt[i]=leer;
  57.         produkt[i].nummer            = (byte) i;
  58.         }
  59.     sichern();
  60.     }
  61. else
  62.     {
  63.     read(handle,produkt,MAXZAHL*sizeof(PRod));
  64.     close(handle);
  65.     }
  66. }
  67.  
  68. void editieren(int m)
  69. {
  70. int res,taste;
  71. byte pos;
  72. pos=0;
  73. w_switch_break_on_key(m,1);
  74. w_in_break_on_key(1);
  75. w_open(m);
  76. do
  77.     {
  78.     res=w_out_struct(m,0,5,&produkt[pos]);
  79.     res=w_in_struct(m,1,5,&produkt[pos].name[0]);
  80.     if(res==-2)
  81.         {
  82.         taste=w_switch_last_key(m);
  83.         res=w_out_struct(m,0,5,&produkt[pos]);
  84.         switch(taste)
  85.             {
  86.             case KEY_PGUP:
  87.                 --pos;
  88.                 break;
  89.             case KEY_PGDN:
  90.                 ++pos;
  91.                 break;
  92.             default:
  93.                 break;
  94.             }
  95.         }
  96.     else
  97.         res=-3;
  98.     }
  99. while(res!=-3);
  100. w_close();
  101. }
  102.  
  103. void main(void)
  104. {
  105. int maske,hilfe,s;
  106.  
  107. w_init(DIREKT);
  108. maske=w_load(MASKE,NOVIRTUELL);
  109. if(maske<0)
  110.     {
  111.     puts("Fehler beim Laden der Maske ");
  112.     exit(1);
  113.     }
  114. hilfe=w_load(HMASKE,NOVIRTUELL);
  115. if(hilfe<0)
  116.     {
  117.     puts("Fehler beim Laden der Maske ");
  118.     exit(1);
  119.     }
  120. s=w_struct_sizeof(maske,0,5);
  121. if(s!=sizeof(PRod))
  122.     {
  123.     puts("Strukturgröße unterschiedlich !");
  124.     exit(1);
  125.     }
  126. w_open(hilfe);
  127. laden();
  128. w_kbd(REQUEST);
  129. editieren(maske);
  130. sichern();
  131. w_close();
  132. w_deinit();
  133. }
  134.  
  135.  
  136.  
  137.  
  138.