Pascal - Stringhe

La stringa in Pascal è in realtà una sequenza di caratteri con una specifica di dimensione opzionale. I caratteri possono essere numerici, lettere, spazi vuoti, caratteri speciali o una combinazione di tutti. Extended Pascal fornisce numerosi tipi di oggetti stringa a seconda del sistema e dell'implementazione. Discuteremo i tipi più comuni di stringhe utilizzate nei programmi.

Puoi definire una stringa in molti modi:

  • Character arrays - Questa è una stringa di caratteri che è una sequenza di zero o più caratteri di dimensioni byte racchiusi tra virgolette singole.

  • String variables - La variabile di tipo String, come definita in Turbo Pascal.

  • Short strings - La variabile di tipo String con specifica della dimensione.

  • Null terminated strings - La variabile di pchar genere.

  • AnsiStrings - Le risposte sono stringhe che non hanno limiti di lunghezza.

Pascal fornisce un solo operatore di stringa, operatore di concatenazione di stringhe (+).

Esempi

Il seguente programma stampa i primi quattro tipi di stringhe. Useremo AnsiStrings nel prossimo esempio.

program exString;
var
   greetings: string;
   name: packed array [1..10] of char;
   organisation: string[10];
   message: pchar;

begin
   greetings := 'Hello ';
   message := 'Good Day!';
   
   writeln('Please Enter your Name');
   readln(name);
   
   writeln('Please Enter the name of your Organisation');
   readln(organisation);
   
   writeln(greetings, name, ' from ', organisation);
   writeln(message); 
end.

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Please Enter your Name
John Smith
Please Enter the name of your Organisation
Infotech
Hello John Smith from Infotech

L'esempio seguente fa uso di poche altre funzioni, vediamo:

program exString;
uses sysutils;
var
   str1, str2, str3 : ansistring;
   str4: string;
   len: integer;

begin
   str1 := 'Hello ';
   str2 := 'There!';
   
   (* copy str1 into str3 *)
   str3 := str1;
   writeln('appendstr( str3, str1) :  ', str3 );
   
   (* concatenates str1 and str2 *)
   appendstr( str1, str2);
   writeln( 'appendstr( str1, str2) ' , str1 );
   str4 := str1 + str2;
   writeln('Now str4 is: ', str4);
   
   (* total lenghth of str4 after concatenation  *)
   len := byte(str4[0]);
   writeln('Length of the final string str4: ', len); 
end.

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

appendstr( str3, str1) : Hello
appendstr( str1, str2) : Hello There!
Now str4 is: Hello There! There!
Length of the final string str4: 18

Funzioni e procedure in Pascal String

Pascal supporta un'ampia gamma di funzioni e procedure che manipolano le stringhe. Questi sottoprogrammi variano in base all'implementazione. Qui, stiamo elencando vari sottoprogrammi di manipolazione di stringhe forniti da Free Pascal -

Sr.No. Funzione e scopo
1

function AnsiCompareStr(const S1: ; const S2:):Integer;

Confronta due stringhe

2

function AnsiCompareText(const S1: ; const S2:):Integer;

Confronta due stringhe, senza distinzione tra maiuscole e minuscole

3

function AnsiExtractQuotedStr(var Src: PChar; Quote: Char):;

Rimuove le virgolette dalla stringa

4

function AnsiLastChar(const S:):PChar;

Ottiene l'ultimo carattere della stringa

5

function AnsiLowerCase(const s:):

Converte la stringa in tutto minuscolo

6

function AnsiQuotedStr(const S: ; Quote: Char):;

Cita una stringa

7

function AnsiStrComp(S1: PChar;S2: PChar):Integer;

Confronta le stringhe con distinzione tra maiuscole e minuscole

8

function AnsiStrIComp(S1: PChar; S2: PChar):Integer;

Confronta le stringhe senza distinzione tra maiuscole e minuscole

9

function AnsiStrLComp(S1: PChar; S2: PChar; MaxLen: Cardinal):Integer;

Confronta i caratteri L delle stringhe con distinzione tra maiuscole e minuscole

10

function AnsiStrLIComp(S1: PChar; S2: PChar; MaxLen: Cardinal):Integer;

Confronta i caratteri L delle stringhe senza distinzione tra maiuscole e minuscole

11

function AnsiStrLastChar(Str: PChar):PChar;

Ottiene l'ultimo carattere della stringa

12

function AnsiStrLower(Str: PChar):PChar;

Converte la stringa in tutto minuscolo

13

function AnsiStrUpper(Str: PChar):PChar;

Converte la stringa in tutte le maiuscole

14

function AnsiUpperCase(const s:):;

Converte la stringa in tutte le maiuscole

15

procedure AppendStr(var Dest: ; const S:);

Aggiunge 2 stringhe

16

procedure AssignStr(var P: PString; const S:);

Assegna il valore delle stringhe sull'heap

17

function CompareStr(const S1: ; const S2:):Integer; overload;

Confronta due stringhe con distinzione tra maiuscole e minuscole

18

function CompareText(const S1: ; const S2:):Integer;

Confronta due stringhe senza distinzione tra maiuscole e minuscole

19 procedure DisposeStr(S: PString); overload;

Rimuove la stringa dall'heap

20

procedure DisposeStr(S: PShortString); overload;

Rimuove la stringa dall'heap

21

function IsValidIdent( const Ident:):Boolean;

La stringa è un identificatore pascal valido

22

function LastDelimiter(const Delimiters: ; const S:):Integer;

Ultima occorrenza di carattere in una stringa

23

function LeftStr(const S: ; Count: Integer):;

Ottiene i primi N caratteri di una stringa

24

function LoadStr(Ident: Integer):;

Carica la stringa dalle risorse

25

function LowerCase(const s: ):; overload;

Converte la stringa in tutto minuscolo

26

function LowerCase(const V: variant ):; overload;

Converte la stringa in tutto minuscolo

27

function NewStr(const S:):PString; overload;

Alloca la nuova stringa sull'heap

28

function RightStr(const S: ; Count: Integer):;

Ottiene gli ultimi N caratteri di una stringa

29

function StrAlloc(Size: Cardinal):PChar;

Alloca la memoria per la stringa

30

function StrBufSize(Str: PChar):SizeUInt;

Riserva la memoria per una stringa

31

procedure StrDispose(Str: PChar);

Rimuove la stringa dall'heap

32

function StrPas(Str: PChar):;

Converte PChar in una stringa pascal

33

function StrPCopy(Dest: PChar; Source:):PChar;

Copia la stringa pascal

34

function StrPLCopy(Dest: PChar; Source: ; MaxLen: SizeUInt):PChar;

Copia N byte della stringa pascal

35

function UpperCase(const s:):;

Converte la stringa in tutte le maiuscole