Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Bir Record'un içini doldurma (+20 puan)
#11
(02-10-2017, Saat: 16:55)Bahadir.Alkac Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBir seçenek de benden gelsin.

PInteger(@T)^ := $96969696;

İyi çalışmalar

Evet bu çözüm benim de kullandığım çözümdür. Ellerinize sağlık.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#12
Hocam tek bir hamlede bir atama (:=) yaparak, Alan1..Alan4 değerlerini 150 olmasını sağladım.
const
 DefaultValue: TTest = (Alan1: 150; Alan2: 150; Alan3: 150; Alan4: 150);
var
 Test: TTest;
begin
  Test := DefaultValue;
  Test.Show;
end;
My name is nobody.
WWW
Cevapla
#13
(02-10-2017, Saat: 17:25)ismailkocacan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlHocam tek bir hamlede bir atama (:=) yaparak, Alan1..Alan4 değerlerini 150 olmasını sağladım.
const
 DefaultValue: TTest = (Alan1: 150; Alan2: 150; Alan3: 150; Alan4: 150);
var
 Test: TTest;
begin
  Test := DefaultValue;
  Test.Show;
end;

Big Grin
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#14
(02-10-2017, Saat: 17:25)ismailkocacan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlHocam tek bir hamlede bir atama (:=) yaparak, Alan1..Alan4 değerlerini 150 olmasını sağladım.
const
 DefaultValue: TTest = (Alan1: 150; Alan2: 150; Alan3: 150; Alan4: 150);
var
 Test: TTest;
begin
  Test := DefaultValue;
  Test.Show;
end;

Bu da bir yöntemdir. Farklı bakış açısı, bizim de bakış açımıza renk katıyor. Eminim bu yöntemi kullanan kişi sayısı da azımsanmayacak kadar çoktur. Zaman ayırdığınız için teşekkür ederim.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#15
(02-10-2017, Saat: 16:55)Bahadir.Alkac Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBir seçenek de benden gelsin.

PInteger(@T)^ := $96969696;

İyi çalışmalar

Hocam burada tam olarak neler oldu ?
Cevapla
#16
Merhaba,

Burada T değişkeninin TTest tipinde bir record olduğunu biliyoruz. TTest tipindeki record'un şöyle güzel bir tarafı var: Record içinde 4 tane Byte var. 4 byte = 1 Integer (32 bit). (Küçük hatırlatma: Aslında bu kodu yazmadan önce derleyici ayarlarından Record Alignment seçeneğini de kontrol etmek gerekiyor. Ya da packed record tanımlamak daha iyi olurdu.)

Kodun yaptığı şey de basit: 

1. T'nin adresini alıyor: @T
2. Onu Integer işaretçisine cast ediyor : PInteger(@T)
3. Integer işaretçisinin gösterdiği yere değer atıyor: (PInteger(@T)^ := $96969696 (Hem HEX formatında atama yaptım, bu gibi durumlarda okuması daha kolay)

İyi çalışmalar
Cevapla
#17
(03-10-2017, Saat: 09:13)Bahadir.Alkac Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

Burada T değişkeninin TTest tipinde bir record olduğunu biliyoruz. TTest tipindeki record'un şöyle güzel bir tarafı var: Record içinde 4 tane Byte var. 4 byte = 1 Integer (32 bit). (Küçük hatırlatma: Aslında bu kodu yazmadan önce derleyici ayarlarından Record Alignment seçeneğini de kontrol etmek gerekiyor. Ya da packed record tanımlamak daha iyi olurdu.)

Kodun yaptığı şey de basit: 

1. T'nin adresini alıyor: @T
2. Onu Integer işaretçisine cast ediyor : PInteger(@T)
3. Integer işaretçisinin gösterdiği yere değer atıyor: (PInteger(@T)^ := $96969696 (Hem HEX formatında atama yaptım, bu gibi durumlarda okuması daha kolay)

İyi çalışmalar

Merhaba ,
açıklama için teşekkürler aslında anlattığınız kısıma kadar sorun yok anladım da  Smile  recordun işaret ettiği hafıza adresine hex olarak atadığınız değerin recordun elemanlarına aynı etkiyi nasıl yarattığını anlamadım sizi yormayacaksa daha matematiksel bir açıklama yapabilir misiniz?

Tam olarak yukarıdaki soruyu yazdım tam gönder diyecektim kendi kendime anladım , hex olarak 96 = 150, ancak burada yan yana 4 adet 150 yi HEX olarak verip hafıza da blok olarak tek seferde atama yapıldığını anlamış oldum teşekkürler.
Cevapla
#18
(03-10-2017, Saat: 12:02)vkamadan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(03-10-2017, Saat: 09:13)Bahadir.Alkac Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

Burada T değişkeninin TTest tipinde bir record olduğunu biliyoruz. TTest tipindeki record'un şöyle güzel bir tarafı var: Record içinde 4 tane Byte var. 4 byte = 1 Integer (32 bit). (Küçük hatırlatma: Aslında bu kodu yazmadan önce derleyici ayarlarından Record Alignment seçeneğini de kontrol etmek gerekiyor. Ya da packed record tanımlamak daha iyi olurdu.)

Kodun yaptığı şey de basit: 

1. T'nin adresini alıyor: @T
2. Onu Integer işaretçisine cast ediyor : PInteger(@T)
3. Integer işaretçisinin gösterdiği yere değer atıyor: (PInteger(@T)^ := $96969696 (Hem HEX formatında atama yaptım, bu gibi durumlarda okuması daha kolay)

İyi çalışmalar

Merhaba ,
açıklama için teşekkürler aslında anlattığınız kısıma kadar sorun yok anladım da  Smile  recordun işaret ettiği hafıza adresine hex olarak atadığınız değerin recordun elemanlarına aynı etkiyi nasıl yarattığını anlamadım sizi yormayacaksa daha matematiksel bir açıklama yapabilir misiniz?

Tam olarak yukarıdaki soruyu yazdım tam gönder diyecektim kendi kendime anladım , hex olarak 96 = 150, ancak burada yan yana 4 adet 150 yi HEX olarak verip hafıza da blok olarak tek seferde atama yapıldığını anlamış oldum teşekkürler.

Üstadım sizin Low Level bölümüne erişim hakkınız mevcut. Low Level bölümü altındaki Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol başlıklı makaleyi inceleyebilirseniz faydalı olacağını ümit ediyorum. Wink
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#19
(03-10-2017, Saat: 12:47)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(03-10-2017, Saat: 12:02)vkamadan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba ,
açıklama için teşekkürler aslında anlattığınız kısıma kadar sorun yok anladım da  Smile  recordun işaret ettiği hafıza adresine hex olarak atadığınız değerin recordun elemanlarına aynı etkiyi nasıl yarattığını anlamadım sizi yormayacaksa daha matematiksel bir açıklama yapabilir misiniz?

Tam olarak yukarıdaki soruyu yazdım tam gönder diyecektim kendi kendime anladım , hex olarak 96 = 150, ancak burada yan yana 4 adet 150 yi HEX olarak verip hafıza da blok olarak tek seferde atama yapıldığını anlamış oldum teşekkürler.

Üstadım sizin Low Level bölümüne erişim hakkınız mevcut. Low Level bölümü altındaki Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol başlıklı makaleyi inceleyebilirseniz faydalı olacağını ümit ediyorum. Wink
Tamamdır Tuğrul abi mutlaka çok faydalı olacaktır okuyacağım.
İyi çalışmalar.  Smile
Cevapla
#20
(02-10-2017, Saat: 17:34)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(02-10-2017, Saat: 17:25)ismailkocacan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlHocam tek bir hamlede bir atama (:=) yaparak, Alan1..Alan4 değerlerini 150 olmasını sağladım.
const
 DefaultValue: TTest = (Alan1: 150; Alan2: 150; Alan3: 150; Alan4: 150);
var
 Test: TTest;
begin
  Test := DefaultValue;
  Test.Show;
end;

Bu da bir yöntemdir. Farklı bakış açısı, bizim de bakış açımıza renk katıyor. Eminim bu yöntemi kullanan kişi sayısı da azımsanmayacak kadar çoktur. Zaman ayırdığınız için teşekkür ederim.
Evet hocam bahsettiğiniz gibi record'un alanları farklı tipler de içeriyorsa belki daha kullanışlı olabilir
Fakat kullanışlı olması mı ? Performanslı çalışması mı ? Anlaşılabilir olması mı ? Anlaşılıp anlaşılmaması mı ? Kime neye göre ? gibi sorular kaptanın seyir defterini değiştirebilir.  Smile
My name is nobody.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Tek dizi içinde öncelik sırası belirleme (+10 puan) Abdullah ILGAZ 4 780 29-11-2017, Saat: 12:07
Son Yorum: SimaWB
  AV (Access Violation) nedir, neden bu hatayı alırız ? (+50 Puan) Tuğrul HELVACI 18 1.967 30-09-2017, Saat: 12:14
Son Yorum: ismailkocacan
  Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) Tuğrul HELVACI 21 1.915 08-09-2017, Saat: 13:55
Son Yorum: ismailkocacan



Konuyu Okuyanlar: 1 Ziyaretçi