Сравнение и создание копии объектов
Скачать (rar-файл; Размер - 2720)Обсудить в форуме
Описание
Несколько полезных функций по работе с объеками, а именно:
СравнитьДваОбъекта
ЗаполнитьОбъект -другими словами создать копию объекта, т.к. известно если в коде сделать такую команду Объект2=Объект1, реально это будет один и тот же объект - т.к. они будут ссылаться на одну область памяти
Прикрепляю саму библиотеку и тестовый макрос
СравнитьДваОбъекта
ЗаполнитьОбъект -другими словами создать копию объекта, т.к. известно если в коде сделать такую команду Объект2=Объект1, реально это будет один и тот же объект - т.к. они будут ссылаться на одну область памяти
Прикрепляю саму библиотеку и тестовый макрос
Текст примера
/* Примеры сравнения объектов */ import "diklib_class.mac"; //------------------------------------ //------------------------------------ Class Класс1 var Свойство1:integer=0 ,Свойство_Массив=TArray ; //--------------------- Macro Print(ИмяОбъектаДляОтчета) var i=0,СтрокаЭлементовМассива=""; [ === #](ИмяОбъектаДляОтчета+" класс:"+GenClassName(this)); [ Свойство1: #](string(Свойство1):l); while (i<Свойство_Массив.size) СтрокаЭлементовМассива=СтрокаЭлементовМассива+string(Свойство_Массив[i])+","; i=i+1; end; [ Свойство_Массив:#](СтрокаЭлементовМассива); End; //--------------------- End; //------------------------------------ //------------------------------------ Class (Класс1) Класс_НапследникКласс1 var Свойство2:string="" ; InitКласс1; //--------------------- Macro Print(ИмяОбъектаДляОтчета) Print(ИмяОбъектаДляОтчета); [ Свойство2: #](string(Свойство2):l); End; //--------------------- End; //------------------------------------ //------------------------------------ Class Класс2 // подобие Класс1 var Свойство1:integer=0 ,Свойство_Массив=TArray ; //--------------------- Macro Print(ИмяОбъектаДляОтчета) var i=0,СтрокаЭлементовМассива=""; [ === #](ИмяОбъектаДляОтчета+" класс:"+GenClassName(this)); [ Свойство1: #](string(Свойство1):l); while (i<Свойство_Массив.size) СтрокаЭлементовМассива=СтрокаЭлементовМассива+string(Свойство_Массив[i])+","; i=i+1; end; [ Свойство_Массив:#](СтрокаЭлементовМассива); End; //--------------------- End; //------------------------------------ //------------------------------------ var Объект1=Класс1 ,Объект2=Класс1 ,Объект3=Класс_НапследникКласс1 ,Объект4=Класс2 ; Объект1.Свойство1=1; Объект1.Свойство_Массив[0]=1; Объект1.Свойство_Массив[1]=2; Объект1.Print("Объект1"); [==================================================================================]; // равенство Объект2.Свойство1=1; Объект2.Свойство_Массив[0]=1; Объект2.Свойство_Массив[1]=2; Объект2.Print("Объект2"); [1.проверка равенства объектов: #############](СравнитьДваОбъекта(Объект2,Объект1)); [==================================================================================]; //не равенство Объект2.Свойство1=1; Объект2.Свойство_Массив[0]=0; //отличие Объект2.Свойство_Массив[1]=2; Объект2.Print("Объект2"); [2.проверка НЕ равенства объектов: #############](СравнитьДваОбъекта(Объект2,Объект1)); [==================================================================================]; // сравнение объектов разных классов Объект3.Свойство1=1; Объект3.Свойство_Массив[0]=1; Объект3.Свойство_Массив[1]=2; Объект3.Свойство2="тест"; Объект3.Print("Объект3"); //не равенство, параметр ТочноеСовпадение=True //true - объекты должны быть точно одного класса [3.проверка объектов разных классов (наследник). НЕ равенство объектов: #############](СравнитьДваОбъекта(Объект3,Объект1, /*по умолчанию*/true)); //равенство, параметр ТочноеСовпадение=False [4.проверка объектов разных классов (наследник). Равенство объектов: #############](СравнитьДваОбъекта(Объект3,Объект1, false)); [#############](СравнитьДваОбъекта(Объект3,Объект1,false)); [==================================================================================]; Объект4.Свойство1=1; Объект4.Свойство_Массив[0]=1; Объект4.Свойство_Массив[1]=2; Объект4.Print("Объект4"); //не равенство, параметр ТочноеСовпадение=False //т.к. объект4 создан на базе другого класса [5.проверка объектов абсолютно разных классов. Равенство объектов: #############](СравнитьДваОбъекта(Объект4,Объект1, /*по умолчанию*/true)); [==================================================================================]; //------------------------------------------------ // создание копии объекта [-------------------------------------------------]; [проверка создание копии объекта]; Объект1.Print("Объект1"); Объект2.Print("Объект2"); [сначала сравним]; [#############](СравнитьДваОбъекта(Объект2,Объект1)); [сделаем копию]; [#############](ЗаполнитьОбъект(Объект2,Объект1)); [снова сравним]; [#############](СравнитьДваОбъекта(Объект2,Объект1)); Объект1.Print("Объект1"); Объект2.Print("Объект2");