Delphide Veri Tipleri (Sabitler ve değişkenler)

Değişkenler içinde farklı türlerde veriler olabilir. Örneğin bazı değişkenlerde sayı saklamanız gerekirken metin saklamanız gerekebilir. Değişkenin tanımlarken o değişkende ne tür veri bulunduracağı-nızı belirlemeniz gerekir. Kullanabileceğiniz veri tipleri şunlardır:

Var

sayi, Toplam: Integer;

Toplam:Integer;

x,y,z: word;

Açıklama: String;

MedeniHali: Boolean;

Ondalık Sayı: real;

Tam Sayı Tipleri :

ShorInt : 1 baytlık işaretli tam sayı tipidir. ?128 ile 127 arasında değer alabilir.

SmallInt : 2 baytlık işaretli tam sayı veri tipidir. ?32768 ile 32767 arasında değer alabilir.

LongInt : 4 baytlık işaretli tam sayı tipidir.-2147483647 ile 2147483647 arasında değer alabilir.

Integer : Bu tip de LongInt gibidir. 4 baytlık işaretli tam sayı tipidir. ?2147483647 ile

2147483647arasında değer alabilir. (Delphi?nin 16 bitlik versiyonunda Integer tipi 16 bitlik,

Delphi?nin 32 bitlik versiyonlarında(2.0, 3.0+) ise bu tip 32 bitlik bir değer içerebilir.)

Byte : Bir baytlık işaretsiz tam sayı tipidir. 0 ile 255 arasında değer alabilir. (ShortInt tipinin

işaretsiz halidir.)

Word : 2 baytlık işaretsiz tam sayı tipidir. 0 ile 65535 arasında değer alabilir.

Cardinal : 4 baytlık işaretsiz tam sayı tipi. 0 ile 2147483647 arasında değer alabilir.

Int64 : Delphi 4 versiyonundan sonra birlikte 64 bitlik tam sayılar tanımlanabilmektedir. Bu yeni

tip Int64 olarak tanımlanır ve bu tür değişkenler ?9*10 ile 9*10 arası değerler alabilmektedir.

Ancak bu türden değişkenler bütün fonksiyonlar tarafından desteklenmez. Bu türü desteklemek

için 2 özel fonksiyon da (StrToInt64,StrToInt64Def) tanımlanmıştır.

LongWord : delphi 4 versiyonundan sonra Unsigned Long (işaretsiz tamsayı) tipi geliştirilmiştir.

LongWord olarak adlandırılan bu tip 0..4294967295 arası değerler alabilmektedir.

Var

A: Longword;

Variant : 16 bytelık bir değişken tipidir. Bu tipteki bir değişkene hem sayısal hem de string

ifadeler aktarılabilir.

Var

x: variant;

begin

x:=1233;

x:=?Delphi5?;

end;

Sınır Aşımı :

Veri tiplerine alabileceği değer sınırları dışında bir değer ataması direkt yapılamaz. Atama yapılmaya çalışıldığı durumlarda aşağıdaki hata mesajı ortaya çıkar.

?Constant expression violates subrange bounds?

Örneğin aşağıdaki kod çalışmaz.

procedure TForm1.FormCreate(Sender: TObject);

var

x: ShortInt;

begin

x:=220;

ShowMessage(IntToStr(x));

End;

X değişkenine atanmaya çalışılan 220 sayısı ShortInt sınırını aştığı için ?Constant expression violates subrange bounds? hata mesajı verilir.ancak aşağıdaki gibi bir atama yapılabilir.

procedure TForm1.FormCreate(Sender: TObject);

var

x,y,z: ShortInt;

begin

x:=100;

y:=120;

z:=x+y;

ShowMessage(IntToStr(z));

End;

Burada gördüğünüz gibi x+y işleminin sonucu da 220 çıkartmaktır. Direkt atama yapmaya

çalıştığımızda hata vermesine rağmen dolaylı olarak bir işlem sonucunda atama yaptığımızda hata vermemektedir. Ancak program da doğru çalışmayacaktır. Vermesini beklediğimiz sonuç 220 iken sonuç ?36 çıkar. Çünkü atanan değer tipin sınırları dışına çıkmıştır. Program kodlarında bu duruma dikkat etmezseniz bu örnekte olduğu gibi beklenmedik sonuçlar alırsınız.

Değişkenlerinizi tanımlarken bu sınırlara dikkat etmelisiniz. Aksi takdirde her şey doğru olduğu halde sonuçlar yanlış olabilir.

Reel Sayı Tipleri :

Single : 4 baytlık ondalık sayı tipidir.1.5*10 ile 3.4*10 arasında da değer alabilir. (7-8 haneli

rakamlar yani:y.yyyyyy*10)

Real48 : 6 baytlık ondalık sayı tipidir.2.9*10 ile 1.7*10 arasında da değer alabilir. (11-12 haneli

rakamlar)

Real ve Double : 8 baytlık ondalık sayı tipidir.5.0*10 ile 1.7*10 arasında da değer alabilir. (15-16

haneli rakamlar)

Delphi 4 versiyonuyla birlikte eski 48 bitlik real sayı tipi 64 bite çıkarılmış ve eski tip Real48 olarak adlandırılmıştır. Böylece Real tanımıyla Double tanımı arasında farklılık kalmamıştır.

Var

r1:Real;//64 bitlik yeni tip real say

r2:Real48;//eski tip real say

d:Double;//r1 ile aynı özelliklerde

Sanıldığının aksine 64 bitlik reel sayı tipi 48 bitlikten daha hızlıdır. Çünkü FPU?lar 64 bitlik reel sayı formatını desteklediği için işlemlerde tip dönüşümü gerektirmemektedir.

Extended : 10 baytlık ondalık sayı tipidir.3.4*10 ile 1.1*10 arasında da değer alabilir. (19-20 haneli rakamlar)

Comp : 8 baytlık ondalık sayı tipidir.-2 +1 ile 2 ?1 arasında da değer alabilir. (19-20haneli rakamlar)

Comp tipi sadece 2?nin katları olan sayıları tutabilen bir tiptir.

Curreny : 8 baytlık ?922337203685477.5808 ile 922337203685477.5808 aralığında işaretli bir

sayı tipidir.

Bu tip para içeren değişkenler için düşünülmüştür. Çünkü parasal işlemlerin virgülden sonraki kısmı o kadar önemli değildir. Asıl önemli olan virgülden önceki bütün basamakların korunmasıdır. Bu tipte virgülden önceki basamak sayısı çok, virgülden sonraki basamak sayısı azdır.

Boollean Tipi :

True ve False değerlerinden birini içerir. Hafızada 1 byte yer kaplar. Bir ifadenin doğru-yanlış

veya evet-hayır değerlerinden birini aldığı durumlarda kullanılır. Örneğin Kredi Alıyor, Evli Eşi Çalışıyor gibi değişkenlere Evet(True) veya hayır(False) cevapları verilebilir. Böyle değişkenleri boolean olarak tanımlanır.

Karakter Tipleri :

Char : Bir karakter içerebilen 1 bytelık veri tipidir. Bu tip değişkenler sadece bir karakter

barındırabilirler. Örneğin ?A?,?2?,?-?vb.

Ansichar : Char tipiyle aynıdır.

WideChar : Bu tip 2 bytelık bir karakter tipdir ve uzak doğu dillerinde kullanılır.

String Tipleri :

ShotString : 255 karaktere kadar karakter ataması yapılabilen veri tipidir. Bellekte karakter sayısı

Byte yer kaplar. Çünkü bu tipteki değişkenlerin en yüksek seviyeli byte?ı değişkenin

uzunluğu için kullanılır. Bir byte içinde 0 ?255 arası sayı tutabileceği için bu tipteki

verilere 255 karakterden fazla atama yapılamaz. Yapılan atamanın 255 karakteri

geçmesi sondakilerin kesilmesine neden olur.

AnsiString : Bu tipe 2GB?a kadar string yapılabilir.

String : AnsiString tipi ile aynıdır.

String değişkenlere değer ataması yaparken metin tek tırnak işaretleri arasına yazılmalıdır:

Var

ad: String;

begin

ad:=?turgay?;

end;

String değişkenler üzerinde + operatörü ile de birleştirme yapılabilir.

Var

ad,soyad: String;

begin

soyad:=?yüce?;

ad:=?turgay?+? ?+soyad;

end;

String ifadelere atama yaparken yazılamayacak karakterleri (örneğin enter tuşu ) ascii kodları ile belirtebilirsiniz. #karakterinden sonra ascii kodu yazılabilir. Örneğin Memo1 içine iki satır yazabilmek için:

Procedure TForm1.FormCreate(Sender: TObject);

Var

ad:String;
begin

ad:=?turgay?+#13#10+?yüce?;

//#13#10 alt satıra geçiren karakterlerdir

memo1.text:=ad://memo1 içinde iki satır olarak gözükecektir.

End;

String değişkenlerin içindeki karakter sayısını öğrenmek için Length fonksiyonundan faydalanabilirsiniz. Length(str1) gibi. Bu değişkenlerin boyutunu belirlemek içinde SetLength prosedüründen faydalanabilirisiniz. SetLength(str1,19) gibi.

String değişkenlerdeki bir harfe erişmek için [] işaretlerini kullanabilirsiniz. Örneğin stringdeki ilk harfi öğrenmek için str[1] şeklinde kullanabilirsiniz.

PChar :

Null terminated olarak adlandırılan bir string türüdür. Bu tür daha çok Windows Api?lerinde kullanılır. Bu türdeki stringlerin sonunda #0 karakteri bulunur. Bu karakter stringin bittiği noktayı belirler. Diğer string türleriyle Pchar arasında atamalar veya işlemler (birleştirme gibi) yapabilirsiniz.

Procedur Tform1.FormCreate(Sender: TObject);
var

ad:String;

soyad: Pchar;

Begin

ad:= ?Turgay?; soyad:= ?Yüce?;

showmessage(ad+soyad);

End;

Eğer String veya AnsiSting olarak tanımlanmış bir değişkeni Pchar türünden bir değişkene atamanız gerekirse Pchar tip dönüşümünü yapabilirsiniz. Örneğin MessageBox Windows PI?sindeki parametreler Pchar türündendir. Bu parametrelere String olarak tanımlanmış değişkenlere aktarmak istediğinizde aşağıdaki gibi kullanabilirsiniz.

Var str1,str2:string;

Begin

MessageBox(0, Pchar(Str1),Pchar(Str2), MB_OK);

End;

Alıntıdır.

One thought on “Delphide Veri Tipleri (Sabitler ve değişkenler)

Bir cevap yazın