Форум: "Потрепаться";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];
ВнизПреобразование из одного типа в другой Найти похожие ветки
← →
SuperMagic (2003-05-06 10:49) [0]Ребята проблема в следующем:
Есть у меня клас CFigure-абстрактный
СLine=class(CFigure)
CSpline=class(CFigure)
Как преобразовать объект класса CLine в объект класса CSpline
← →
Digitman (2003-05-06 11:03) [1]никак
← →
Digitman (2003-05-06 11:06) [2]Золото = class(Металл)
Медь = class(Металл)
Как преобразовать Медь в Золото ?) И наоборот ?)
Сиди и осмысливай) .. Удастся - станешь алхимиком)
← →
Крот (2003-05-06 11:07) [3]Насколько я понимаю, классы CLine и CSplin не связаны отношением "Базовый класс->Производный класс", поэтому их нельзя привести друг к другу. Можно базовый класс привести к производному или наоборот. Как это пишется на Builder не знаю.
← →
Anatoly Podgoretsky (2003-05-06 11:19) [4]Привести можно к чему угодно, вот только он не просит приводить, а просит преобразовать (свинец в золото)
← →
Palladin (2003-05-06 11:25) [5]в ручную можно... как метод объекта например...
CLine.AsCSpline:CSpline;
и писать функцию-преобразователь
← →
vuk (2003-05-06 11:39) [6]В vcl подобные проблемы решает метод Assign.
← →
Polevi (2003-05-06 15:59) [7]2vuk © (06.05.03 11:39)
?
← →
vuk (2003-05-06 16:42) [8]Например:
procedure TBlobField.Assign(Source: TPersistent);
var
StreamPersist: IStreamPersist;
begin
if Source is TBlobField then
begin
LoadFromBlob(TBlobField(Source));
Exit;
end;
if Source is TStrings then
begin
LoadFromStrings(TStrings(Source));
Exit;
end;
if SupportsStreamPersist(Source, StreamPersist) then
begin
LoadFromStreamPersist(StreamPersist);
Exit;
end;
inherited Assign(Source);
end;
← →
Polevi (2003-05-06 17:16) [9]ну и где здесь преобразование
← →
vuk (2003-05-06 17:59) [10]Класс сам решает, каким образом и на основе какого типа данных он может присвоить значения своим свойствам.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c