Форум: "Начинающим";
Текущий архив: 2018.10.21;
Скачать: [xml.tar.bz2];
ВнизProperty не читает значение поля Найти похожие ветки
← →
hei (2016-09-02 17:26) [0]Всем добрый день!
Не ругайте слишком сильно за вопрос! Тяпница и сё такое...
Есть классы:
TContact = class
private
fOrgFullName: WideString;
fPerFIO: WideString;
....
public
....
property OrgFullName: WideString read fOrgFullName;
property PerFIO: WideString read fPerFIO;
end;
TLnkDoc_Info = class
private
fLnkDocNumber: WideString;
fLnkDocDate: TDateTime;
fLnkDocLinkType: WideString;
public
...
property LnkDocNumber: WideString read fLnkDocNumber;
property LnkDocDate: TDateTime read fLnkDocDate;
property LnkDocLinkType: WideString read fLnkDocLinkType;
end;
TDoc_Info = class
private
fDocAddr: TContact; //Адресат
fDocAnn: WideString; //Аннотация
fDocVisa: TContact; //Подписант
fDocSender: TContact;
...
fDocLnkList: array of TLnkDoc_Info;
...
public
....
property DocAddr: TContact read fDocAddr;
property DocAnn: WideString read fDocAnn;
property DocVisa: TContact read fDocVisa;
property DocSender: TContact read fDocSender;
property DocLnkList: array of TLnkDoc_Info read fDocLnkList; ......????
end;
TXML_Doc = class
private
fDocument: TDoc_Info;
public
constructor Create;
procedure AnalysisXMLDoc;
property pDocument: TDoc_Info read fDocument;
end;
implementation
procedure TXML_Doc.AnalysisXMLDoc;
var
Doc: DomDocument;
XML_Doc: TXML_Doc;
begin
// создание экземпляра объекта DOMDocument;
Doc := CoDOMDocument.Create;
// вызов метода Load экземпляра объекта DOMDocument;
Doc.load("DocInfo.xml");
XML_Doc := TXML_Doc.Create;
Doc.Set_async(false);
XML_Doc.fXMLText := Doc.xml;
XML_Doc.fDocument.XMLGet_Doc_Info(Doc.documentElement.selectSingleNode("Document List"));
end;
Далее в FormShow пишу:
X_Doc:= TXML_Doc.Create;
X_Doc.AnalysisXMLDoc;
Memo1.Text:= "Номер документа: "+ X_Doc.pDocument.DocNumber + #13#10+
"Дата документа: "+DateToStr(X_Doc.pDocument.DocDate);
Но Memo выводит объект как после выполнения метода Create (заполняет поля пустым значением, а дату текущей), и не работает свойство. Что не так? Разве нельзя по свойству получать (не методом) поле с типом другой класс, у кот. брать проперти и получать другое поле с типом класс...
И еще вопрос. Как быть со свойством для получения значений поля fDocLnkList ???
Заранее благодарен.
← →
jcl (2016-09-02 17:32) [1]Вот я тупень....
в FormShow перекрывал объект TXML_Doc... Сделал в TXML_Doc.AnalysisXMLDoc; везде Self, заработало...
Подскажите только с
property DocLnkList: array of TLnkDoc_Info read fDocLnkList; ......????
← →
Игорь Шевченко © (2016-09-02 19:19) [2]
> Подскажите только
Во всех примерах для такого рода полей делают два свойства, одно для получения количества элементов, другое для получения/замены элемента по индексу.
Динамический массив не может быть типом свойства
← →
ВладОшин © (2016-09-03 17:45) [3]type
TD = array of string;
TC = class
private
FA: TD;
public
constructor Create;
property A:TD read FA write FA;
end;
constructor TC.Create;
begin
inherited;
SetLength(FA, 3);
FA[0] := "0 0";
FA[1] := "1 1";
FA[2] := "2 2";
end;
var
b: Byte;
begin
C := TC.Create;
for b := 0 to Length(C.A) - 1 do
ShowMessage(C.A[b]);
← →
jcl (2016-09-05 10:31) [4]Спасибо всем!
В пн голова значительно свежее :)
← →
kilkennycat © (2016-09-05 10:46) [5]еще бы. каждый понедельник мы огурцом...
← →
jcl (2016-09-05 11:39) [6]И это, как оказалось не все....
Пишу в TDoc_Info:
private
....
fDocLnkList: array of TLnkDoc_Info; //Связанные документы
function GetDocLnk(idx: integer): TLnkDoc_Info;
....
public
...
property DocLnkList[idx: integer]: TLnkDoc_Info read GetDocLnk;
Компилятор пишет ошибку на строке function GetDocLnk:
E2065 Unsatisfied forward or external declaration: "TDoc_Info.GetDocLnk"
Ткните носом, пожалуйста, где исправить?
← →
ВладОшин © (2016-09-05 11:48) [7]соотв.метод написать? (GetDocLnk)
← →
jcl (2016-09-05 12:06) [8]
> ВладОшин © (05.09.16 11:48) [7]
> соотв.метод написать? (GetDocLnk)
Ахаха, спасибо!
P.S. не всякий каждый понедельник.... я огурцом...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2018.10.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.001 c