Delphi

2013-04-02 36 views
20
yılında "Yerel" direktifi

Ben SysUtils.pas bu hat boyunca oturup bazı kod hata ayıklama ve ben tökezledi edildi:Delphi

procedure ConvertError(ResString: PResStringRec); local; 

yerel anahtar kelime tam olarak ne yapar? ConvertError işlevinin dosyanın arabirim bölümünde bildirilmediği görülüyor, bu yalnızca işlevin gerçekten yerel olduğuna dair bir açıklama mı, yoksa bu yönergenin ötesinde bir pratik faydası var mı?

+3

yönerge arayüzünde hiçbir beyanı (bir derleme zamanı hatası aksi neden olur) bulunmasını garanti etmektedir, gibi görünüyor. İlginç ... –

+0

Bu anahtar kelimenin belgelerini okumayı denediniz mi? – wRAR

+2

@wRAR Üzerinde f1'i vurdum ama yerleşik belgeler bunu bulamadı. Daha sonra Google’ı kontrol ettim ve hiçbir şey yapmadım ve işte buradayız;) – kling

cevap

16

Bu, Linux derleyicisine, Kylix'e kadar uzanır. İşte benim Delphi 6 dil kılavuzunda sayfa 9-4 görebilirsiniz budur:

direktifini yerel, ihracat için kullanılamaz olarak rutinleri işaretler, platforma özel olduğunu ve Windows programlamada etkisi yoktur.

Linux'ta, yerel yönergesi, kitaplık içinde derlenen ancak dışa aktarılmayan rutinler için küçük bir performans optimizasyonu sağlar. Direktif, bağımsız prosedürler ve işlevler için belirlenebilir, ancak yöntemler için geçerli değildir. Örneğin bir rutin, yerel ile bildirilmiştir.

function Contraband(I: Integer): Integer; local; 

-Hiç EBX kayıt yenilemez ve dolayısıyla

  • bir kütüphaneden ihraç edilemez.
  • Birimin Arabirim Arabirim bölümünde bildirilemez.
  • adresinin prosedürel tip değişkenine atanmış veya atanmış olamaz.
  • Bu, salt bir assembler yordamıysa, arayan EBX'i ayarlamadıkça başka bir birimden çağrı yapılamaz.
+0

Mükemmel, tam olarak aradığım şey! Teşekkürler! – kling

+2

Yerel yönerge hakkında embarcadero belgelerine bir [link] (http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/EN/html/devcommon/dynamicallyloadedlibs_xml.html) adresi verilmiştir. – RRUZ

+0

@RRUZ Ayrıca, cevabımdaki metni yazarak da buldum! Yine de Delphi 2007. Eski okul. –