Pointer kullanımı hakkında bir soru

Başlatan bunalmis, 06 Ocak 2010, 05:49:59

z

Pointer içeriğini artırmadan pointerin gösterdiği adresin 1 yada 2 sonraki adresdeki veriyi öğrenmek mümkünmüdür?

Şu anda bunu beceremediğim için

     dat1=p^;  inc (p);
      dat2=p^;  inc (p);
      dat3=p^;  
      dec(p,2)


Şeklinde kullanıyorum.

Halbuki istediğim aşağıdaki gibi

     dat1=p^;  
      dat2=p+1^;
      dat3=p+2^;  


Derleyici point edilen verinin uzunluğu bildiği halde kabul etmiyor ve kızıyor.

Çözümü nasıl olacak?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sekoli

Selamlar,

dat1 := p^;
dat2 := (p+1)^;
dat3 := (p+2)^;


şeklinde deneyiniz.

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sekoli

Değişken tiplerinizi de yazarsanız, yardımcı olmaya çalışayım. Ben p 'yi PChar, dat 'ı da Char olarak tanımlamıştım ve bir sorun olmamıştı.

z

pchar olarak bir alanı allocate ediyor ve içine dosya atıyorum.
Daha sonra P yi byte olarak tanımlayıp alan içinde geziniyorum.

Verilerin nümerik değerlerini öğrenmek için byte(P^) kullanmamak için P yi char değil de byte tanımladım.

Forumda yazdığım gibi değilde aşağıdaki gibi kullanıyorum.

     if p^=$10 then
         begin

         end;

      if (p+1)^=$10 then // Bu hata veriyor
         begin

         end;
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sekoli

Üstad şöyle yapabilirsiniz:

var a : PChar;
begin
  a := 'deneme';

  if Ord(a^) = $10 then ...
  if Ord((a+1)^) = $10 then...
  .
  .
end;

leblebitozu

En kolayı aynı yere point eden ikinci bir pointer tanımlayıp onun değerini arttırmak olacaktır.