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 |