[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.4.6 What about C strings?

A C string (`char *') is an array of char, terminated with a `#0' char.

C library functions require C, not Pascal style string arguments. However, Pascal style strings are automatically converted to C style strings when passed to a routine that expects C style strings. This works only if the routine reads from the string, not if it modifies it.

E.g., this is how you could access the `system()' call in your C library (which is not necessary anymore, since `Execute' is already built-in):

 
program SysCall;

function System (Name: CString): Integer; asmname 'system';

var Result: Integer;

begin Result := System ('ls -l'); WriteLn ('system() call returned: ', Result) end.

You could use the type `PChar' instead of `CString'. Both `CString' and `PChar' are predefined as `^Char' -- though we recommend `CString' because it makes it clearer that we're talking about some kind of string rather than a single character.

A lot of library routines in Pascal for many applications exist in the GPC unit and some other units. Where available, they should be preferred (e.g. `Execute' rather than `system()', and then you won't have to worry about `CString's.)

Do not pass a C style string as a `const' or `var' argument if the C prototype says `const char *' or you will probably get a segfault.



This document was generated by Frank Heckenbach on May, 10 2002 using texi2html