Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Арсенальная башня
  
Содержание



 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  06:24[Войти] | [Зарегистрироваться]

СтройКод — быстрое программирование под Delphi без знания паскаля

Илья Кислицын
дата публикации 02-06-2013 09:41

Delphi в нашей стране очень популярна, но у нас совсем неизвестен отличный инструмент для этой среды — СтройКод (StroyCode). Это бесплатная программа от японской компании SoftConstructors. Для СтройКода нет документации на русском языке. Да и на японском ее почти нет. В этой статье я расскажу то, с чем смог разобраться самостоятельно.

Назначение программы

СтройКод генерирует паскалевские исходники по заданным в нем исходным данным. В программе вы задаете классы, свойства, события, методы и так далее. Затем нажимаете F9 и программа создает модуль Pas. Полученный модуль можно использовать в Delphi.

Из вышесказанного может показаться, что это очередной UML-редактор. Однако, нет! Здесь можно полноценно программировать, создавая не только описание, но и всю реализацию. И программирование в СтройКоде не уступает по скорости программированию в Delphi!

Для кого будет полезной

СтройКод снижает порог вхождения в программирование. Новичкам даже не нужно знать синтаксис паскаля. Позволяет изучить ООП, хотя и не все аспекты. Для профессионалов тоже очень удобная вещь. "Набросать" иерархию классов можно в несколько кликов.

Описание

Самое интересное в этой программе — наполнение исходных данных. Это что-то! Этот процесс очень простой, но, как ни странно, описать его очень сложно. Тут лучше один раз попробовать, чем сто раз увидеть. Но, все-таки, я постараюсь этот процесс описать.

После запуска программы вы видите большой текстовый редактор, в котором мигает курсор. Но не пытайтесь здесь что-то печатать. Наверху есть палитра с кнопками. Щелкните по кнопке Object. В редакторе появится почти синий почти прямоугольный объект — поздравляю, вы только что объявили класс.

А как удалить этот класс? Щелкните на клавиатуре Backspace. Или движением мыши выделите этот объект и в контекстном меню нажмите Delete. То есть объект в этом редакторе ведет себя как большой-большой символ в тексте. Но давайте вернем объект обратно (Edit-Undo).

Самое главное: нужно обязательно создать один объект-генератор, который из всего этого сгенерирует паскалевский исходник. Щелкните в палитре кнопку Pascal.

Теперь можно нажать F9. И программа создает вот такой код:

unit Unsaved;

interface

type
  TObject1 = class(TObject)
  public
    constructor Create; virtual;
  end;

implementation

{ TObject1 }

constructor TObject1.Create;
begin
end;

end.

Вернемся в редактор СтройКода. Нужно щелкнуть в белое поле внутри созданного класса, чтобы курсор теперь мигал там. Внутри класса — другой текстовый редактор. Заметьте, в палитре при этом изменились кнопки. То есть программа подсказывает, какие объекты в класс можно вставлять. Вставим Event (событие).

А как вставить параметр в это событие, думаю, вы догадаетесь.

Нажимаем F9 и получаем код:

unit Unsaved;

interface

type
  TObject1Event1Event = procedure(Sender: TObject; X: NativeInt) of object;
  TObject1 = class(TObject)
  private
    FOnEvent1: TObject1Event1Event;
  protected
    procedure DoEvent1(X: NativeInt);
  public
    constructor Create; virtual;
    property OnEvent1: TObject1Event1Event read FOnEvent1 write FOnEvent1;
  end;

implementation

{ TObject1 }

constructor TObject1.Create;
begin
end;

procedure TObject1.DoEvent1(X: NativeInt);
begin
  if Assigned(FOnEvent1) then
    FOnEvent1(Self, X);
end;

end.

Создадим потомка от нашего TObject1. Для этого надо вернуть курсор в основной редактор, в палитре щелкнуть Object, в созданном классе дважды щелкнуть в поле правее от имени — там выбирается предок.

Как уже говорилось, в СтройКоде можно не только описывать интерфейсную часть модуля, но и делать всю реализацию. Для этого в палитре есть целая куча разных кнопок. Особенно мне понравился объект-цикл For Each, который позволяет бегать по любым данным, которые можно хоть как-то представить в виде массива. Например, по символам в строке или по пунктам в перечислимом типе. Ему достаточно указать лишь переменную или перечислимый тип.

Покажу реализацию посложнее:

Соответствующий сгенерированный код:

function GetAirplanFlightMass(AAirplanFlight: TAirplanFlight; out AMass: NativeInt): Boolean;
var
  I: NativeInt;
  Item: TPassanger;
  J: NativeInt;
  Item1: TLuggage;
begin
  if AAirplanFlight.Active then
  begin
    Summ := AAirplanFlight.AirplanInfo.EmptyMass;
    for I := 0 to AAirplanFlight.PassengerCount - 1 do
    begin
      Item := AAirplanFlight.Passengers[I];
      for J := 0 to Item.LuggageCount - 1 do
      begin
        Item1 := Item.Luggages[J];
        Summ := Summ + Item1.Mass;
      end;
    end;
    Result := True;
  end
  else
    Result := False;
end;

Всякая информация в куче

При переименовании переменных, методов, классов — они переименовываются автоматически везде, где используются.

В программе нет разделения на процедуры и функции. Все называется методами. Если вы укажете методу тип возвращаемого результата, то в паскале у вас получится функция. Иначе процедура. Похоже на C++.

Даже если вы пытаетесь реализовывать функцию, в ней не будет переменной Result. Есть только команда Return с указанием результата. Тоже как в C++.

В СтройКоде свои названия у простых типов данных. Например, логическое — это bool, целое — int. При генерации они преобразуются соответственно в Boolean и новомодный NativeInt.

Программирование в СтройКоде — сплошные щелки мышью. Клавиатура понадобится только для ввода названий классов, переменных и так далее. Очень удобно, можно даже программировать на планшете.

А вот над какой проблемой я бился долго: файл в СтройКоде надо обязательно сохранять с именем без пробелов, так как это имя присваивается файлу Pas (и пишется внутри после слова unit). Иначе не компилируется.

Один файл СтройКода — это один модуль Pas. Файлы СтройКода можно подключать друг к другу, как в uses в паскале. Файлы СтройКода внутри текстовые.

К сожалению, СтройКод не умеет импортировать паскалевские исходники в себя, даже созданные им самим. Поэтому править созданные СтройКодом исходники нежелательно.

Недостатки

Главный недостаток — программа в режиме демо! Хотя она бесплатная и никакая функциональность не ограничена. Но, видимо, с режимом демо связано то, что не все команды доступны. Например, я так и не смог разобраться, как работать с типами Pointer и простыми массивами. Программа позволяет указать в выражениях переменные неразрешенного типа (новичков это запутает). Иногда генерируется неправильный код. В общем, на практике ей пользоваться можно не всегда. С нетерпением жду новых версий и снятия режима демо.

Предположения: куда пойдет СтройКод дальше

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

Может быть, сделают компиляцию и запуск своей программы прямо из СтройКода. Это было бы очень удобно. Тогда можно даже не знать, на каком языке программируешь.

Было бы неплохо, если бы добавили импорт из Pas. Хочется перевести в СтройКод свои проекты.

Я отправил письмо разработчикам, что готов перевести эту программу на русский язык. Если мне ответят, я смогу увидеть кое-какие внутренности программы, познакомиться с ее возможностями поближе. Тогда, возможно, напишу более развернутую статью.

Ссылки

Ссылка на проект: http://softconstructors.com/en/applications/stroycode/

Ссылка на страницу скачивания программы: http://softconstructors.com/en/applications/stroycode/download.html

PS: Возможно, в этой статье что-то описано неправильно или использованы неправильные термины, так как, повторюсь, никакой документации по программе нет, все изучалось по наитию.



Специально для Королевства Delphi



Смотрите также материалы по темам:


 Обсуждение материала [ 20-01-2014 02:20 ] 25 сообщений
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования