Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.16;
Скачать: CL | DM;

Вниз

Можно ли написать функцию которая бы писала функцию копирования з   Найти похожие ветки 

 
Идей   (2007-08-17 06:20) [0]

Можно ли написать функцию которая бы писала функцию копирования записей?

То есть я ей большой и сложный record, на Паскале естественно, а она мне функцию, которая копирует этот рекорд, тоже на Паскале.

А?

Или сложно слишком?


 
Бакук ©   (2007-08-17 06:48) [1]

А куда копировать?


 
Идей   (2007-08-17 06:53) [2]

В другой такой же рекорд.


 
Zeqfreed ©   (2007-08-17 07:25) [3]

Можно.


 
Идей   (2007-08-17 07:33) [4]


> Zeqfreed ©   (17.08.07 07:25) [3]
>
> Можно.

Чем докажешь?


 
Zeqfreed ©   (2007-08-17 07:40) [5]

> Идей   (17.08.07 07:33) [4]

Ничем не буду доказывать. Мне таких извращений не нужно :)

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


 
Zeqfreed ©   (2007-08-17 07:49) [6]

Т.е. я это представляю, например, как синтаксический парсер, которому на вход подается исходный код описания записи и конфигурационный файл примерно такого вида:

types.default.on_copy = "%1 := %1"
types.string.on_copy = "%1 := %1"
types.string.after_copy = "UniqueString(%2)"
types.myWeirdType.on_copy = "CopyWeirdVariable(%1, %2)"

И он соответственно для каждого поля согласно его типу и указанному шаблону замены составляет конечный код для копируещей процедуры. Ну это в первом приближении.


 
Zeqfreed ©   (2007-08-17 07:50) [7]


> types.default.on_copy = "%1 := %1"
> types.string.on_copy = "%1 := %1"


Тут, разумеется, "%1 := %2".


 
Zeqfreed ©   (2007-08-17 07:50) [8]

Точнее, наоборот — "%2 := %1". Простите, я тут просыпаюсь только :)


 
Alex Konshin ©   (2007-08-17 08:12) [9]

А какой такой великий смысл этого занятия?
Скопировать любую запись можно и так. Зачем паскалевский код-то?


 
Zeqfreed ©   (2007-08-17 08:16) [10]

> Alex Konshin ©   (17.08.07 08:12) [9]

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


 
MsGuns ©   (2007-08-17 08:18) [11]

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


 
Думкин ©   (2007-08-17 08:20) [12]

> Zeqfreed ©   (17.08.07 08:16) [10]

По сабжу это не ясно.

> Alex Konshin ©   (17.08.07 08:12) [9]

В Турбо вроде так не работало, ошибаюсь?


 
homm ©   (2007-08-17 08:39) [13]

> Можно ли написать функцию которая бы писала функцию копирования
> записей?

Чего?

CopyMemory(@R1, @R2, sizeof(R1));


 
MsGuns ©   (2007-08-17 09:10) [14]

>homm ©   (17.08.07 08:39) [13]
>CopyMemory(@R1, @R2, sizeof(R1));

А что прикажете делать со "вложенными" объектами, которые в рекорде представлены лишь указателями или вообще списками указателей ?


 
homm ©   (2007-08-17 09:58) [15]

> А что прикажете делать со "вложенными" объектами, которые
> в рекорде представлены лишь указателями или вообще списками
> указателей ?

А что с ними не так? Они так-же скопируются, по указателю. В условии ничего такого нет, и додумывать тоже навергное не нужно.


 
@!!ex ©   (2007-08-17 10:03) [16]

ТОже подумал о CopyMemory.
ИМХО вопрос слишком расплывчатый.


 
Zeqfreed ©   (2007-08-17 10:09) [17]

> homm ©   (17.08.07 09:58) [15]

Купи уже телепатор :)


 
homm ©   (2007-08-17 10:20) [18]

http://kolmck.net/r_adds.htm#Utilities

PCAsm. Объект TCPCAsm для компиляции ассемблерного кода в память на лету, после чего оттранслированный код готов к немедленному исполнению.


 
DVM ©   (2007-08-17 10:22) [19]


> Идей  

займитесь делом.


 
DVM ©   (2007-08-17 10:22) [20]


> Идей  

займитесь делом.


 
просто так   (2007-08-17 13:28) [21]

>>Идей
вэлком в C++. там есть конструкторы копирования


 
Идей   (2007-08-18 03:35) [22]


> homm ©   (17.08.07 09:58) [15]
>
> > А что прикажете делать со "вложенными" объектами, которые
> > в рекорде представлены лишь указателями или вообще списками
> > указателей ?
>
> А что с ними не так? Они так-же скопируются, по указателю.
>  В условии ничего такого нет, и додумывать тоже навергное
> не нужно.


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


 
Черный Шаман   (2007-08-18 04:00) [23]


> Идей   (17.08.07 06:20)
>
> Можно ли написать функцию которая бы писала функцию копирования
> записей?
>
> То есть я ей большой и сложный record, на Паскале естественно,
>  а она мне функцию, которая копирует этот рекорд, тоже на
> Паскале.
>
> А?
>
> Или сложно слишком?


создай объект от Tpersistent и вынеси в published свойства вот тебе и копирование.


 
homm ©   (2007-08-18 07:50) [24]

> [22] Идей   (18.08.07 03:35)
Привыкни же к тому, что в твою бредовую головушку можешь залезть только ты сам, так что мысли их нее формулировать придется и в дальшейшем только тебе.


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


> [0] Идей   (17.08.07 06:20)
> А?
Генимальный вопрос! Просто слов нет. Сразу видно, что ты не идиот.


 
oxffff ©   (2007-08-18 10:54) [25]


>
> Идей   (17.08.07 06:20)  
> Можно ли написать функцию которая бы писала функцию копирования
> записей?
>
> То есть я ей большой и сложный record, на Паскале естественно,
>  а она мне функцию, которая копирует этот рекорд, тоже на
> Паскале.
>
> А?
>
> Или сложно слишком?


При возможности передачи typeinfo смотреть в System.pas готовую реализацию.

procedure _AddRefRecord;
procedure _CopyRecord;
procedure _FinalizeRecord

Иначе связка CopyMemory+Sizeof()

Либо использование объектов:

-Либо своя реалиазация
-Либо готовая Tpersistent+ assign + assignTo


 
homm ©   (2007-08-18 10:58) [26]

В чем смысл топика, в том виде в котором его подумал (не задал) автор? Вообже-то как раз и для таких случаев, в том числе, есть классы и объекты. :-/



Страницы: 1 вся ветка

Текущий архив: 2007.09.16;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.024 c
8-1165527388
AndreyRu
2006-12-08 00:36
2007.09.16
Antialiasing Глифов!


6-1169389960
AdmeraL
2007-01-21 17:32
2007.09.16
TWebBrowser


6-1169625246
V-A-V
2007-01-24 10:54
2007.09.16
Проблема подключения INDY (TIdFtp) через прокси


2-1188065215
hprx
2007-08-25 22:06
2007.09.16
Работа с графикой.


15-1187483828
SerJaNT
2007-08-19 04:37
2007.09.16
Удалить строки