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.
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)
WWW
Cevapla
#3
Merhaba,
Aslında bellekte kapladığı miktarı belirleyen direktif değil, sahip olduğu veri tipidir.
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.
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ı: 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ı?
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,
http://docwiki.embarcadero.com/RADStudio...ce_Strings

benim anladığım; delphi tarafından bu kod oluşturulursa C++ ile buna erişebiliyorsunuz, ing. iyi olan bi arkadaş çevirirse daha iyi olur.
WWW
Cevapla
#9
Testlere göre const daha hızlı olduğu bildiriliyor.
http://stackoverflow.com/questions/53495...g-literals
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
  Class Tanımlama ve Kullanma-Not Found Hatası nehirnnn 2 739 08-12-2021, Saat: 12:31
Son Yorum: mrmarman
  Delphi Yeni Sürümlerde Fonksiyon Tanımlama Hayati 4 3.171 30-09-2019, Saat: 10:05
Son Yorum: TescilsizUzman
  Unit içerisinde procedure/fonksiyon/sabit malitutuncu 2 2.517 29-03-2019, Saat: 18:09
Son Yorum: malitutuncu
  function ile fonksiyon tanımlama arsl01 3 2.869 08-07-2018, Saat: 12:11
Son Yorum: narkotik
  PageControl e sabit panel eklenebilirmi cinarbil 9 5.950 29-06-2018, Saat: 09:59
Son Yorum: cinarbil



Konuyu Okuyanlar: 1 Ziyaretçi