Previous: Kratki znakovni nizovi, Up: Znakovni nizovi u GPC-u



3.4.6 Što sa C znakovnim nizovima?

C znakovni niz (char *) je polje znakova, završeno s #0 znakom.

Funkcije C biblioteke zahtijevaju C, ne Pascal string argumente. Međutim, znakovni nizovi u Pascal stilu se automatski pretvaraju u one u C stilu kada se prosljeđuju rutinama koje očekuju znakovne nizove u C stilu. Ovo radi jedino ako rutina samo čita iz znakovnog niza, ne ako ga ona modificira.

Npr. to je način kako ćete pozvati system() poziv u vašoj C biblioteci (što više nije neophodno, otkad je već ugrađen Execute):

     program SysCall;
     
     function System (CmdLine: CString): Integer; external name 'system';
     
     var
       Result: Integer;
     
     begin
       Result := System ('ls -l');
       WriteLn ('system() call returned: ', Result)
     end.

Mogli biste koristiti tip PChar umjesto CString. I CString i PChar su oboje definirani kao ^Char – iako mi preporučujemo CString jer to čini jasnijim da govorimo o nekakvom nizu prije nego o jednom jedinom znaku.

Mnogo rutina iz biblioteke u Pascalu za mnoge aplikacije postoji u GPC jedinici i u nekim drugim jedinicama. Kad god je to moguće, trebalo bi ove koristiti (npr. Execute radije nego system(), i tada se ne trebate brinuti o CString-ovima.

Molimo NE prosljeđivati C znakovne nizove kao const ili var parametar ako C prototip kaže const char * ili ćete vjerojatno dobiti "Segmentation fault" pogrešku.