Главная страница
    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.5 MB
Время: 0.041 c
15-1185530750
Vlad Oshin
2007-07-27 14:05
2007.09.16
шахматы. Как сходить?


1-1183551722
Bel
2007-07-04 16:22
2007.09.16
Запустить службу в Vista


2-1187817268
nord489
2007-08-23 01:14
2007.09.16
MainMenu и PopupMenu


9-1160220897
alpha5
2006-10-07 15:34
2007.09.16
Углы поворота


2-1187691079
Daedr
2007-08-21 14:11
2007.09.16
профессионалам отдельная просьба - быть снисходительными.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский