Текущий архив: 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.5 MB
Время: 0.049 c