home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 12 / algorith / kartei.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-10-02  |  9.8 KB  |  298 lines

  1. (*------------------------------------------------------*)
  2. (*                        KARTEI.PAS                    *)
  3. (* Hauptprogramm des Karteikartenprogramm mit Erkennung *)
  4. (*                  natürlicher Sprache                 *)
  5. (*         Teil 2: Erweiterungen für Anaphorismen       *)
  6. (*            (C) 1989 Stephan Diehl & TOOLBOX          *)
  7.  
  8. PROGRAM Kartei;
  9.  
  10. USES Crt, Turbo3, Dos; (* Für Turbo 3.0 auskommentieren *)
  11.  
  12. TYPE
  13.  skurz=STRING[12];
  14.  smittel=STRING[40];
  15.  slang=STRING[55];
  16.  
  17. (* ------ ALT: ---------------------------------------
  18.         kategorien=(feld,inh1,inh2,inh3,inh4,inh5,
  19.                     anweisung,pop,bdl);
  20. ------------------------------------------------------*)
  21.  
  22. (******** NEU: ****************************************)
  23.  sriesig=STRING[255];
  24.  kategorien=(feld,inh1,inh2,inh3,inh4,inh5,anweisung,
  25.              pop,bdl,MARKER,ARTIKEL,PRaePOSITION);
  26. (******************************************************)
  27.  
  28.  kartentypen=(nix,a,b,c,d,e,f,g,h,i,voll);
  29.  kartenzeiger=^kartenform;
  30.  kartenform=RECORD
  31.                kartentyp:kartentypen;
  32.                inhalt:ARRAY[1..4] OF smittel;
  33.                inhalt5:ARRAY[1..7] OF slang;
  34.                naechste:kartenzeiger;
  35.              END;
  36.  wlistzeiger=^wortliste;
  37.  wortliste=RECORD
  38.               begriff:smittel;
  39.               naechste:wlistzeiger;
  40.             END;
  41.  zustaende=(za,zb,zc,zd,ze,zf);
  42.  anweisungen=(drucker,monitor,sortieren,editieren,
  43.               loeschen,kartedrucken,keine);
  44.  befehlszeiger=^befehlsliste;
  45.  befehlsliste=RECORD
  46.                  anw:anweisungen;
  47.                  naechste:befehlszeiger;
  48.                END;
  49.  namensfeld=ARRAY[a..i,1..5] OF skurz;
  50.  formular=RECORD
  51.              k1:namensfeld;
  52.              k2:kartentypen;
  53.             END;
  54.  begriffsfeld=ARRAY[feld..inh5] OF wlistzeiger;
  55.  bild=ARRAY[1..4000] OF BYTE;
  56.  
  57. VAR
  58.  LST : TEXT;
  59.  ant:CHAR;
  60.  memavailable:REAL;
  61.  bildschirm_hga : BYTE ABSOLUTE $b000:0;
  62.  bildschirm_cga : BYTE ABSOLUTE $b800:0;
  63.  speichere_bildschirm,speichere_bild_help:bild;
  64.  zeile:INTEGER;
  65.  (* Formulare *)
  66.  feldnamen : namensfeld;
  67.  (* Zeiger zum verwalten der Karteikartenliste *)
  68.  erste_karte,karte,ksuch1,
  69.  ksuch2, hilf, zwischen,letzte_karte,
  70.  sorthilf, vorgaenger                : kartenzeiger;
  71.  kt,letzter_typ : kartentypen;
  72.  kartanz,fnr,u,z,y,antworten,
  73.  xxx1,xxx2,yyy1,yyy2,ccx,ccy : INTEGER;
  74.  (*---- ALT: ---------------------------------------------
  75.     In diesem Array werden 5 Listen
  76.     mit Suchbegriffen verwaltet
  77.  erster_begriff,letzter_begriff,suchbegriff : begriffsfeld;
  78.  wort,sortierer,hilfstr : smittel;
  79.  eingabe,tmstr : slang;
  80.  category,cty : kategorien;
  81.  zustand : zustaende;
  82.  nach,no_change,zweite_anfrage,scanning,
  83.  auf_drucker,no_feld,no_feld2           : BOOLEAN;
  84.  anweis : anweisungen;
  85.  erster_befehl,letzter_befehl,befehl : befehlszeiger;
  86.  ctrlmenge : SET OF anweisungen;
  87.  datnam : STRING[8];
  88.  textdatei : TEXT;
  89.  formulardatei : FILE OF formular;
  90.  kartendatei : FILE OF kartenform;
  91.  hformular : formular;
  92. ---------------------------------------------------------*)
  93.  
  94. (********* NEU: ******************************************)
  95.  erster_begriff,letzter_begriff,suchbegriff,
  96.  begriff,LETZTE_ANTWORT_SUCHBEGRIFFE        : begriffsfeld;
  97.  MERKE_SORTIERER,wort,sortierer,hilfstr     : smittel;
  98.  eingabe,merke_eingabe                      : sriesig;
  99.  tmstr                                      : slang;
  100.  ct, category,cty,LETZTES_WORT              : kategorien;
  101.  zustand                                    : zustaende;
  102.  MERKE_NACH,nach,no_change,zweite_anfrage,
  103.  scanning,auf_drucker,MERKE_NO_FELD,
  104.  MERKE_NO_FELD2,no_feld,
  105.  no_feld2,REFLEXIV,KEIN_SUCHBEGRIFF,UND     : BOOLEAN;
  106.  anweis                                     : anweisungen;
  107.  erster_befehl,letzter_befehl,befehl,
  108.  LETZTE_ANTWORT_BEFEHLE                    : befehlszeiger;
  109.  ctrlmenge                                  : SET OF
  110.                                                anweisungen;
  111.  datnam                                     : STRING[8];
  112.  textdatei                                  : TEXT;
  113.  formulardatei                              : FILE OF
  114.                                                 formular;
  115.  kartendatei                                : FILE OF
  116.                                                 kartenform;
  117.  hformular                                  : formular;
  118. (*********************************************************)
  119.  
  120.  
  121. CONST
  122.  (* Der "Joker" ist sozusagen mit jedem Wort gleich *)
  123.  wildcard='^';
  124.  
  125. (* ----- ALT: -------------------------------------------
  126.     Das alte Wörterbuch durch das folgende neue ersetzen.
  127. ------------------------------------------------------- *)
  128.  
  129.  
  130. (************ NEU - NEU - NEU *******************)
  131.  (* Die folgenden 7 Woerterbuecher koennen noch *)
  132.  (* erweitert werden. Sie bilden den gesamten   *)
  133.  (* Wortschatz, den Kartei a priori hat.        *)
  134.  sortanz=6; monanz=7; druckanz=7; editanz=10;
  135.  loeschanz=7; kdruckanz=6; bdlanz=6;
  136.  markanz=27; artanz=6; praepanz=9;
  137.  sort:ARRAY[1..sortanz] OF skurz
  138.       =('sortieren','sortiere','sortiert',
  139.         'alphabetisch','alphabetischer',
  140.         'alphabet');
  141.  mon:ARRAY[1..monanz] OF skurz
  142.       =('monitor','bildschirm','screen','nenne',
  143.         'nennen','zeige','gib');
  144.  druck:ARRAY[1..druckanz] OF skurz
  145.       =('drucke','drucken','drucker','printer',
  146.         'ausgedruckt','gedruckt','ausdrucken');
  147.  edit:ARRAY[1..editanz] OF skurz
  148.       =('editieren','ändern','bearbeiten','editiert',
  149.         'geändert','bearbeitet','editiere','ändere',
  150.         'bearbeite','editor');
  151.  loesch:ARRAY[1..loeschanz] OF skurz
  152.       =('löschen','lösche','gelöscht','vergiß',
  153.         'streiche','vergessen','streichen');
  154.  kartdruck:ARRAY[1..kdruckanz] OF skurz
  155.       =('endloskarte','endloskarten','karteikarte',
  156.         'karteikarten','formatiert','formatierte');
  157.  bdlos:ARRAY[1..bdlanz] OF skurz
  158.       =('auch','mir','weitere','andere','viele','viel');
  159.  Mark:ARRAY[1..markanz] OF skurz
  160.       =('alle','alles','allen','allem','demjenigen',
  161.         'derjenige','diejenige','jede','jeden','jeder',
  162.         'jedem','jedes','dasjenige','dies','diese',
  163.         'dieses','diesen','diesem','dieser','dessen',
  164.         'welche','welcher','welcher',
  165.         'es','ihr','ihm','ihn');
  166.  art:ARRAY[1..artanz] OF skurz
  167.        =('das','dem','der','den','des','die');
  168.  praep:ARRAY[1..praepanz] OF skurz
  169.        =('über','von','mit','in','im',
  170.          'auf','für','an','aus');
  171.  
  172. (*$I STUFF1.INC *)
  173. (*$I STUFF2.INC *)
  174. (*$I BUBBLE.INC *)
  175. (*$I ATNBOX.INC *)
  176. (*$I TIMEDATE.INC *)
  177.  
  178.  
  179. BEGIN
  180.   Assign(LST,'PRN');
  181.   Rewrite(LST);
  182.   resetfenster;
  183.   FOR kt:=a TO i DO FOR u:=1 TO 5 DO feldnamen[kt,u]:='';
  184.   letzter_typ:=nix;
  185.   erste_karte:=NIL;
  186.   kartanz:=0;    ant:='x'; scanning:=TRUE;
  187.   New(zwischen);
  188.  
  189. (***** NEU: **********************************************)
  190.   FOR ct:=feld TO inh5 DO
  191.   LETZTE_ANTWORT_SUCHBEGRIFFE[ct]:=NIL;
  192.   LETZTE_ANTWORT_BEFEHLE:=NIL;
  193.   MERKE_NO_FELD:=FALSE;
  194.   MERKE_NACH:=FALSE;
  195.   MERKE_SORTIERER:='';
  196. (*********************************************************)
  197.  
  198.   ClrScr;
  199.   schwarzaufweiss;
  200.   Write(Chr(201)); datnam:='';
  201.   FOR u:=2 TO 79 DO Write(Chr(205));Write(Chr(187));
  202.   WriteLn('                    >>  K A R T E I <<    ',
  203.           'Stephan Diehl & TOOLBOX              '       );
  204.   GotoXY(1,2); Write(Chr(186));
  205.   GotoXY(80,2); Write(Chr(186));
  206.   Write(Chr(200));
  207.   FOR u:=2 TO 79 DO Write(Chr(205));
  208.   Write(Chr(188));
  209.   weissaufschwarz;
  210.   GotoXY(50,5);
  211.   IF MemAvail<0 THEN memavailable:=65536.0-MemAvail
  212.   ELSE memavailable:=MemAvail;
  213.   WriteLn('freier Speicher: ',
  214.           memavailable*16:7:0,' Bytes');
  215.   GotoXY(50,6);
  216.   WriteLn('Die Datei enthält: ',kartanz:5,' Karten');
  217.   GotoXY(50,7);
  218.   IF scanning THEN
  219.     WriteLn('Scanning ausschalten mit <S>')
  220.   ELSE
  221.     WriteLn ('Scanning einschalten mit <S>');
  222.   GotoXY(50,9); Write('Aktuelles Datum: ',date);
  223.   GotoXY(50,10); Write('Aktuelle Zeit: ',time:9);
  224.   schwarzaufweiss;
  225.   fenster(5,6,44,23); ClrScr; weissaufschwarz;
  226.   GotoXY(10,1);
  227.   WriteLn( ' O P T I O N E N ');
  228.   Window(7,6,44,23);WriteLn;
  229.   WriteLn('< 1 >  neues Formular entwerfen   '); WriteLn;
  230.   WriteLn('< 2 >  neue Karteikarte erstellen '); WriteLn;
  231.   WriteLn('< 3 >  Karten abspeichern         '); WriteLn;
  232.   WriteLn('< 4 >  Karten laden               '); WriteLn;
  233.   WriteLn('< 5 >  Anfragen in Deutsch        ');
  234.   WriteLn;
  235.   WriteLn('< 0 >  E N D E                    ');
  236.   WriteLn;
  237.   WriteLn('< S >  Scanning an/aus            ');
  238.   WriteLn;
  239.   Write('< ESC >  Hilfe zum Hauptmenu     ');
  240.   resetfenster;
  241.   weissaufschwarz;
  242.   weissaufschwarz;
  243.   IF hga THEN
  244.     Move(bildschirm_hga,speichere_bildschirm,4000)
  245.   ELSE
  246.     Move(bildschirm_cga,speichere_bildschirm,4000);
  247.   REPEAT
  248.     IF hga THEN
  249.       Move(speichere_bildschirm,bildschirm_hga,4000)
  250.     ELSE
  251.       Move(speichere_bildschirm,bildschirm_cga,4000);
  252.     weissaufschwarz;
  253.     GotoXY(50,5);
  254.     IF MemAvail<0 THEN
  255.       memavailable:=65536.0-MemAvail
  256.     ELSE
  257.       memavailable:=MemAvail;
  258.     WriteLn('freier Speicher: ',
  259.             memavailable*16:7:0,' Bytes');
  260.     GotoXY(50,6);
  261.     WriteLn('Die Datei enthält: ',
  262.             kartanz:5,' Karten');
  263.     GotoXY(50,7);
  264.     IF scanning THEN
  265.       WriteLn('Scanning ausschalten mit <S>')
  266.     ELSE
  267.       WriteLn ('Scanning einschalten mit <S>');
  268.     REPEAT
  269.       GotoXY(80,25);
  270.       IF tmstr<>time THEN BEGIN
  271.         weissaufschwarz;
  272.         GotoXY(66,10);
  273.         Write(time:9);
  274.         tmstr:=time
  275.       END;
  276.     UNTIL KeyPressed;
  277.     Read(KBD,ant);
  278.     weissaufschwarz;
  279.     CASE ant
  280.       OF '2' : ClrScr;
  281.       (* Reserve *)
  282.     END;
  283.     CASE ant OF
  284.       '1': neuesformular;
  285.       '2': neuekarteikarte;
  286.       '3': karten_abspeichern;
  287.       '4': karten_laden;
  288.       '5': IF kartanz>0 THEN anfragen;
  289.       's',
  290.       'S': scanning:=NOT scanning;
  291.     END;
  292.     IF ant=Chr(27) THEN hilfe(1);
  293.     resetfenster;
  294.   UNTIL ant='0';
  295.   ClrScr;
  296.   Close(LST);
  297.  END.
  298.