В разделе приведено описание пользовательского алгоритма получения данных, реализованного в виде класса MyDtCustomProvider на языках Fore и Fore.NET.
Данные загружаются из текстового файла «C:\Data_Out.txt».

Класс MyDtCustomProvider на языке Fore
Добавьте ссылки на системные сборки: Dt, Xml.
Public Class MyDtCustomProvider: object, IDtCustomProvider
p: IDtTextProvider;
m_active: boolean;
fs: IDtFieldDefinitions;
Public Constructor MyDtCustomProvider;
Begin
m_Active := False;
End Constructor MyDtCustomProvider;
Public Property Fields: IDtFieldDefinitions
Get
Begin
Return p.Fields;
End Get
End Property Fields;
Public Property Active: Boolean
Get
Begin
Return m_Active;
End Get
End Property Active;
Public Sub Open;
Begin
m_Active := True;
If p = Null Then
p := New DtTextProvider.Create;
End If;
p.File := "C:\Data_Out.txt";
p.RangeHasHeader := True;
p.Open;
FieldsFromFile;
End Sub Open;
Public Sub Close;
Begin
m_Active := False;
End Sub Close;
Public Sub Save(Element: IXMLDOMElement);
Begin
p.Save(Element);
End Sub Save;
Public Sub Load(Element: IXMLDOMElement);
Begin
If p = Null Then
p := New DtTextProvider.Create;
End If;
p.Load(Element);
End Sub Load;
Public Sub FieldsFromFile;
Begin
p.FieldsFromFile;
End Sub FieldsFromFile;
Public Property GetType: DtObjectType
Get
Begin
Return DtObjectType.TDtExcelProvider;
End Get
End Property GetType;
Public Sub ClearFields;
Begin
p.ClearFields;
End Sub ClearFields;
Public Sub Fetch(Var Values: Array);
Begin
p.Fetch(Values);
End Sub Fetch;
Public Function FetchRows(Count: Integer; Var Values: Array): Integer;
Var
i: Integer;
Begin
i := p.FetchRows(Count, Values);
Return i;
End Function FetchRows;
Public Function ReadingRowsCount: Integer;
Begin
Return p.ReadingRowsCount;
End Function ReadingRowsCount;
Public Function ImplementFetchRows: Boolean;
Begin
Return True;
End Function ImplementFetchRows;
Public Property Eof: Boolean
Get
Begin
Return p.Eof;
End Get
End Property Eof;
Function Get_EOF: Boolean;
Begin
Return p.Eof;
End Function Get_EOF;
Function get_fields: IDtFieldDefinitions;
Begin
If fs = Null Then
fs := p.Fields;
End If;
Return fs;
End Function get_fields;
Function get_active: boolean;
Begin
Return m_Active;
End Function get_active;
Function get_getType: dtobjecttype;
Begin
Return dtobjecttype.TDtUserProviderEx
End Function get_getType;
End Class MyDtCustomProvider;

Класс MyDtCustomProvider на языке Fore.NET
Imports Prognoz.Platform.Interop.Dt;
Imports Prognoz.Platform.Interop.MsXml2;
Public Class MyDtCustomProvider: object, IDtCustomProvider
p: IDtTextProvider;
m_active: boolean;
fs: IDtFieldDefinitions;
Public Constructor MyDtCustomProvider();
Begin
m_Active := False;
End Constructor MyDtCustomProvider;
Public Property Fields: DtFieldDefinitions
Get
Begin
Return p.Fields;
End Get
End Property Fields;
Public Property Active: Boolean
Get
Begin
Return m_Active;
End Get
End Property Active;
Public Sub Open();
Begin
m_Active := True;
If p = Null Then
p := New DtTextProvider.Create();
End If;
p.File := "C:\Data_Out.txt";
p.RangeHasHeader := True;
p.Open();
FieldsFromFile();
End Sub Open;
Public Sub Close();
Begin
m_Active := False;
End Sub Close;
Public Sub Save(Element: IXMLDOMElement);
Begin
p.Save(Element);
End Sub Save;
Public Sub Load(Element: IXMLDOMElement);
Begin
If p = Null Then
p := New DtTextProvider.Create();
End If;
p.Load(Element);
End Sub Load;
Public Sub FieldsFromFile();
Begin
p.FieldsFromFile();
End Sub FieldsFromFile;
Public Property GetType: DtObjectType
Get
Begin
Return DtObjectType.TDtExcelProvider;
End Get
End Property GetType;
Public Sub ClearFields();
Begin
p.ClearFields();
End Sub ClearFields;
Public Sub Fetch(Var Values: Array);
Begin
p.Fetch(Var Values);
End Sub Fetch;
Public Function FetchRows(Count: Integer; Var Values: Array): Integer;
Var
i: Integer;
Begin
i := p.FetchRows(Count, Var Values);
Return i;
End Function FetchRows;
Public Function ReadingRowsCount(): Integer;
Begin
Return p.ReadingRowsCount();
End Function ReadingRowsCount;
Public Function ImplementFetchRows(): Boolean;
Begin
Return True;
End Function ImplementFetchRows;
Public Property Eof: Boolean
Get
Begin
Return p.Eof;
End Get
End Property Eof;
End Class MyDtCustomProvider;
См. также: