Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2018.10.21;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.006 c
2-1472826405
hei
2016-09-02 17:26
2018.10.21
Property не читает значение поля


11-1267468114
Boguslaw
2010-03-01 21:28
2018.10.21
time difference


1-1359522126
Vasya
2013-01-30 09:02
2018.10.21
Virtual Treeview как скрыть строку


2-1473244823
валя
2016-09-07 13:40
2018.10.21
чтение запись строки из файла


2-1473077853
валя
2016-09-05 15:17
2018.10.21
указатели