Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
Идей   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.065 c
15-1187766946
koha
2007-08-22 11:15
2007.09.16
Все ли GSM устройства имеют аймиай?


2-1187631898
b86
2007-08-20 21:44
2007.09.16
научите меня как работает dragdrop


3-1179494173
SerMaxx
2007-05-18 17:16
2007.09.16
Работа компонента Table


11-1168173331
Ned
2007-01-07 15:35
2007.09.16
Портация Registry


15-1187508695
Kostafey
2007-08-19 11:31
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский