Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.08.2013, 15:18
CMka CMka вне форума
Прохожий
 
Регистрация: 18.08.2013
Сообщения: 3
Версия Delphi: 7
Репутация: 10
По умолчанию непонятная конструкция ^L: в списке case

Это код юнита Printers
я пользуюсь частным парсером и он мне выдает ошибку на ^L:
я не понимаю, что означает эта конструкция?

Код:
{ Print a string to the printer handling special characters. }
procedure PrnString(var Prn: PrnRec; Text: PChar; Len: Integer);
var
  L: Integer;
  TabWidth: Word;

  procedure Flush;
  begin
    if L <> 0 then PrnOutStr(Prn, Text, L);
    Inc(Text, L + 1);
    Dec(Len, L + 1);
    L := 0;
  end;

  function AvgCharWidth: Word;
  var
    Metrics: TTextMetric;
  begin
    GetTextMetrics(FPrinter.Canvas.Handle, Metrics);
    Result := Metrics.tmAveCharWidth;
  end;

begin
  L := 0;
  with Prn do
  begin
    while L < Len do
    begin
      case Text[L] of
        #9:
          begin
            Flush;
            TabWidth := AvgCharWidth * 8;
            Inc(Cur.X, TabWidth - ((Cur.X + TabWidth + 1)
              mod TabWidth) + 1);
            if Cur.X > Finish.X then NewLine(Prn);
          end;
        #13: Flush;
        #10:
          begin
            Flush;
            NewLine(Prn);
          end;
        ^L:
          begin
            Flush;
            NewPage(Prn);
          end;
      else
        Inc(L);
      end;
    end;
  end;
  Flush;
end;
Ответить с цитированием
  #2  
Старый 18.08.2013, 16:44
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

^L == #12 == Chr(12)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
CMka (18.08.2013)
  #3  
Старый 18.08.2013, 18:33
CMka CMka вне форума
Прохожий
 
Регистрация: 18.08.2013
Сообщения: 3
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
^L == #12 == Chr(12)
Но как вы получили этот ответ. И что означает выражение ^L ?
Я попытался найти ответ в http://docwiki.embarcadero.com/RADSt...s_%28Delphi%29. но без толку.

Последний раз редактировалось CMka, 18.08.2013 в 18:37.
Ответить с цитированием
  #4  
Старый 18.08.2013, 18:48
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

обработчик события OnKeyPress формы:
Код:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  ShowMessage(IntToStr(Ord(Key)));
end;
надо запустить и нажать Ctrl+L.

либо через Evaluate (F7) в режиме отладки выделить ^L и посмотреть.

означает символ с кодом 12.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо NumLock за это полезное сообщение:
CMka (18.08.2013), Speech (26.08.2013)
  #5  
Старый 18.08.2013, 19:30
CMka CMka вне форума
Прохожий
 
Регистрация: 18.08.2013
Сообщения: 3
Версия Delphi: 7
Репутация: 10
По умолчанию

Оказывается, это альтернативный способ написания контрольных символов ascii.
http://blog.excastle.com/2007/09/05/...racter-syntax/
http://en.wikipedia.org/wiki/Control_characters
http://en.wikipedia.org/wiki/C0_and_C1_control_codes
Век живи -век учись.

Последний раз редактировалось CMka, 18.08.2013 в 19:35.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:51.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter