home *** CD-ROM | disk | FTP | other *** search
- (*------------------------------------------------------*)
- (* KARTEI.PAS *)
- (* Hauptprogramm des Karteikartenprogramm mit Erkennung *)
- (* natürlicher Sprache *)
- (* Teil 2: Erweiterungen für Anaphorismen *)
- (* (C) 1989 Stephan Diehl & TOOLBOX *)
-
- PROGRAM Kartei;
-
- USES Crt, Turbo3, Dos; (* Für Turbo 3.0 auskommentieren *)
-
- TYPE
- skurz=STRING[12];
- smittel=STRING[40];
- slang=STRING[55];
-
- (* ------ ALT: ---------------------------------------
- kategorien=(feld,inh1,inh2,inh3,inh4,inh5,
- anweisung,pop,bdl);
- ------------------------------------------------------*)
-
- (******** NEU: ****************************************)
- sriesig=STRING[255];
- kategorien=(feld,inh1,inh2,inh3,inh4,inh5,anweisung,
- pop,bdl,MARKER,ARTIKEL,PRaePOSITION);
- (******************************************************)
-
- kartentypen=(nix,a,b,c,d,e,f,g,h,i,voll);
- kartenzeiger=^kartenform;
- kartenform=RECORD
- kartentyp:kartentypen;
- inhalt:ARRAY[1..4] OF smittel;
- inhalt5:ARRAY[1..7] OF slang;
- naechste:kartenzeiger;
- END;
- wlistzeiger=^wortliste;
- wortliste=RECORD
- begriff:smittel;
- naechste:wlistzeiger;
- END;
- zustaende=(za,zb,zc,zd,ze,zf);
- anweisungen=(drucker,monitor,sortieren,editieren,
- loeschen,kartedrucken,keine);
- befehlszeiger=^befehlsliste;
- befehlsliste=RECORD
- anw:anweisungen;
- naechste:befehlszeiger;
- END;
- namensfeld=ARRAY[a..i,1..5] OF skurz;
- formular=RECORD
- k1:namensfeld;
- k2:kartentypen;
- END;
- begriffsfeld=ARRAY[feld..inh5] OF wlistzeiger;
- bild=ARRAY[1..4000] OF BYTE;
-
- VAR
- LST : TEXT;
- ant:CHAR;
- memavailable:REAL;
- bildschirm_hga : BYTE ABSOLUTE $b000:0;
- bildschirm_cga : BYTE ABSOLUTE $b800:0;
- speichere_bildschirm,speichere_bild_help:bild;
- zeile:INTEGER;
- (* Formulare *)
- feldnamen : namensfeld;
- (* Zeiger zum verwalten der Karteikartenliste *)
- erste_karte,karte,ksuch1,
- ksuch2, hilf, zwischen,letzte_karte,
- sorthilf, vorgaenger : kartenzeiger;
- kt,letzter_typ : kartentypen;
- kartanz,fnr,u,z,y,antworten,
- xxx1,xxx2,yyy1,yyy2,ccx,ccy : INTEGER;
- (*---- ALT: ---------------------------------------------
- In diesem Array werden 5 Listen
- mit Suchbegriffen verwaltet
- erster_begriff,letzter_begriff,suchbegriff : begriffsfeld;
- wort,sortierer,hilfstr : smittel;
- eingabe,tmstr : slang;
- category,cty : kategorien;
- zustand : zustaende;
- nach,no_change,zweite_anfrage,scanning,
- auf_drucker,no_feld,no_feld2 : BOOLEAN;
- anweis : anweisungen;
- erster_befehl,letzter_befehl,befehl : befehlszeiger;
- ctrlmenge : SET OF anweisungen;
- datnam : STRING[8];
- textdatei : TEXT;
- formulardatei : FILE OF formular;
- kartendatei : FILE OF kartenform;
- hformular : formular;
- ---------------------------------------------------------*)
-
- (********* NEU: ******************************************)
- erster_begriff,letzter_begriff,suchbegriff,
- begriff,LETZTE_ANTWORT_SUCHBEGRIFFE : begriffsfeld;
- MERKE_SORTIERER,wort,sortierer,hilfstr : smittel;
- eingabe,merke_eingabe : sriesig;
- tmstr : slang;
- ct, category,cty,LETZTES_WORT : kategorien;
- zustand : zustaende;
- MERKE_NACH,nach,no_change,zweite_anfrage,
- scanning,auf_drucker,MERKE_NO_FELD,
- MERKE_NO_FELD2,no_feld,
- no_feld2,REFLEXIV,KEIN_SUCHBEGRIFF,UND : BOOLEAN;
- anweis : anweisungen;
- erster_befehl,letzter_befehl,befehl,
- LETZTE_ANTWORT_BEFEHLE : befehlszeiger;
- ctrlmenge : SET OF
- anweisungen;
- datnam : STRING[8];
- textdatei : TEXT;
- formulardatei : FILE OF
- formular;
- kartendatei : FILE OF
- kartenform;
- hformular : formular;
- (*********************************************************)
-
-
- CONST
- (* Der "Joker" ist sozusagen mit jedem Wort gleich *)
- wildcard='^';
-
- (* ----- ALT: -------------------------------------------
- Das alte Wörterbuch durch das folgende neue ersetzen.
- ------------------------------------------------------- *)
-
-
- (************ NEU - NEU - NEU *******************)
- (* Die folgenden 7 Woerterbuecher koennen noch *)
- (* erweitert werden. Sie bilden den gesamten *)
- (* Wortschatz, den Kartei a priori hat. *)
- sortanz=6; monanz=7; druckanz=7; editanz=10;
- loeschanz=7; kdruckanz=6; bdlanz=6;
- markanz=27; artanz=6; praepanz=9;
- sort:ARRAY[1..sortanz] OF skurz
- =('sortieren','sortiere','sortiert',
- 'alphabetisch','alphabetischer',
- 'alphabet');
- mon:ARRAY[1..monanz] OF skurz
- =('monitor','bildschirm','screen','nenne',
- 'nennen','zeige','gib');
- druck:ARRAY[1..druckanz] OF skurz
- =('drucke','drucken','drucker','printer',
- 'ausgedruckt','gedruckt','ausdrucken');
- edit:ARRAY[1..editanz] OF skurz
- =('editieren','ändern','bearbeiten','editiert',
- 'geändert','bearbeitet','editiere','ändere',
- 'bearbeite','editor');
- loesch:ARRAY[1..loeschanz] OF skurz
- =('löschen','lösche','gelöscht','vergiß',
- 'streiche','vergessen','streichen');
- kartdruck:ARRAY[1..kdruckanz] OF skurz
- =('endloskarte','endloskarten','karteikarte',
- 'karteikarten','formatiert','formatierte');
- bdlos:ARRAY[1..bdlanz] OF skurz
- =('auch','mir','weitere','andere','viele','viel');
- Mark:ARRAY[1..markanz] OF skurz
- =('alle','alles','allen','allem','demjenigen',
- 'derjenige','diejenige','jede','jeden','jeder',
- 'jedem','jedes','dasjenige','dies','diese',
- 'dieses','diesen','diesem','dieser','dessen',
- 'welche','welcher','welcher',
- 'es','ihr','ihm','ihn');
- art:ARRAY[1..artanz] OF skurz
- =('das','dem','der','den','des','die');
- praep:ARRAY[1..praepanz] OF skurz
- =('über','von','mit','in','im',
- 'auf','für','an','aus');
-
- (*$I STUFF1.INC *)
- (*$I STUFF2.INC *)
- (*$I BUBBLE.INC *)
- (*$I ATNBOX.INC *)
- (*$I TIMEDATE.INC *)
-
-
- BEGIN
- Assign(LST,'PRN');
- Rewrite(LST);
- resetfenster;
- FOR kt:=a TO i DO FOR u:=1 TO 5 DO feldnamen[kt,u]:='';
- letzter_typ:=nix;
- erste_karte:=NIL;
- kartanz:=0; ant:='x'; scanning:=TRUE;
- New(zwischen);
-
- (***** NEU: **********************************************)
- FOR ct:=feld TO inh5 DO
- LETZTE_ANTWORT_SUCHBEGRIFFE[ct]:=NIL;
- LETZTE_ANTWORT_BEFEHLE:=NIL;
- MERKE_NO_FELD:=FALSE;
- MERKE_NACH:=FALSE;
- MERKE_SORTIERER:='';
- (*********************************************************)
-
- ClrScr;
- schwarzaufweiss;
- Write(Chr(201)); datnam:='';
- FOR u:=2 TO 79 DO Write(Chr(205));Write(Chr(187));
- WriteLn(' >> K A R T E I << ',
- 'Stephan Diehl & TOOLBOX ' );
- GotoXY(1,2); Write(Chr(186));
- GotoXY(80,2); Write(Chr(186));
- Write(Chr(200));
- FOR u:=2 TO 79 DO Write(Chr(205));
- Write(Chr(188));
- weissaufschwarz;
- GotoXY(50,5);
- IF MemAvail<0 THEN memavailable:=65536.0-MemAvail
- ELSE memavailable:=MemAvail;
- WriteLn('freier Speicher: ',
- memavailable*16:7:0,' Bytes');
- GotoXY(50,6);
- WriteLn('Die Datei enthält: ',kartanz:5,' Karten');
- GotoXY(50,7);
- IF scanning THEN
- WriteLn('Scanning ausschalten mit <S>')
- ELSE
- WriteLn ('Scanning einschalten mit <S>');
- GotoXY(50,9); Write('Aktuelles Datum: ',date);
- GotoXY(50,10); Write('Aktuelle Zeit: ',time:9);
- schwarzaufweiss;
- fenster(5,6,44,23); ClrScr; weissaufschwarz;
- GotoXY(10,1);
- WriteLn( ' O P T I O N E N ');
- Window(7,6,44,23);WriteLn;
- WriteLn('< 1 > neues Formular entwerfen '); WriteLn;
- WriteLn('< 2 > neue Karteikarte erstellen '); WriteLn;
- WriteLn('< 3 > Karten abspeichern '); WriteLn;
- WriteLn('< 4 > Karten laden '); WriteLn;
- WriteLn('< 5 > Anfragen in Deutsch ');
- WriteLn;
- WriteLn('< 0 > E N D E ');
- WriteLn;
- WriteLn('< S > Scanning an/aus ');
- WriteLn;
- Write('< ESC > Hilfe zum Hauptmenu ');
- resetfenster;
- weissaufschwarz;
- weissaufschwarz;
- IF hga THEN
- Move(bildschirm_hga,speichere_bildschirm,4000)
- ELSE
- Move(bildschirm_cga,speichere_bildschirm,4000);
- REPEAT
- IF hga THEN
- Move(speichere_bildschirm,bildschirm_hga,4000)
- ELSE
- Move(speichere_bildschirm,bildschirm_cga,4000);
- weissaufschwarz;
- GotoXY(50,5);
- IF MemAvail<0 THEN
- memavailable:=65536.0-MemAvail
- ELSE
- memavailable:=MemAvail;
- WriteLn('freier Speicher: ',
- memavailable*16:7:0,' Bytes');
- GotoXY(50,6);
- WriteLn('Die Datei enthält: ',
- kartanz:5,' Karten');
- GotoXY(50,7);
- IF scanning THEN
- WriteLn('Scanning ausschalten mit <S>')
- ELSE
- WriteLn ('Scanning einschalten mit <S>');
- REPEAT
- GotoXY(80,25);
- IF tmstr<>time THEN BEGIN
- weissaufschwarz;
- GotoXY(66,10);
- Write(time:9);
- tmstr:=time
- END;
- UNTIL KeyPressed;
- Read(KBD,ant);
- weissaufschwarz;
- CASE ant
- OF '2' : ClrScr;
- (* Reserve *)
- END;
- CASE ant OF
- '1': neuesformular;
- '2': neuekarteikarte;
- '3': karten_abspeichern;
- '4': karten_laden;
- '5': IF kartanz>0 THEN anfragen;
- 's',
- 'S': scanning:=NOT scanning;
- END;
- IF ant=Chr(27) THEN hilfe(1);
- resetfenster;
- UNTIL ant='0';
- ClrScr;
- Close(LST);
- END.