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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.11.2010, 01:59
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию Дополнительные возможности Дельфи

Вот собственно такая интересная инфа, для меня например это новость.
Оказывается в структуре Record можно описывать еще и функции, процедуры. Для меня достаточно странно смотрится такой код:
Код:
Type
 TMyRec = record
   procedure Test;
 end;

 procedure TMyRec.Test;
 begin
  // %)
 end;

Var
 MyRec: TMyRec;
begin
 MyRec.Test;
end.
Вызов предварительно конструктора не требуется, ведь это-же запись.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #2  
Старый 06.11.2010, 02:35
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Это с какой версии?

Совсем все из C/C++ перетащили. Осталось только шаблоны перетащить и будут отличия в begin вместо { и end вместо }...
Ответить с цитированием
  #3  
Старый 06.11.2010, 02:58
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Проверял на 2009, 2010 - работает. Более ранней под рукой нет.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 06.11.2010, 08:59
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

на Delphi 6 "END expected but PROCEDURE found" на
Код:
Type
 TMyRec = record
   procedure Test;
 end;
что очень даже логично для record)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 06.11.2010, 10:29
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Да я тоже про это не знал... Эта возможность появилась походу когда борланд делфи купила ембакадеро, и сразу же они встроили эту функцию...
ЗЫ может это и не новость для многих, но я только вчера узнал, что в более новых версиях делфи (например делфи 2010) есть возможность запуска без дебагера (Shift+Ctrl+F9) ...
__________________
Помогаю за Спасибо
Ответить с цитированием
  #6  
Старый 06.11.2010, 11:56
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Еще оказывается и свойства поддерживаются. Обалдеть.

Собственно это я выкопал в результате изучения IOUtils
Для меня было полной неожиданностью наткнуться на возможности которые предоставляет данный модуль при работе с файловой системой. Странно, что до сих пор примеров использования этого модуля я не встречал, а возможности впечатляют.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 07.11.2010, 19:25
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

А еще в делфях есть такое:
Код:
program Project5;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type TRec=object
  procedure Proc;
end;

var Rec:TRec;

procedure TRec.Proc;
begin
  readln;
end;

begin
 Rec.Proc;
end.
думаю в ранних версиях тоже будет работать, т.к. это работает даже в TurboPascal7 Тоже никаких конструкторов, по сути та же запись.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 07.11.2010 в 19:29.
Ответить с цитированием
  #8  
Старый 07.11.2010, 21:13
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Здесь несколько другое - радикальное расширение возможностей всем привычной еще с Паскаля структуры record.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #9  
Старый 09.11.2010, 20:21
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Да. Это интересно и заставляет задуматься (о возможном применении)...
В частности, в контексте типизированных файлов.
Сохранится ли вся запись (с "методами") ?
Надо будет попробовать.

Это оч.полезная инфа.
Спс.
Ответить с цитированием
  #10  
Старый 09.11.2010, 20:44
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

В D 2009 такой вариант прошел:

Код:
Type
   TMyRec2 = record
     sProp : string[20];
     R1 : real;
     R2 : real;
     function R1_plus_R2 : real;
     procedure ShowRes;
   end;

...

function TMyRec2.R1_plus_R2 : real;
begin
  Result:=R1+R2;
end;

procedure TMyRec2.ShowRes;
begin
  ShowMessage(sProp+' = '+FloatTostr(R1_plus_R2));
end;

........
........
........

procedure TForm1.SpeedButton2Click(Sender: TObject);
Var
  MyRec: TMyRec2;
  F : file of TMyRec2;
begin
  AssignFile(F,'C:\!_TMyRec2.dat');
  Rewrite(F);
  MyRec.sProp:='Сумма';
  MyRec.R1:=3.1415926;
  MyRec.R2:=MyRec.R1/3;
  Write(F,MyRec);
  CloseFile(F);
end;


procedure TForm1.SpeedButton3Click(Sender: TObject);
Var
  MyRec: TMyRec2;
  F : file of TMyRec2;
begin
  AssignFile(F,'C:\!_TMyRec2.dat');
  Reset(F);
  Seek(F,0);
  Read(F,MyRec);
  CloseFile(F);
  MyRec.ShowRes;
end;

Еще раз Спс Страдальцу.

Последний раз редактировалось roamer, 09.11.2010 в 20:47.
Ответить с цитированием
  #11  
Старый 09.11.2010, 23:16
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Цитата:
Сообщение от NumLock
на Delphi 6 "END expected but PROCEDURE found" ...

В D5 и D7 тоже не прошел вариант.

Последний раз редактировалось roamer, 09.11.2010 в 23:18.
Ответить с цитированием
  #12  
Старый 09.11.2010, 23:57
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Это появилось с делфи 2005 вроде
__________________
Помогаю за Спасибо
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter