Delphi перенос строки в коде

Так что если Вы хотите сделать текст (Caption) элемента TLabel в две строки, то это можно сделать следующим образом:
Label1.Caption := ‘Первая строка’ + #13#10 + ‘Вторая строка’;

Комбинация "#13#10" — это комбинация возврата каретки и символа новой строки. "#13" — это ASCII-эквивалент значения CR (carriage return — возврат каретки) ; "#10" представляет собой LF (line feed — признак новой строки) .

Можно ли указать перенос строки при парсинге? Пробовал писать в одну строку, также пробовал #10+#13, но безуспешно. Если можно выполнить этот перенос, то подскажите как, вот строки в которых надо указать перенос:

2 ответа 2

Для Delphi порпобуйте chr(13)+chr(10)

За пробелы, переносы, табуляции и т.д отвечает: s* — звёздочка означает что их может не быть или быть сколько угодно.

Я не знаю диалекта Delphi, но если там используются regex типа PCRE, то этот код Вам должен помочь.

Блог о информационных технологиях и не только

вторник, 23 марта 2010 г.

Стилевое оформление исходного кода в Delphi

Естественно переход с собственного стиля оформления на предлагаемый может оказаться непростым, но рано или поздно это надо делать. Есть утилита которая может посодействовать более комфортабельно перейти на этот стандарт. Называется она "delforexp" (Доступна для Delphi 2/3/4/5/6/7/9/2007). В среде Delphi 2010 есть уже встроенный свой инструмент форматирования исходного кода.

Кстати в компании Borland, на Web-сайте компании Borland, на CD, DVD купленных у компании Borland, везде где есть исходный код, стандарт форматирования является законом.

Данный документ не является попыткой определить грамматику языка Object Pascal. В нем приводятся базовые примеры как можно поступить при оформлении исходного кода.

Файлы исходного кода (Наверх) Исходный код Object Pascal подразделяется на модули и файлы проекта, которые подчиняются одинаковым соглашениям. Файл проекта Delphi имеет расширение dpr. Этот файл является главным исходным файлом для всего проекта. Любые модули, используемые в проекте, всегда будут иметь расширение pas. Дополнительные файлы, используемые в проекте могут играть важную роль, но эта глава описывает форматирование только pas и dpr файлов. Более подробно о расширениях файлов можно прочитать в статье: Описание типов файлов в среде Delphi.

Именование файлов (Наверх)
Язык Object Pascal поддерживает длинные имена файлов. Если при создании имени файла Вы используете несколько слов, то необходимо использовать заглавную букву для каждого слова в имени, например: MyFirstProjectName.pas. Такой стиль оформления известен как InfixCaps или CamelCaps. Расширения файлов должны быть в нижнем регистре.

Все файлы модулей которые созданы в какой либо организации, например: ХХХ должны иметь префикс ХХХ

Организация исходных файлов (Наверх)
Все модули Object Pascal могут содержать следующие элементы в определенном порядке:

  • Информация о правах (Copyright/ID);
  • Имя модуля (Unit Name);
  • Секцию интерфейса (Interface section);
  • Подключаемые модули
  • Объявление классов и интерфейсов
    • Дополнительные определения (Additional defines);
    • Реализаця (Implementation)
      • Объявление используемых модулей и директив (Uses clause);
      • Исходный код;
      • Закрывающий оператор и точку (end.) (A closing end and a period).
      • Читайте также:  Как перекинуть файлы через сетевой кабель

        Для визуального разделения элементов между ними должна быть хотя бы одна пустая строка.

        При создании нового проекта – среда разработки генерирует исходный код, пример которго приведен ниже:

        interface
        uses
        Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
        Dialogs;

        Нужно заметить что ключевые слова пушиться в нижнем регистре.
        Рассмотрим каждые элемент в отдельности:

        • Назначение модуля;
        • Копирайт;
        • Разработчик;
        • Дата последней модификации для исполняемой версии

        Он должен выглядеть примерно следующим образом:

        Имя модуля (Наверх)
        Оно начинается с ключевого слова unit. Имя модуля может содержать символы как в верхнем, так и в нижнем регистре. Например: unit XXXModule1; В результате этот модуль будет назван XXXModule1.pas при сохранении.

        Секция интерфейса (Наверх)
        Она состоит из определения подключаемых модулей, описания типов, констант, массивов, переменных:

        Подключаемые модули(Наверх)
        Внутри модуля объявление используемых модулей должно начинаться со слова uses (в нижнем регистре). Затем следуют наименования модулей с сохранением регистра символов.
        Каждый используемый модуль должен отделяться от следующего с помощью запятой. Объявление используемых модулей должно заканчиваться точкой с запятой. Список используемых модулей необходимо располагать на следующей строке после слова uses. Если используются модули из разных проектов или производителей, то необходимо сгруппировать модули по проектам или производителям и каждую новую группу начинать с новой строки и прокомментировать каждую группу:

        uses
        Windows, SysUtils, >// модули Delphi
        XХХMyUnit1, ХХXMyUnit2; // модули ХХХ

        Если список используемых модулей не умещается по ширине в 80 символов (в редакторе кода есть вертикальная полоса, которая показівает границу в 80 символов), то его необходимо перенести на следующую строку.

        Объявление классов, типов и интерфейсов (Наверх)
        Для разделения слов нельзя использовать символ подчеркивания. Имя класса должно быть именем существительным или фразой с именем существительным. Имена интерфейсов или классов должны отражать главную цель их создания:

        ManageLayout //глагол
        delphi_is_new_to_me //подчерк

        Объявление класса и типов начинается с двух пробелов, затем идет идентификатор класса(его имя) с префиксом Т.

        Следом за идентификатором класса идет пробел, знак равенства, пробел и слово class в нижнем регистре:

        TMy > Если необходимо определить родителя класса, то следует добавить открывающую скобку, имя класса — родителя и закрывающую скобку:

        TMy > Объявления областей видимости начинаются с двух пробелов и, следовательно, области видимости распологаются на одном уровне с идентификатором класса:

        TMy > private
        FMyData: Integer;
        function GetData: Integer;
        procedure SetData(Value: Integer);
        public
        published
        property MyData: Integer read GetData write SetData;
        end;

        Оформление объявлений интерфейсов подчиняется тем же правилам, что и оформление классов. Отличие будет в использовании ключевых слов специфичных для интерфейсов

        Ключевое слово type размещается без отступов, перечисление типов начинается с новой строки:

        uses
        Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
        Dialogs;

        Реализаця (Implementation) (Наверх)
        Может содержать объявление подключенных модулей, дополнительные наборы директив компилятора, исходный код в виде процедур и функция. Например:

        Закрывающий оператор и точку (end.) (A closing end and a period) (Наверх)
        И конечно же в конце всего этого долен стоять оператор end. – что сведетельствует о окончании модуля.

        Читайте также:  Греется резистор в блоке питания

        Соглашение об именовании (Наверх)
        Исключая зарезервированные слова и директивы, которые всегда пишутся в нижнем регистре, все идентификаторы Object Pascal должны использовать InfixCaps (Каждое слово начинается с большой буквы):

        MyIdentif, MyFTPClass, NewModuleName;

        Самое главное исключение для всех правил состоит в использовании оттранслированных заголовочных файлов С/С++. В этом случае всегда используются соглашения, принятые в файле источнике. Например будет использоваться WM_LBUTTONDOWN, а не wm_LButtonDown.

        Именование (Наверх)
        При именовании полей всегда необходимо использовать InfixCaps. Объявлять переменные только в приватных частях и использовать свойства для доступа к переменным. Для переменных использовать префикс F.

        Имена всех локальных переменных должны подчиняться тем же правилам, которые установлены для именования полей, исключая префикс F.

        В имени метода всегда должна содержаться команда к действию или глагольная фраза:

        ShowStatus
        DrawCircle
        AddLayoutComponent

        MouseButton; //Существительное, не описывает функцию
        drawCircle; //Начинается с маленькой буквы
        add_layout_component; //Используются символы подчерка
        ServerRunning; //Глагольная фраза, но без команды

        Обратите внимание на последний пример (ServerRunning) — непонятно, что делает этот метод, он может быть использован как для запуска сервера (лучше использовать StartServer) так и для проверки работы сервера (лучше использовать IsServerRunning).

        Имена процедур или методов для установки/получения значений свойств должны составляться по правилу: для получения — Get+имя свойства; для установки — Set+имя свойства.

        Методы для теста/проверки булевских свойств класса должны именоваться с префиксом Is+имя свойства.

        IsResizable, IsVisible, IsServerRunning;

        • Не используйте все заглавные буквы для констант, за исключением оттранслированных заголовочных файлов.
        • Не используйте Венгерскую нотацию, за исключением оттранслированных заголовочных файлов.

        Правильно

        Исключение для Венгерской нотации делается в случае объявления перечислимого типа:

        TBtnKind = (bkCustom, bkOK, bkCancel, bkHelp,bkYes, bkNo, bkClose, bkAbort, bkRetry,bkIgnore, bkAll);

        bk обозначает ButtonKind;

        Когда Вы подбираете имя переменной, то имейте в виду, что нужно избегать однобуквенных имен, кроме как для временных переменных и переменных цикла.

        Переменные цикла именуются I и J. Другие случаи использования однобуквенных переменных это S (строка) и R (результат). Однобуквенные имена должны всегда использовать символ в верхнем регистре, но лучше использовать боле значимые имена. Также не рекомендуется использовать переменную l (эль), потому что она похожа на 1 (единица).

        Зарезервированные слова (Наверх)
        Зарезервированные слова и директивы должны быть все в нижнем регистре. Производные типы должны начинаться с большой буквы (Integer), однако string — это зарезервированное слово и оно должно быть в нижнем регистре.

        Использование пустых строк (Наверх)
        Пустые строки могут повысить читабельность путем группирования секций кода, которые логически связаны между собой. Пустые строки должны использоваться в следующих местах:

        • После блока копирайта;
        • После декларации пакета;
        • После секции импорта;
        • Между объявлениями классов;
        • Между реализациями методов;

        Использование пробелов(Наверх)
        Язык Object Pascal является очень легким для понимания языком, поэтому нет особой необходимости в использовании большого количества пробелов. Следующие пункты дадут Вам понимание — в каком случае необходимо использовать пробелы.

        Пробелы, запрещенные к использованию в следующих случаях:

        • До или после оператора .(точка);
        • Между именем метода и открывающей скобкой;
        • Между унарным оператором и его операндом;
        • Между выражением приведения (cast) и приводимым выражением;
        • После открывающей скобки или перед закрывающей;
        • После открывающей квадратной скобки [ или перед закрывающей ];
        • Перед точкой с запятой;
        Читайте также:  Ir2110s схема включения и описание

        Примеры правильного использования:

        function TMyClass.MyFunc(var Value: Integer);
        MyPointer := @MyRecord;
        My > MyInteger := MyIntegerArray[5];

        Примеры неправильного использования:

        function TMyClass.MyFunc( var Value: Integer ) ;
        MyPointer := @ MyRecord;
        My > MyInteger := MyIntegerArray [ 5 ] ;

        Использование отступов (Наверх)
        Всегда необходимо использовать два пробела для всех уровней отступа. Другими словами, первый уровень отступает на два пробела, второй на четыре и так далее. Можно настроить табуляцию на ширину в 2 пробела и пользоваться табуляцией.

        Существует несколько исключений из этого правила. Зарезервированные слова unit, uses, type, interface, implementation, initialization и finalization, они всегда должны примыкать к левой границе.

        Также должны быть отформатированы финальные end-ы , завершающий исходный модуль и отдельные блоки. В файле проекта выравнивание по левой границе применяется к также к словам program, главным begin и end. Код внутри блока beginend должен иметь отступ два символа.

        Перенос строк (Наверх)
        Все строки должны быть ограничены 80 столбцами. Строки, длиннее чем 80 столбцов должны быть разделены и перенесены. Все перенесенные строки должны быть выровнены по первой строке и иметь отступ в два символа. Выражение begin всегда должно находиться на своей отдельной строке.
        Никогда не разрывайте строку между параметром и его типом, кроме параметров, перечисляемых через запятую. Двоеточие для всех объявлений переменных не должно содержать перед собой пробелов и иметь один пробел после перед именем типа.

        procedure Foo(Param1: Integer; Param2: Integer);

        procedure Foo( Param :Integer; Param2:Integer );

        Нельзя переносить строки в тех местах, где не допускаются пробелы, например между именем метода и открывающей скобкой или между именем массива и открывающей квадратной скобкой. Никогда нельзя помещать выражение begin на строку, содержащую другой код.

        while (LongExpression1 or LongExpression2) do begin
        // DoSomething

        В случае с логическими операторами предпочтительнее будет следующий вариант:

        Комментарии (Наверх)
        Язык Object Pascal поддерживает два типа комментариев: блочные и однострочные. Общие правила по использованию комментариев могут быть следующими:

        • Помещайте комментарий недалеко от начала модуля для пояснения его назначения;
        • Помещайте комментарий перед объявлением класса;
        • Помещайте комментарий перед объявлением метода;
        • Избегайте очевидных комментариев: (i := i + 1 // добавить к i единицу);
        • Помните, что вводящий в заблуждение комментарий хуже чем его отсутствие;
        • Избегайте помещать в комментарий информацию, которая со временем может быть не верна;
        • Избегайте разукрашивать комментарии звездочками или другими символами;
        • Для временных (отсутствующие в релизе) комментариев используйте "TODO".

        Блочные комментарии(Наверх)
        Object Pascal поддерживает два типа блочных комментариев. Наиболее часто используемый блочный комментарий — это пара фигурных скобок: . Команда разработчиков Delphi предпочитает использовать этот комментарий как можно проще и как запасной. Используйте в таких комментариях пробелы для форматирования текста и не используйте символы зведочка "*". При переносе строк необходимо сохранять отступы и выравнивание