Войти
ФлеймФорумПрограммирование

FreePascal(ObjectPascal). Хочу попробовать. (2 стр)

Страницы: 1 2 3 Следующая »
#15
(Правка: 6:20) 6:18, 14 янв. 2019

1 frag / 2 deaths
> Они шланг не прикрутили? Или он похерит скорость компиляции?
clang, конкретнее llvm? сейчас "на последних стадиях". (транк работает под макОСь и линух, под винду никто не тестил)

Тема оживилась последнее время, потому что пришёл некто Симон Кисель и сказал: 15К (то ли евро, то ли долларов) тому, кто ЛЛВМ прикрутит.
Т.к. над ллвм-ом работа началась уже давно, то в приницпе у команды проснулся не поддельный интерес.


#16
22:52, 29 янв. 2019

http://freepascal.ru/download/book/doc_ref/index.html?aboutthisguide.html
По производительности ничем не уступает C++(если руки прямые конечно).

#17
1:55, 30 янв. 2019

Mira
> в последней версии можно)
У него фрипаскаль + лазарус.

> и местный "Intellisence" вроде Castallia называется
У него фрипаскаль + лазарус.

#18
1:59, 30 янв. 2019

Vlad2001_MFS
Переменные посреди кода объявлять нельзя, но можно объявлять вложенные функции, по типу:

procedure DoTest(const data: TIntegerArray);

  function MyCompare(idx: Integer): Boolean;
  begin
    if idx = High(data) then Exit(False);
    Result :=  data[idx] = data[idx+1];
  end;

var i: Integer;
begin
  for i := 0 to Length(data) - 1 do
  begin
    if MyCompare(i) then
      WriteLn(data[i]);
  end;
end;
#19
2:05, 30 янв. 2019

Vlad2001_MFS
> А есть какие-либо стандарты по оформлению кода, именованию переменных, функций
> и т.д. и т.п? Или как в Си - как удобно? Надо же сразу правильно привыкать
> стараться.
Вообще можешь конечно писать как хочешь. Но есть некоторый дефолтный кодстайл, которого многие стараются придерживаться:

  • все типы начинаются с префикса T
  • все поля класса начинаются с префикса F (только классы, структуры, которые record в паскале к ним не относятся)
  • все свойства делегаты начинаются с префикса On
  • все интерфейсы начинаются с префикса I
  • #20
    2:16, 30 янв. 2019

    И еще пара советов по работе в IDE, которые облегчат тебе жизнь:

  • Перепрыгнуть вверх-вниз от имплементации метода к его интерфейсной части можно с помощью ctrl+shift+↑ и ctrl+shift+↓
  • Супер волшебная комбинация ctr+shift+C. С помощью этой комбинации можно:

  • 1. Добавить переменную в декларацию. Просто пишешь for i := 0, прожимаешь ctr+shift+C и IDE сама добавляет тебе i в var список если её там нет. Работает не только с for, а вообще со всем.
    2. Написал новый метод в интерфейсной части класса? Жмешь ctr+shift+C и среда сама создает тебе шаблончик с имплементацией, и кидает тебя в имплементацию
    3. Изменил список параметров метода класса? Когда картека находится в измененной строке прожимаешь ctr+shift+C и IDE сама тебе правит либо интерфейсную часть, либо имплементацию (в зависимости от того, что ты менял)
    4. Пишешь новое свойство, но лень описывать поле в классе и сеттер? Просто пишешь: property MyValue: Integer read write и жмешь ctr+shift+C

    #21
    2:32, 30 янв. 2019

    MrShoor
    Спасибо!

    > все поля класса начинаются с префикса F (только классы, структуры, которые
    > record в паскале к ним не относятся)
    Можно здесь немного подробнее, а то я не пойму что-то. Сложные типы(классы, структуры) объявлять без префикса F(это типа field?), а простые(int, char, float и т.д.) с префиксом?

    #22
    4:00, 30 янв. 2019

    а имена параметров с "a" начинать. Особенно для тех имён, которые с именами свойств совпадают

    #23
    5:16, 30 янв. 2019

    Vlad2001_MFS

    TMyObject = class
    private
      FMyValue: Integer; //тут имена полей начинаются с F, типа field, да
      FMyStr: String; //и тут, вне зависимости от типа
    end;
    #24
    7:33, 30 янв. 2019

    skalogryz
    Спасибо!

    MrShoor
    Спасибо! Комбинация ctrl+shift+c выглядит крайне интересно и удобно.

    #25
    10:57, 30 янв. 2019

    MrShoor
    нифига , я не знал.
    я даже про свойства узнал случайно, написал чтото типа

    property ItemCount:integer
    и машинально даванул комбинацию. он создал переменную и сеттер.
    жалко что он геттер не делает, так как я обычно к интерфейсам свожу.
    #26
    11:19, 30 янв. 2019

    Mira
    геттер делает если написать

    property ItemCount:integer read GetItemCount write SetItemCount
    #27
    (Правка: 11:52) 11:52, 30 янв. 2019

    Ну все ! Теперь Mira напишет свой аналог Юнити :)

    #28
    14:31, 30 янв. 2019

    Я тут в последнее время увлекся созданием языков и все связанным с этим, как некоторые здесь... Хочу написать простой мат. язык для простых мат. вычислений. Исполнятся будет на виртуальной машине. Вроде бы интересно попробовать на Паскале написать, но не представля себе работу с байтами, указатели и прочее. С этим в принципе можно разобраться, меня беспокоет другое: можно задавать размер элемента Enum'а или будет автоматически наименьший допустимый выбираться?
    В Сишке все предельно просто и понятно, как тут - фиг его знает)

    #29
    14:44, 30 янв. 2019

    Vlad2001_MFS
    > но не представля себе работу с байтами, указатели и прочее. С этим в принципе
    > можно разобраться, меня беспокоет другое: можно задавать размер элемента Enum'а
    > или будет автоматически наименьший допустимый выбираться?

    > не представля себе работу с байтами
    > можно задавать размер элемента Enum'а
    ну ты понимаешь, да? Перечислимый тип сделан для того чтоб ты как раз про байты не думал. Нужен размер для передачи куда-то - ну сделай ord и TMyType(x) чтоб преобразовать в нужный тебе. Хочешь узнать размер типа - sizeof(TMyType).

    А так да, минимальный в который все значения влезают.

    Страницы: 1 2 3 Следующая »
    ФлеймФорумПрограммирование