home *** CD-ROM | disk | FTP | other *** search
-
- { Copyright (c) 1985, 87 by Borland International, Inc. }
-
- unit MCVARS;
-
- interface
-
- uses Crt;
-
- {$IFOPT N+}
-
- type
- Real = Extended;
-
- const
- EXPLIMIT = 11356;
- SQRLIMIT = 1E2466;
- MAXPLACES = 8;
- MAXEXPLEN = 4;
-
- {$ELSE}
-
- const
- EXPLIMIT = 88;
- SQRLIMIT = 1E18;
- MAXPLACES = 4;
- MAXEXPLEN = 3;
-
- {$ENDIF}
-
- const
- MSGHEADER = 'MicroCalc - ein Turbo Pascal-Demonstrationsprogramm';
- MSGKEYPRESS = 'Jeder Tastendruck -> Weiter';
- MSGCOMMAND = '"/" -> Kommandos, F2 -> Edit';
- MSGMEMORY = 'Freier Speicher:';
- MSGLOMEM = 'Kein Platz für diese Zelle im Speicher!';
- MSGERRORTXT = 'FEHLER';
- MSGEMPTY = 'Leer';
- MSGTEXT = 'Text';
- MSGVALUE = 'Wert';
- MSGFORMULA = 'Formel';
- MSGAUTOCALC = 'AutoCalc';
- MSGFORMDISPLAY = 'Form';
- MSGFILENAME = 'Geben Sie den Namen des Rechenblattes ein:';
- MSGNAME = 'MicroCalc Rechenblatt';
- MSGCOLWIDTH = 'Neue Spaltenbreite:';
- MSGNOOPEN = 'Fehler beim Öffnen der Datei.';
- MSGOVERWRITE = 'Datei existiert bereits. Überschreiben?';
- MSGFILELOMEM = 'Nicht genug Speicherplatz für das gesamte Rechenblatt.';
- MSGNOMICROCALC = 'Diese Datei ist kein MicroCalc-Rechenblatt.';
- MSGBADREALS = 'Die Realzahlen in dieser Datei haben ein anderes Format.';
- MSGNOEXIST = 'Datei nicht gefunden.';
- MSGGOTO = 'Eingabe der Zelladresse:';
- MSGBADNUMBER = 'Zulässiger Bereich der Eingabe ist';
- MSGBADCELL = 'Hmm - das ist keine gültige Zelladresse';
- MSGCELL1 = 'Adresse der ersten zu formatierenden Zelle:';
- MSGCELL2 = 'Adresse der letzten zu formatierenden Zelle:';
- MSGDIFFCOLROW = 'Entweder Spalten- oder Reihennummer müssen gleich sein';
- MSGRIGHTJUST = 'Rechtsbündige Darstellung?';
- MSGDOLLAR = 'Zahlenwerte im Währungsformat?';
- MSGCOMMAS = 'Kommas nach jeder dritten Dezimalstelle?';
- MSGPLACES = 'Wieviele Stellen nach dem Komma sollen ausgegeben werden?';
- MSGCOLUMNS = 'Ausgabe mit 132 Zeichen Breite (Standard = 80)?';
- MSGPRINT = 'Name der Druck-Datei (nur ENTER -> Ausgabe auf den Drucker):';
- MSGBORDER = 'Reihen/Spaltennummern ebenfalls ausgeben?';
- MSGLOADING = 'Rechenblatt wird geladen...';
- MSGSAVING = 'Rechenblatt wird gespeichert...';
- MSGSAVESHEET = 'Rechenblatt speichern?';
- MSGSTACKERROR = 'Stack-Überlauf bei der Formelauswertung.';
-
- MNU = 'Rechenblatt Format Löschen Goto Spalte Zeile Edit Diverses Auto Beenden';
- COMMAND = 'RFLGSZEDAB'#27;
- SMNU = 'Laden Speichern Drucken Neu';
- SCOMMAND = 'LSDN';
- CMNU = 'Einfügen Löschen Breite';
- CCOMMAND = 'ELB';
- RMNU = 'Einfügen Löschen';
- RCOMMAND = 'EL';
- UMNU = 'Neuberechnen Formel-Darstellung an/aus Bildschirmzeilen 43/25';
- UCOMMAND = 'NFB';
-
- MAXCOLS = 100; { MAXCOLS * MAXROWS sollte <= 10000 sein }
- MAXROWS = 100;
- LEFTMARGIN = 3;
- MINCOLWIDTH = 3;
- MAXCOLWIDTH = 77;
- SCREENCOLS = 26;
- DEFAULTWIDTH = 10;
- DEFAULTFORMAT = $42;
- MAXINPUT = 79;
- TOPMARGIN = 5;
- PARSERSTACKSIZE = 20;
-
- TXTCOLOR = White;
- ERRORCOLOR = 140; { Hellrot + blinkend }
- VALUECOLOR = LightCyan;
- FORMULACOLOR = LightMagenta;
- BLANKCOLOR = Black;
- HEADERCOLOR = 79; { Weiß mit rotem Hintergrund }
- HIGHLIGHTCOLOR = 31; { Weiß mit blauem Hintergrund }
- HIGHLIGHTERRORCOLOR = 159; { Weiß, blinkend mit blauem Hintergrund }
- MSGAUTOCALCCOLOR = LightCyan;
- MSGFORMDISPLAYCOLOR = LightMagenta;
- MSGMEMORYCOLOR = LightGreen;
- MSGHEADERCOLOR = LightCyan;
- PROMPTCOLOR = Yellow;
- COMMANDCOLOR = LightCyan;
- LOWCOMMANDCOLOR = White;
- MEMORYCOLOR = LightRed;
- CELLTYPECOLOR = LightGreen;
- CELLCONTENTSCOLOR = Yellow;
-
- HIGHLIGHT = True;
- NOHIGHLIGHT = False;
- UPDATE = True;
- NOUPDATE = False;
- DOFORMAT = True;
- NOFORMAT = False;
- LEFT = 0;
- RIGHT = 1;
- UP = 2;
- DOWN = 3;
- TXT = 0;
- VALUE = 1;
- FORMULA = 2;
- COLADD = 0;
- COLDEL = 1;
- ROWADD = 2;
- ROWDEL = 3;
- OVERWRITE = $80;
- RJUSTIFY = $40;
- COMMAS = $20;
- DOLLAR = $10;
- LETTERS : set of Char = ['A'..'Z', 'a'..'z'];
-
- NULL = #0;
- BS = #8;
- FORMFEED = #12;
- CR = #13;
- ESC = #27;
- HOMEKEY = #199;
- ENDKEY = #207;
- UPKEY = #200;
- DOWNKEY = #208;
- PGUPKEY = #201;
- PGDNKEY = #209;
- LEFTKEY = #203;
- INSKEY = #210;
- RIGHTKEY = #205;
- DELKEY = #211;
- CTRLLEFTKEY = #243;
- CTRLRIGHTKEY = #244;
- F1 = #187;
- F2 = #188;
- F3 = #189;
- F4 = #190;
- F5 = #191;
- F6 = #192;
- F7 = #193;
- F8 = #194;
- F9 = #195;
- F10 = #196;
-
- type
- IString = String[MAXINPUT];
- CellRec = record { eine Zelle }
- Error : Boolean;
- case Attrib : Byte of { varianter Teil: }
- TXT : (T : IString); { Text }
- VALUE : (Value : Real); { Wert }
- FORMULA : (Fvalue : Real; { Formel (mit Ergebnis) }
- Formula : IString);
- end;
- CellPtr = ^CellRec;
-
- var
- Cell : array [1..MAXCOLS, 1..MAXROWS] of CellPtr;
- CurCell : CellPtr;
- Format : array [1..MAXCOLS, 1..MAXROWS] of Byte;
- ColWidth : array [1..MAXCOLS] of Byte;
- ColStart : array [1..SCREENCOLS] of Byte;
- LeftCol, RightCol, TopRow, BottomRow, CurCol, CurRow, LastCol,
- LastRow : Word;
- Changed, FormDisplay, AutoCalc, Stop, ColorCard : Boolean;
- ColorTable : array [0..255] of Byte;
- ScreenRows : Byte;
- OldMode : Word;
- UMenuString : String[80];
- UCommandString : String[3];
-
- implementation
-
- begin
- end.