home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / window / winedit / lager.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-07-28  |  2.6 KB  |  145 lines

  1. program lager(input,output);
  2.  
  3. uses w_tbp_55;
  4.  
  5. const
  6.      MAXZAHL  = 256;
  7.      DATEI    = 'lager.dat';
  8.      MASKE    = 'lager.msk';
  9.      HMASKE   = 'lagerH.msk';
  10.      NAMLEN   = 10;
  11.  
  12. type
  13.     PRod=record
  14.         nummer            : byte;             { -> Maximal 256 Produkte }
  15.         name              : array[0..NAMLEN] of char;  { -> Zeichen + \0 }
  16.         istmenge          : word;
  17.         bestellmenge      : word;
  18.         stueckpreis       : DMark;
  19.         letzte_bestellung : DAte;
  20.         end;
  21.  
  22. var
  23.    produkt : array [0..255] of PRod;
  24.    res,maskh,hilfe,s:integer;
  25.  
  26.  
  27. procedure sichern;
  28. var
  29.  i       :integer;
  30.  handle  :file;
  31. begin
  32. assign(handle,DATEI);
  33. {$I-}
  34. rewrite(handle,1);
  35. {$I+}
  36. blockwrite(handle,produkt,MAXZAHL*sizeof(PRod));
  37. close(handle);
  38. end;
  39.  
  40. procedure laden;
  41. var
  42. i      :integer;
  43. handle :file;
  44. leer   :PRod;
  45. begin
  46.  
  47. leer.nummer                 :=0;
  48. leer.name                   :='     NONAME';
  49. leer.name[0]                :=char(10);
  50. leer.istmenge               :=0;
  51. leer.bestellmenge           :=0;
  52. leer.stueckpreis.mark       :=0;
  53. leer.stueckpreis.pfen       :=0;
  54. leer.letzte_bestellung.day  :=1;
  55. leer.letzte_bestellung.mon  :=1;
  56. leer.letzte_bestellung.year :=1980;
  57.  
  58.  
  59. assign(handle,DATEI);
  60. {$I-}
  61. reset(handle,1);
  62. {$I+}
  63.  
  64. if ioresult<>0 then
  65.     begin
  66.     (*
  67.     Datei existiert noch nicht, wird also erzeugt*)
  68.     for i:=0 to MAXZAHL-1 do
  69.         begin
  70.         produkt[i]:=leer;
  71.         produkt[i].nummer  := byte(i);
  72.         end;
  73.     sichern;
  74.     end
  75. else
  76.     begin
  77.     blockread(handle,produkt,sizeof(produkt));
  78.     close(handle);
  79.     end;
  80. end;
  81.  
  82.  
  83. procedure editieren(m:integer);
  84. var
  85.    res,taste:integer;
  86.    pos      :byte;
  87. begin
  88.  
  89. pos:=0;
  90. res:=w_switch_break_on_key(m,1);
  91. res:=w_in_break_on_key(1);
  92. res:=w_open(m);
  93. repeat
  94.     res:=w_out_struct(m,0,5,produkt[pos]);
  95.     res:=w_in_struct(m,1,5,produkt[pos].name);
  96.     if res=-2 then
  97.         begin
  98.         taste:=w_switch_last_key(m);
  99.         res:=w_out_struct(m,0,5,produkt[pos]);
  100.         case taste of
  101.             KEY_PGUP:   pos:=pos-1;
  102.             KEY_PGDN:   pos:=pos+1;
  103.             end;
  104.         end
  105.     else
  106.         res:=-3;
  107.  
  108. until(res=-3);
  109. res:=w_close;
  110. end;
  111.  
  112. begin
  113. res:=w_init(DIREKT);
  114.  
  115. maskh:=w_load(MASKE,NOVIRTUELL);
  116. if(maskh<0) then
  117.     begin
  118.     writeln('Fehler beim Laden der Maske ');
  119.     halt(1);
  120.     end;
  121. hilfe:=w_load(HMASKE,NOVIRTUELL);
  122. if(hilfe<0)then
  123.     begin
  124.     writeln('Fehler beim Laden der Maske ');
  125.     halt(1);
  126.     end;
  127. s:=w_struct_sizeof(maskh,0,5);
  128. if(s<>sizeof(PRod))then
  129.     begin
  130.     writeln('Strukturgröße unterschiedlich !');
  131.     halt(1);
  132.     end;
  133. res:=w_open(hilfe);
  134. laden;
  135. res:=w_kbd(REQUEST);
  136. editieren(maskh);
  137. sichern;
  138. res:=w_close;
  139. res:=w_deinit;
  140. end.
  141.  
  142.  
  143.  
  144.  
  145.