Konuyu Paylaş : facebook gplus twitter

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 Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
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 Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
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 Giriş yap veya Üye OlKendisini 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 Giriş yap veya Üye Ol

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 Giriş yap veya Üye Ol
WWW
Cevapla
#9
Testlere göre const daha hızlı olduğu bildiriliyor.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
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

Konuyu Paylaş : facebook gplus twitter





Konuyu Okuyanlar: 1 Ziyaretçi