Pointer Lar

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
aveysel
Üye
Mesajlar: 151
Kayıt: 16 Mar 2004 03:53
Konum: Internet
İletişim:

Pointer Lar

Mesaj gönderen aveysel »

Arkadaşlar şimdi soracağım şey bir sorun değil. Kitabın birisinde pointerları gördüm öğrenmeye çalışıyorum. Beni bilgilendirirseniz sevinirim. Yaznlışım olabilir, lütfen düzeltin...

var
s:string;
p:pchar;
begin
s:=edit1.Text+#0;
p:=@s[1];
edit2.Text:=p;
end;
---
Yukarıda s değişkenine edit1i aktarıyoruz sonra s değişkeninin birinci karekterinin adresindeki bilgiyi p ye aktarıyor. sonra edit2 yi p yapıyor.

Edit1 de merhaba yazdığını farzedersek

Şimdi benim anlamadığım burada edit2 nin text i Merhaba oluyor halbuki yukarıda söylediğim gibiyse eğer sadece "M" olması gerekmiyormuydu?

edit2.Text:=p^; yaptığımda sadece M çıkıyor, Bunu bana birisi izah edebilir mi?

Şimdiden Çok Teşekkür ederim...
Select * From LiFe Where Your EYES
http://Www.Gebze.Org
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

delphide stringler de dinamik bir dizidir aslında
p dedigin sadece adres bilgisini tutan null terminate string
edit2'nin text ine atarken tip uyusmazlıgı hatası vermesi lazım PChar ve String uyusmuyor diye,ilginc
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Mesaj gönderen m_ekici »

Kod: Tümünü seç

p=@s[1] 
p'ye s değişkeninin 1. değerinin saklandığı hafıza adresi aktarır. ($953EB0 gibi)

Kod: Tümünü seç

edit2.Text:=p^;

(p de saklı olan $953EB0 adresinde ne varsa [m] onu gösterir)
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

p:=@s[1];

p pointırı s[1] in işaret ettiği hafıza adresini gösteriyor.
yani s[1] ile p hafızadaki aynı yere bakıyorlar veya işaret ediyorlar.

edit2.Text:=p;

p pchar türünden bir değişken olduğu için ve pchar lar #0 karakteriyle sonlandığı için p değişkeninin değeri s değişkeniyle aynı olur.

hafızadaki değer --> deneme#0
s[1] --> d
p --> d
showmessage(d) --> deneme

pchar ve stringlerle işlem yaparken tip çevrimlerine dikkat etmelisiniz.
Pchar(StringDeğişken) , String(PcharDeğişken) fonksiyonlarını kullanabilirsiniz.
Cevapla