![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Вот собственно такая интересная инфа, для меня например это новость.
Оказывается в структуре Record можно описывать еще и функции, процедуры. Для меня достаточно странно смотрится такой код: Код:
Type TMyRec = record procedure Test; end; procedure TMyRec.Test; begin // %) end; Var MyRec: TMyRec; begin MyRec.Test; end. ![]() |
|
#2
|
|||
|
|||
|
Это с какой версии?
Совсем все из C/C++ перетащили. Осталось только шаблоны перетащить и будут отличия в begin вместо { и end вместо }... |
|
#3
|
||||
|
||||
|
Проверял на 2009, 2010 - работает. Более ранней под рукой нет.
|
|
#4
|
||||
|
||||
|
на Delphi 6 "END expected but PROCEDURE found" на
Код:
Type TMyRec = record procedure Test; end; |
|
#5
|
||||
|
||||
|
Да я тоже про это не знал... Эта возможность появилась походу когда борланд делфи купила ембакадеро, и сразу же они встроили эту функцию...
ЗЫ может это и не новость для многих, но я только вчера узнал, что в более новых версиях делфи (например делфи 2010) есть возможность запуска без дебагера (Shift+Ctrl+F9) ... |
|
#6
|
||||
|
||||
|
Еще оказывается и свойства поддерживаются.
Обалдеть.Собственно это я выкопал в результате изучения IOUtils Для меня было полной неожиданностью наткнуться на возможности которые предоставляет данный модуль при работе с файловой системой. Странно, что до сих пор примеров использования этого модуля я не встречал, а возможности впечатляют. |
|
#7
|
||||
|
||||
|
А еще в делфях есть такое:
Код:
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. Тоже никаких конструкторов, по сути та же запись.Последний раз редактировалось Bargest, 07.11.2010 в 19:29. |
|
#8
|
||||
|
||||
|
Здесь несколько другое - радикальное расширение возможностей всем привычной еще с Паскаля структуры record.
|
|
#9
|
|||
|
|||
|
Да. Это интересно и заставляет задуматься (о возможном применении)...
В частности, в контексте типизированных файлов. Сохранится ли вся запись (с "методами") ? Надо будет попробовать. Это оч.полезная инфа. Спс. |
|
#10
|
|||
|
|||
|
В 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
|
|||
|
|||
|
Цитата:
В D5 и D7 тоже не прошел вариант. Последний раз редактировалось roamer, 09.11.2010 в 23:18. |
|
#12
|
||||
|
||||
|
Это появилось с делфи 2005 вроде
|