home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / tcpp / examples / tcalc / tcalc.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-06-10  |  7.8 KB  |  258 lines

  1. /*
  2. Turbo C - (C) Copyright 1987,1988,1990 by Borland International */
  3.  
  4. #define S_IREAD     0x0100    /* from SYS\STAT.H */
  5. #define S_IWRITE 0x0080    /* from SYS\STAT.H */
  6.  
  7. #define TRUE 1
  8. #define FALSE 0
  9.  
  10. #define MSGHEADER "TURBOCALC - ein Turbo C-Demonstrationsprogramm"
  11. #define MSGKEYPRESS "Mit beliebiger Taste weiter."
  12. #define MSGCOMMAND "  / -> Kommandos, F2 -> Edit"
  13. #define MSGMEMORY "Freier Speicher:"
  14. #define MSGERROR "FEHLER"
  15. #define MSGLOMEM "Kein Platz für diese Zelle im Speicher."
  16. #define MSGEMPTY "Leer"
  17. #define MSGTEXT  "Text"
  18. #define MSGVALUE "Wert"
  19. #define MSGFORMULA "Formel"
  20. #define MSGAUTOCALC "AutoCalc"
  21. #define MSGFORMDISPLAY "Form"
  22. #define MSGFILENAME "Geben Sie den Dateinamen des Rechenblatts ein:"
  23. #define MSGNAME "Turbo C TurboCalc Spreadsheet"
  24. #define MSGCOLWIDTH "Neue Spaltenbreite:"
  25. #define MSGNOOPEN "Fehler beim Öffnen der Datei."
  26. #define MSGOVERWRITE "Datei existiert bereits. Überschreiben?"
  27. #define MSGFILELOMEM "Ungenügend Speicherplatz für das Rechenblatt "
  28. #define MSGNOTURBOCALC "Diese Datei ist kein TurboCalc-Rechenblatt."
  29. #define MSGNOEXIST "Datei nicht gefunden."
  30. #define MSGGOTO "Eingabe der Zelladresse:"
  31. #define MSGBADNUMBER "Eine Zahl zwischen %d und %d eingeben."
  32. #define MSGBADCELL "Das ist keine gültige Zelladresse."
  33. #define MSGCELL1 "Adresse der ersten zu formatierenden Zelle: "
  34. #define MSGCELL2 "Adresse der letzten zu formatierenden Zelle:"
  35. #define MSGDIFFCOLROW "Spalten- oder Zeilennummer müssen gleich sein."
  36. #define MSGRIGHTJUST "Rechtsbündige Darstellung?"
  37. #define MSGDOLLAR "Zahlenwerte im Währungsformat?"
  38. #define MSGCOMMAS "Kommas nach jeder dritten Dezimalstelle?"
  39. #define MSGPLACES "Wieviele Nachkommastellen sollen ausgegeben werden?"
  40. #define MSGCOLUMNS "Ausgabe in 132 Zeichen Breite (Standard = 80)?"
  41. #define MSGPRINT "Name der Druckdatei (RETURN -> Ausgabe auf Drucker):"
  42. #define MSGBORDER "Zeilen-/Spaltennummer ebenfalls ausgeben?"
  43. #define MSGLOADING "Rechenblatt wird geladen..."
  44. #define MSGSAVING "Rechenblatt wird gespeichert..."
  45. #define MSGSAVESHEET "Rechenblatt speichern?"
  46. #define MSGSTACKERROR "Stack-Überlauf bei der Formelauswertung."
  47.  
  48. #define MENU "Rechenblatt Format Löschen Goto Spalte Zeile Edit Diverses Auto Beenden"
  49. #define COMMAND "RFLGSZEDAB"
  50. #define SMENU "Laden  Speichern  Drucken  Neu"
  51. #define SCOMMAND "LSDN"
  52. #define CMENU "Einfügen  Löschen  Breite"
  53. #define CCOMMAND "ELB"
  54. #define RMENU "Einfügen  Löschen"
  55. #define RCOMMAND "EL"
  56. #define UMENU "Neuberechnen  Formeldarstellung an/aus"
  57. #define UCOMMAND "NF"
  58.  
  59. #define MAXCOLS 100   /* MAXCOLS * MAXROWS sollte <= 10000 sein */
  60. #define MAXROWS 100
  61. #define LEFTMARGIN 3
  62. #define MINCOLWIDTH 3
  63. #define MAXCOLWIDTH 80 - LEFTMARGIN
  64. #define SCREENCOLS (80 - LEFTMARGIN) / MINCOLWIDTH + 1
  65. #define SCREENROWS 20
  66. #define DEFAULTWIDTH 10
  67. #define DEFAULTFORMAT 0X42
  68. #define MAXINPUT 79
  69. #define MAXPLACES 8
  70. #define TOPMARGIN 5
  71. #define PARSERSTACKSIZE 20
  72.  
  73. #define TEXTCOLOR WHITE
  74. #define ERRORCOLOR LIGHTRED + BLINK
  75. #define VALUECOLOR LIGHTCYAN
  76. #define FORMULACOLOR LIGHTMAGENTA
  77. #define BLANKCOLOR BLACK
  78. #define HEADERCOLOR WHITE + (RED << 4)
  79. #define HIGHLIGHTCOLOR WHITE + (BLUE << 4)
  80. #define HIGHLIGHTERRORCOLOR WHITE + (BLUE << 4) + BLINK
  81. #define MSGAUTOCALCCOLOR LIGHTCYAN
  82. #define MSGFORMDISPLAYCOLOR LIGHTMAGENTA
  83. #define MSGMEMORYCOLOR LIGHTGREEN
  84. #define MSGHEADERCOLOR LIGHTCYAN
  85. #define PROMPTCOLOR YELLOW
  86. #define COMMANDCOLOR LIGHTCYAN
  87. #define LOWCOMMANDCOLOR WHITE
  88. #define MEMORYCOLOR LIGHTRED
  89. #define CELLTYPECOLOR LIGHTGREEN
  90. #define CELLCONTENTSCOLOR YELLOW
  91.  
  92. #define HIGHLIGHT TRUE
  93. #define NOHIGHLIGHT FALSE
  94. #define UPDATE TRUE
  95. #define NOUPDATE FALSE
  96. #define FORMAT TRUE
  97. #define NOFORMAT FALSE
  98. #define LEFT 0
  99. #define RIGHT 1
  100. #define UP 2
  101. #define DOWN 3
  102. #define TEXT 0
  103. #define VALUE 1
  104. #define FORMULA 2
  105. #define COLADD 0
  106. #define COLDEL 1
  107. #define ROWADD 2
  108. #define ROWDEL 3
  109. #define OVERWRITE 0X80
  110. #define RJUSTIFY 0X40
  111. #define COMMAS 0X20
  112. #define DOLLAR 0X10
  113.  
  114. struct CELLREC
  115. {
  116.  char attrib;
  117.  union
  118.  {
  119.   char text[MAXINPUT + 1];
  120.   double value;
  121.   struct
  122.   {
  123.    double fvalue;
  124.    char formula[MAXINPUT + 1];
  125.   } f;
  126.  } v;
  127. };
  128.  
  129. typedef struct CELLREC *CELLPTR;
  130.  
  131. #if defined(__TINY__) || defined(__SMALL__) || defined(__MEDIUM__)
  132.  
  133. #define memsize coreleft() - 1000
  134. #define textcellsize(s) (((strlen(s) >> 1) + 3) << 1)
  135. #define valuecellsize 12
  136. #define formulacellsize(s) (((strlen(s) >> 1) + 7) << 1)
  137.  
  138. #else
  139.  
  140. #define memsize farcoreleft() - 1000
  141. #define textcellsize(s) (((strlen(s) >> 1) + 5) << 1)
  142. #define valuecellsize 16
  143. #define formulacellsize(s) (((strlen(s) >> 1) + 9) << 1)
  144.  
  145. #endif
  146.  
  147. #define BS 8
  148. #define FORMFEED 12
  149. #define CR 13
  150. #define ESC 27
  151. #define HOMEKEY 327
  152. #define ENDKEY 335
  153. #define UPKEY 328
  154. #define DOWNKEY 336
  155. #define PGUPKEY 329
  156. #define PGDNKEY 337
  157. #define LEFTKEY 331
  158. #define INSKEY 338
  159. #define RIGHTKEY 333
  160. #define DELKEY 339
  161. #define CTRLLEFTKEY 371
  162. #define CTRLRIGHTKEY 372
  163. #define F1 315
  164. #define F2 316
  165. #define F3 317
  166. #define F4 318
  167. #define F5 319
  168. #define F6 320
  169. #define F7 321
  170. #define F8 322
  171. #define F9 323
  172. #define F10 324
  173.  
  174. void initcursor(void);
  175. int getkey(void);
  176. int editstring(char *s, char *legal, int maxlength);
  177. int getint(int *number, int low, int high);
  178. void getinput(int c);
  179. void setcolor(int color);
  180. void scroll(int direction, int lines, int x1, int y1, int x2, int y2,
  181.             int attrib);
  182. void setcursor(unsigned int shape);
  183. void writef(int col, int row, int color, int width, char *format, ...);
  184. void printcol(void);
  185. void printrow(void);
  186. void displaycell(int col, int row, int highlighting, int updating);
  187. void displaycol(int col, int updating);
  188. void displayrow(int row, int updating);
  189. void displayscreen(int updating);
  190. void clearinput(void);
  191. void changecursor(int insmode);
  192. void showcelltype(void);
  193. void initcolortable(void);
  194. double parse(char *s, int *att);
  195. int alloctext(int col, int row, char *s);
  196. int allocvalue(int col, int row, double amt);
  197. int allocformula(int col, int row, char *s, double amt);
  198. void deletecell(int col, int row, int display);
  199. void printfreemem(void);
  200. void moverowup(void);
  201. void moverowdown(void);
  202. void movecolleft(void);
  203. void movecolright(void);
  204. void recalc(void);
  205. void changeautocalc(int newmode);
  206. void changeformdisplay(int newmode);
  207. void errormsg(char *s);
  208. void colstring(int col, char *colstr);
  209. void centercolstring(int col, char *colstr);
  210. void setleftcol(void);
  211. void setrightcol(void);
  212. void settoprow(void);
  213. void setbottomrow(void);
  214. void movehighlight(void);
  215. void setlastcol(void);
  216. void setlastrow(void);
  217. void act(char *s);
  218. void initvars(void);
  219. int getcommand(char *msgstr, char *comstr);
  220. void mainmenu(void);
  221. void editcell(CELLPTR ecell);
  222. int setoflags(int col, int row, int display);
  223. void clearoflags(int col, int row, int display);
  224. void updateoflags(int col, int row, int display);
  225. void loadsheet(char *filename);
  226. int getcell(int *col, int *row);
  227. char *cellstring(int col, int row, int *color, int formatting);
  228. void writeprompt(char *prompt);
  229. int getyesno(int *yesno, char *prompt);
  230. void swap(int *val1, int *val2);
  231. void redrawscreen(void);
  232. void checkforsave(void);
  233. void savesheet(void);
  234. int formulastart(char **input, int *col, int *row);
  235. int rowwidth(int row);
  236. void fixformula(int col, int row, int action, int place);
  237. void clearlastcol(void);
  238. void run(void);
  239. void gotocell(void);
  240.  
  241. #if !defined(MAIN)
  242.  
  243. extern CELLPTR cell[MAXCOLS][MAXROWS], curcell;
  244. extern unsigned char format[MAXCOLS][MAXROWS];
  245. extern unsigned char colwidth[MAXCOLS];
  246. extern unsigned char colstart[SCREENCOLS];
  247. extern char formdisplay;
  248. extern char changed;
  249. extern char autocalc;
  250. extern int leftcol, rightcol, toprow, bottomrow, curcol, currow, lastcol,
  251.  lastrow, direction;
  252. extern long memleft;
  253. extern char stop;
  254. extern char matherror;
  255. extern unsigned int oldcursor, shortcursor, tallcursor, nocursor;
  256.  
  257. #endif
  258.