Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Sabit Tanımlama
#1
Merhaba,
Bildiğiniz gibi Delphi/Object Pascal ile sabit tanımlamalar iki farklı yöntemle doğrudan yapılabilmektedir. Bunlar const ve resourcestring'dir.
String tipinde bir sabit tanımlamada Const & resourcestring direktiflerinden hangisi kullanılmalıdır? Neden?

Örneğin;
resourcestring
   strProjeAdıTR = 'Yeni Nesil Delphi Teknolojileri';
   strProjeAdıEn = 'New Generation Delphi Technologies';

const
   strProjeAdıTR: String = 'Yeni Nesil Delphi Teknolojileri';
   strProjeAdıEn: String = 'New Generation Delphi Technologies';

Tam bir sınav sorusu gibi. İlerleyen süreçte böyle bir soru bankası da oluştursak iyi olur.
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
#2
Bildiğim Kadarı ile,
const, Karakter başına 1 byte
resourcestring Karakter başına 2 byte alan kaplıyor,
eğer veriye sık sık ulaşman gerekecek ise resourcestring kullanmalıyız (uzun zaman önce okumuştum buna yönelik bir yazı önbelleğe alma mekanizması ile ilgili bazı farkları vardı consttan)
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#3
Merhaba,
Aslında bellekte kapladığı miktarı belirleyen direktif değil, sahip olduğu veri tipidir.
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
#4
Alıntı:In Delphi versions up to D2007, const strings were stored as Ansi strings, requiring a single byte per character, whereas resource strings would be stored in UTF-16: the windows default encoding (though perhaps not for Win9x). IIRC D2007 and prior versions didn't support UTF-8 encoded unit files. So any strings coded in your sources would have to be supported by the ANSI code pages, and as such probably didn't go beyond the Unicode Basic Multilingual Plane. Which means that only the UCS-2 part of UTF-16 would be used and all strings could be stored in two bytes per character.

In short: up to D2007 const strings take a single byte per character, resource strings take two bytes per character.

Böyle bir şey buldum.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#5
Kendisini yeni farkediyorum.
const ile farklı tipler tanımlanabiliyor. resourcestring ise sadece string veri tipi tanımlanıyor. Burada kolaylık ve hız sağlanmak istenmiş gibi. Hmm sanırım değişkeninize resources veri atama yaptığınızda atamıyor bellekteki adresine gidiyor.
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#6
(21-09-2016, Saat: 11:07)engerex Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Kendisini yeni farkediyorum.
const ile farklı tipler tanımlanabiliyor. resourcestring ise sadece string veri tipi tanımlanıyor. Burada kolaylık ve hız sağlanmak istenmiş gibi. Hmm sanırım değişkeninize resources veri atama yaptığınızda atamıyor bellekteki adresine gidiyor.

Yani hangisi daha hızlı?
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
#7
resourcestring hızlıdır. (Belki de ikiside aynı şekilde veriye erişiyor.)
Birde isminden resourcestring verinin derleme esnasında EXEnin resource kısmına atıldığı izlenimi veriyor.
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#8
Selam, alttaki yazıyı buldum konu ilgili,
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

benim anladığım; delphi tarafından bu kod oluşturulursa C++ ile buna erişebiliyorsunuz, ing. iyi olan bi arkadaş çevirirse daha iyi olur.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#9
Testlere göre const daha hızlı olduğu bildiriliyor.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Procedure CoffeeControl(Sender: TObject);
Var
  Coffee : TMycoffee;
Begin
  Coffee := TMyCoffee.create(Nil);
  Try
    if Coffee.EMpty then
      Coffe.refill(50);
    ELse
      Coffee.Drink
  Finally
      Coffee.Free;
  End;
End;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Unit içerisinde procedure/fonksiyon/sabit malitutuncu 2 455 29-03-2019, Saat: 18:09
Son Yorum: malitutuncu
  function ile fonksiyon tanımlama arsl01 3 650 08-07-2018, Saat: 12:11
Son Yorum: narkotik
  PageControl e sabit panel eklenebilirmi cinarbil 9 1.139 29-06-2018, Saat: 09:59
Son Yorum: cinarbil



Konuyu Okuyanlar: 1 Ziyaretçi