Delphi ^ Синтаксис: документированный, подразумеваемый или недокументированный?

37

Позвольте мне объяснить на примере. В Delphi вы можете написать

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 и Ctrl + V. Фактически, тот же синтаксис работает для Ctrl + A, где A - любой символ, и, конечно же, вы можете использовать оператор case вместо if s. Вы даже можете сделать ShowMessage(^A), поэтому, по-видимому, ^A считается char.

Однако при просмотре официальной документации Delphi я не могу найти ссылку на этот синтаксис. Но, возможно, синтаксис ^A настолько распространен, что его понимают как часть базового формата текстового файла? Или это просто недокументированная функция языка программирования Delphi? (Обратите внимание на то, что вышеуказанные конструкции фактически используются в исходном коде RTL/VCL. Но, конечно же, Embarcadero и Embarcadero в одиночку, разрешается использовать недокументированные возможности, если таковой существует.)

  • 2
    любой может использовать недокументированные функции
  • 0
    @ Дэвид: ОК, я согласен, что проблема не так серьезна, как, например, в случае с Windows API.
Показать ещё 6 комментариев
Теги:
keyboard
syntax
character

2 ответа

27
Лучший ответ

Это уже давно, как escape-символ, чтобы вы могли иметь consts для управляющих символов более читаемым способом.

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

Это определяет константу Char со значением #3, а затем записывает 3 в Borland Pascal 7, и я помню, что видел это еще задолго до этого.

Я просто проверил руководства по языку Turbo Pascal 5.0 и Borland Pascal 7.0, но не смог найти его, поэтому он не документирован.

Edit: Я помню, что это была вещь Borland, и просто проверено: она не является частью стандарта ISO Pascal (ранее это был стандарт ANSI Pascal, спасибо Sertac за то, что заметили это).

Он , зарегистрированный в Бесплатная документация Паскаля.

SGI использует обратную косую черту как escape-символ, а за свои документы.

Больше Правка: Я нашел задокументированный в Delphi в двух словах и Сайт основы Delphi.

Нашел его: Просто нашел его на стр. 37 Справочное руководство по Turbo Pascal 3.

- Йерун

  • 1
    Нет никакого стандарта ANSI на языке паскаль с 1993 года, когда ANSI прекратил его действие от имени стандарта ISO. Что касается стандарта ISO, см. Мой комментарий к вопросу Андреаса.
  • 0
    Это отличный ответ! Спасибо!
Показать ещё 4 комментария
3

Это известная недокументированная функция. Но опять же, последняя официальная синтаксическая документация - от delphi 7.

  • 0
    Вы знаете, работает ли он в Deplhi 7?
  • 0
    Не могли бы вы описать это? Какой тип ^ A?
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню