2011-02-06 12 views
38

Bir örnekle açıklamama izin verin. Delphi, senDelphi^Bir sözdizimi: Belgelenmiş, zımni veya belgesiz?

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); 
begin 
    if Key = ^C then 
    ShowMessage('The user wants to copy something.') 
    else if Key = ^V then 
    ShowMessage('The user wants to paste.') 
end; 

Ctrl + C ve Ctrl + V klavye komutlarını kontrol etmek yazabilir. Aslında, Ctrl + A için aynı sözdizimi çalışır, burada A karakteridir ve tabiki - if s yerine case deyimini de kullanabilirsiniz. ShowMessage(^A)'u bile yapabilirsiniz, bu nedenle, ^A, char olarak kabul edilir. Ancak, the official Delphi documentation gözatırken bu sözdizimine herhangi bir başvuru bulamıyorum. Fakat belki de ^A sözdizimi o kadar yaygındır ki, temel düz metin dosya formatının bir parçası olarak anlaşılmaktadır? Yoksa sadece Delphi programlama dilinin belgesiz bir özelliği mi? (Yukarıdaki yapıların aslında RTL/VCL kaynak kodunda kullanıldığına dikkat edin. Ancak, tabi ki, Embarcadero ve Embarcadero tek başına, varsa, belgesiz özelliklerin kullanılmasına izin verilir.)

+2

kimse belgesiz özellikleri –

+0

@ David kullanabilirsiniz. –

+6

Bazıları, hata içgörüsü hoşuna gitmiyor, '^ [' (Esc), '^ @' (NUL) gibi .. –

cevap

28

Bu, kontrol karakterleri için daha kolay okunabilir bir şekilde sahip olmalarını sağlamak için çok uzun zaman önce bir çıkış karakteridir.

const 
    CtrlC = ^C; 
begin 
    Write(Ord(CtrlC)); 
end. 

Bu değere #3 ile Char sabit tanımlar, ardından Borland Pascal 7 3 yazar ve ben de bundan önce o yıllar gördüğümü hatırlıyorum.

Turbo Pascal 5.0 ve Borland Pascal 7.0 dil kılavuzlarını kontrol ettim, ancak bulamadım, bu yüzden belgesiz görünüyor.

Düzenleme: Bunun Borland şeydi hatırlıyorum ve sadece checked: ISO Pascal standart bir parçası değildir (eski bu ANSI Pascal Standardı, teşekkür Sertaç bu fark içindi). Free Pascal documentation numaralı belgede belgelenenbelgelenmiştir.

SGI, ters eğik çizgiyi çıkış karakteri olarak per their docs olarak kullanır.

Daha fazla Düzenle:documented in Delphi in a Nutshell ve Delphi Basics site.

Bulunan: Sadece Turbo Pascal 3 Reference Manual sayfa 37'de bulabilirsiniz. Tamam, örneğin sorun Windows API olduğu gibi yaklaşık olarak kötü olduğu konusunda hemfikir:

--jeroen

+1

ANSI, ISO standardı adına sonlandırdığında 1993'ten beri pascal dilinde ANSI standardı yoktur. ISO standardıyla ilgili olarak yorumumu Andreas'ın sorusuna bakın. –

+0

Bu harika bir cevap! Teşekkürler! –

+0

Afaik gibi şeylerle birlikte, birkaç yıl önce bu özelliği (Delphi) derleyici basitleştirilmesi bahsediyor oradayken (..) FPC belge bağlantısını sağlayan örnekler –

3

Bu, bilinmeyen bir belgedir. özellik. Ancak, daha sonra, en son resmi sözdizimi belgeleri delphi 7'den alınmıştır.

+0

Deplhi 7'de çalışıp çalışmadığını biliyor musunuz? –

+0

bunu tarif edebilir miydiniz?^A türü nedir? –

+0

@David - Araç İpucu sth. içgörü, # 1 olarak gösterir. –