Pascal - Dizeler

Pascal'daki dizge, aslında isteğe bağlı bir boyut belirtimine sahip bir karakter dizisidir. Karakterler sayısal, harfler, boş, özel karakterler veya hepsinin bir kombinasyonu olabilir. Extended Pascal, sisteme ve uygulamaya bağlı olarak çok sayıda dizi nesnesi sağlar. Programlarda kullanılan daha yaygın dizge türlerini tartışacağız.

Bir dizeyi birçok şekilde tanımlayabilirsiniz -

  • Character arrays - Bu, tek tırnak içine alınmış, sıfır veya daha fazla bayt boyutlu karakter dizisi olan bir karakter dizisidir.

  • String variables - Turbo Pascal'da tanımlandığı şekliyle String türünün değişkeni.

  • Short strings - Boyut spesifikasyonuna sahip Dize türü değişkeni.

  • Null terminated strings - değişkeni pchar yazın.

  • AnsiStrings - Ansistringler, uzunluk sınırı olmayan dizelerdir.

Pascal yalnızca bir dize operatörü, dize birleştirme operatörü (+) sağlar.

Örnekler

Aşağıdaki program ilk dört tür dizeyi yazdırır. Sonraki örnekte AnsiStrings kullanacağız.

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.

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

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

Aşağıdaki örnek birkaç işlevi daha kullanıyor, bakalım -

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.

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

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

Pascal String Fonksiyonları ve Prosedürleri

Pascal, dizeleri işleyen çok çeşitli işlevleri ve prosedürleri destekler. Bu alt programlar uygulama açısından farklılık gösterir. Burada, Free Pascal tarafından sağlanan çeşitli dizge işleme alt programları listeliyoruz -

Sr.No. İşlev ve Amaç
1

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

İki dizeyi karşılaştırır

2

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

İki dizeyi karşılaştırır, büyük / küçük harfe duyarlı değildir

3

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

Dizeden tırnakları kaldırır

4

function AnsiLastChar(const S:):PChar;

Dizenin son karakterini alır

5

function AnsiLowerCase(const s:):

Dizeyi tamamen küçük harfe dönüştürür

6

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

Bir dizeden alıntılar

7

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

Dizeleri büyük / küçük harfe duyarlı olarak karşılaştırır

8

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

Büyük / küçük harf duyarlı dizeleri karşılaştırır

9

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

Büyük / küçük harfe duyarlı dizelerin L karakterlerini karşılaştırır

10

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

Büyük / küçük harf duyarlı dizelerin L karakterlerini karşılaştırır

11

function AnsiStrLastChar(Str: PChar):PChar;

Dizenin son karakterini alır

12

function AnsiStrLower(Str: PChar):PChar;

Dizeyi tamamen küçük harfe dönüştürür

13

function AnsiStrUpper(Str: PChar):PChar;

Dizeyi tamamen büyük harfe dönüştürür

14

function AnsiUpperCase(const s:):;

Dizeyi tamamen büyük harfe dönüştürür

15

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

2 dize ekler

16

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

Yığın üzerindeki dizelerin değerini atar

17

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

İki dizeyi büyük / küçük harfe duyarlı olarak karşılaştırır

18

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

Büyük / küçük harfe duyarlı olmayan iki dizeyi karşılaştırır

19 procedure DisposeStr(S: PString); overload;

Dizeyi yığından kaldırır

20

procedure DisposeStr(S: PShortString); overload;

Dizeyi yığından kaldırır

21

function IsValidIdent( const Ident:):Boolean;

Dize geçerli bir pascal tanımlayıcı mı

22

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

Bir dizedeki son karakter oluşumu

23

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

Bir dizenin ilk N karakterini alır

24

function LoadStr(Ident: Integer):;

Kaynaklardan dizeyi yükler

25

function LowerCase(const s: ):; overload;

Dizeyi tamamen küçük harfe dönüştürür

26

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

Dizeyi tamamen küçük harfe dönüştürür

27

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

Yığın üzerine yeni dizge ayırır

28

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

Bir dizenin son N karakterini alır

29

function StrAlloc(Size: Cardinal):PChar;

Dize için bellek ayırır

30

function StrBufSize(Str: PChar):SizeUInt;

Bir dizge için bellek ayırır

31

procedure StrDispose(Str: PChar);

Dizeyi yığından kaldırır

32

function StrPas(Str: PChar):;

PChar'ı pascal dizeye dönüştürür

33

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

Pascal dizesini kopyalar

34

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

Pascal dizesinin N baytını kopyalar

35

function UpperCase(const s:):;

Dizeyi tamamen büyük harfe dönüştürür