home *** CD-ROM | disk | FTP | other *** search
- #include <w_def.h>
- #include <fcntl.h>
- #include <sys\stat.h>
-
- #define MAXZAHL 256
- #define DATEI "lager.dat"
- #define MASKE "lager.msk"
- #define HMASKE "lagerH.msk"
- #define NAMLEN 10
-
- typedef struct
- {
- byte nummer; /* -> Maximal 256 Produkte*/
- char name[NAMLEN+1]; /* ->10 Zeichen + \0 */
- word istmenge;
- word bestellmenge;
- DMark stueckpreis;
- DAte letzte_bestellung;
- }
- PRod;
- PRod produkt[MAXZAHL];
-
- void sichern(void)
- {
- int i,handle;
-
- if ((handle = open(DATEI, O_RDWR | O_CREAT | O_BINARY,S_IREAD | S_IWRITE))== -1)
- {
- puts("Fehler beim ERzeugen der Lager-Datei");
- exit(1);
- }
- write(handle,produkt,MAXZAHL*sizeof(PRod));
- close(handle);
- }
-
- void laden(void)
- {
- int i,handle;
- PRod leer;
- leer.nummer =0;
- strcpy(leer.name," NONAME");
- leer.istmenge =0;
- leer.bestellmenge =0;
- leer.stueckpreis.mark =0L;
- leer.stueckpreis.pfen =0;
- leer.letzte_bestellung.day =1;
- leer.letzte_bestellung.mon =1;
- leer.letzte_bestellung.year =1980;
-
- if ((handle = open(DATEI, O_RDWR | O_BINARY,S_IREAD | S_IWRITE))== -1)
- /*
- Datei existiert noch nicht, wird also erzeugt*/
- {
- for(i=0;i<MAXZAHL;++i)
- {
- produkt[i]=leer;
- produkt[i].nummer = (byte) i;
- }
- sichern();
- }
- else
- {
- read(handle,produkt,MAXZAHL*sizeof(PRod));
- close(handle);
- }
- }
-
- void editieren(int m)
- {
- int res,taste;
- byte pos;
- pos=0;
- w_switch_break_on_key(m,1);
- w_in_break_on_key(1);
- w_open(m);
- do
- {
- res=w_out_struct(m,0,5,&produkt[pos]);
- res=w_in_struct(m,1,5,&produkt[pos].name[0]);
- if(res==-2)
- {
- taste=w_switch_last_key(m);
- res=w_out_struct(m,0,5,&produkt[pos]);
- switch(taste)
- {
- case KEY_PGUP:
- --pos;
- break;
- case KEY_PGDN:
- ++pos;
- break;
- default:
- break;
- }
- }
- else
- res=-3;
- }
- while(res!=-3);
- w_close();
- }
-
- void main(void)
- {
- int maske,hilfe,s;
-
- w_init(DIREKT);
- maske=w_load(MASKE,NOVIRTUELL);
- if(maske<0)
- {
- puts("Fehler beim Laden der Maske ");
- exit(1);
- }
- hilfe=w_load(HMASKE,NOVIRTUELL);
- if(hilfe<0)
- {
- puts("Fehler beim Laden der Maske ");
- exit(1);
- }
- s=w_struct_sizeof(maske,0,5);
- if(s!=sizeof(PRod))
- {
- puts("Strukturgröße unterschiedlich !");
- exit(1);
- }
- w_open(hilfe);
- laden();
- w_kbd(REQUEST);
- editieren(maske);
- sichern();
- w_close();
- w_deinit();
- }
-
-
-
-