home *** CD-ROM | disk | FTP | other *** search
- PASCAL.FAQ Frequently asked questions about Pascal
-
- The aim of this document is to give answers to frequently asked
- questions in the pascal echo. Thumb rules before asking for help are to
- look in the manuals and in the online help first. Many problems can be
- solved by just looking into either / both of them. Here are some
- topics, that come very often in the Pascal Echo.
-
- Part I
- #1: Changing the case of strings
- #2: Compiler errors
- #3: Redirection of output
-
- ---------------------------------------------------------------------
- #1 Strings
-
- Q1: How do I access a single char in a string ?
- Q2: How can I make a string all upper cases ?
-
- A1: A string is an Array[0..255] of Char, where the 0th char is the
- length of the string. To access any character in the string, you can
- write
-
- MyChar := String[ I ];
-
- A2: To map a single character to uppercase, you can use the UpCase()
- function of the run time library. To turn a whole string into upper
- cases, just use this function :
-
- Function UpperCase( const S : String ) : String;
- Var I : Integer;
- Begin
- { first store the length in the result }
- UpperCase[ 0 ] := S[ 0 ]
- { now translate each char in S into a upper case char in UpperCase }
- For I := 1 to Length( S ) do
- UpperCase[ I ] := UpCase( S[ I ]);
- End;
-
- There is a assembler implementation in the manuals ( the linking
- assembly language chaprt ), and there are many other optimized upper
- case routines out there.
-
- ---------------------------------------------------------------------
- #2 Compiler Errors
-
- Q1: I get a "Code segment too large" error. How can I fix it ?
- Q2: I get a "Data segment too large" error. How can I fix it ?
-
- A1: This error means, that you have more than 64K code in one part
- of your program. To reduce the size of this code segment, you need
- to move parts of it into other units. This is possible to virtually
- unlimited units.
-
- A2: This error means, that you have more than 64K data in your program.
- You need to put some data on the heap ( -> GetMem / FreeMem / New
- / Dispose ) or to reduce your global data and make it local data on
- the stack.
-
- ---------------------------------------------------------------------
- #3 Redirection of output
-
- Q1: How can I make the output of my program redirectable under DOS ?
-
- A1: In general, the output of TP programs _is_ redirectable, except if
- you use the CRT unit. Then you need to either reassign output to
- '' or to declare a Text variable called for example ReOutput ( for
- Redirectable Output ), and write the output to it.
-
- Example :
-
- Uses CRT;
-
- Begin
- WriteLn( 'This will always show up. Just a copyright.' );
- Assign( Output, '' );
- Rewrite( Output );
- WriteLn( 'This is redirectable.' );
- AssignCRT( Output );
- Rewrite( Output );
- WriteLn( 'And this will alyways show up again.' );
- End.
-
- There are some myths that setting DirectVideo to False would result in
- redirectable output even when using CRT, or that TP _always_ writes
- directly to the screen, and that TP output is _never_ redirectable. You
- can ignore thos myths, TP writes to the screen using DOS, _except_ if
- you use the unit CRT. Then TP writes directly to the screen. If you set
- the variable DirectVideo to False, TP uses BIOS calls to write to the
- screen.