xml
Добавлено: 09 июл 2009, 13:37
У кого-нибудь есть пример VIP как получить данные из файла xml...
Обсуждение различных вопросов, связанных с сопровождением, администрированием и программированием
https://ns1.tyumbit.ru/
Код: Выделить всё
/*
╔═══════════════════════════════════════════════════════════════════════════╗
║ (c) 1994,2002 корпорация ГАЛАКТИКА ║
║ Система : ГАЛАКТИКА ║
║ Проект : Бухгалтерский контур ║
║ Версия : 5.84 ║
║ Назначение : Внешние процедуры и функции из G_ExpImp.dll ║
║ Ответственный : Ярошук Дмитрий Леонидович (Smile) ║
╚═══════════════════════════════════════════════════════════════════════════╝
*/
//------------------------------------------------------------------------------
// TableInfo.pas
function GetRecordsInTable (Word) : longint; external 'G_ExpImp.dll';
function GetRecordSize (Word) : longint; external 'G_ExpImp.dll';
Function ScanTable (word) : longInt; external 'G_ExpImp.dll';
//------------------------------------------------------------------------------
// ieLib.pas
function TemporaryDirectory : string; external 'G_ExpImp.dll';
procedure GetFileInfo ( string, var date, var time, var longint ); external 'G_ExpImp.dll';
function SaveTuneToFile ( comp, string ) : boolean; external 'G_ExpImp.dll';
function RestoreTuneFromFile ( string, word, word ) : comp; external 'G_ExpImp.dll';
function IsEmptyMemo ( var anytype ) : boolean; external 'G_ExpImp.dll';
function ExtractFormName ( string ) : string; external 'G_ExpImp.dll';
function LoadResource ( string ) : boolean; external 'G_ExpImp.dll';
function ieTextFormInit ( comp, string ) : integer; external 'G_ExpImp.dll';
procedure ieTextFormDone; external 'G_ExpImp.dll';
function ieTextFormFindFirstRecord ( boolean ) : boolean; external 'G_ExpImp.dll';
function ieTextFormFindNextRecord ( boolean ) : boolean; external 'G_ExpImp.dll';
function ieTextFormImportField ( boolean, word, var anytype ) : boolean; external 'G_ExpImp.dll';
function ieTextFormSetFileName ( string ) : boolean; external 'G_ExpImp.dll';
function ieTextFormValidTopology ( comp ) : boolean; external 'G_ExpImp.dll';
function ieTextFormNumberOfRecords : longint; external 'G_ExpImp.dll';
function GroupOfWords ( string, string ) : string; external 'G_ExpImp.dll';
function GroupOfWordsFrom ( string, string, string, string, string, string ) : string; external 'G_ExpImp.dll';
function GroupOfWordsRem ( string, string ) : string; external 'G_ExpImp.dll';
function GroupOfWordsFromRem ( string, string, string, string, string, string ) : string; external 'G_ExpImp.dll';
function GetBoundedSubString ( string, char, char, byte ) : string; external 'G_ExpImp.dll';
function UndoFileName ( string ) : string; external 'G_ExpImp.dll';
function CurrencyName ( comp ) : string; external 'G_ExpImp.dll';
function DelClassVal ( boolean ) : integer; external 'G_ExpImp.dll';
function DelAttrVal ( boolean ) : integer; external 'G_ExpImp.dll';
function FileExist ( string ) : boolean; external 'G_ExpImp.dll';
function IsDirectory ( string ) : boolean; external 'G_ExpImp.dll';
function CreateUniqueFileName ( string ) : string; external 'G_ExpImp.dll';
function AddSlashToPath ( string ) : string; external 'G_ExpImp.dll';
function VerifyPathName ( string , boolean) : boolean; external 'G_ExpImp.dll';
function StartPathName : string; external 'G_ExpImp.dll';
function ExtractDelimitedWord ( string, byte, string ) : string; external 'G_ExpImp.dll';
//------------------------------------------------------------------------------
// Xml_Func.pas
function XML_New : longint; external 'G_ExpImp.dll';
function XML_LoadDoc (longint, string) : boolean; external 'G_ExpImp.dll';
function XML_FindFirstDoc (longint, longint, comp, comp) : longint; external 'G_ExpImp.dll';
function XML_FindNextDoc (longint, longint, comp, comp) : longint; external 'G_ExpImp.dll';
function ImportXMLField (longint, comp, longint, comp) : string; external 'G_ExpImp.dll';
function XML_Done (longint) : boolean; external 'G_ExpImp.dll';
function InitXML_Doc (longint, comp) : longint; external 'G_ExpImp.dll';
function XML_NewNode (longint, longint, longint ,string) : longint; external 'G_ExpImp.dll';
function ExportXMLField (longint, longint, comp ,string) : boolean; external 'G_ExpImp.dll';
function XML_SaveAs (longint, longint, longint ,longint, string) : boolean; external 'G_ExpImp.dll';
function XML_FillMeta (longint, comp) : boolean; external 'G_ExpImp.dll';
function XML_GetRoot (longint) : longint; external 'G_ExpImp.dll';
function XML_Release (longint) : boolean; external 'G_ExpImp.dll';
//------------------------------------------------------------------------------
// XMLDOMFunc.pas
function XMLDOMDoc_New : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_Load (longint, string) : boolean; external 'G_ExpImp.dll';
function XMLDOMDoc_Save (longint, string) : boolean; external 'G_ExpImp.dll';
function XMLDOMDoc_DocumentElement (longint) : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateNode (longint, integer, string) : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateAttribute (longint, string) : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateCDataSection (longint, string) : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateComment (longint, string) : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateDocumentFragment (longint) : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateElement (longint, string) : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateEntityReference (longint, string) : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateProcessingInstruction (longint, string, string) : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateTextNode (longint, string) : longint; external 'G_ExpImp.dll';
function XMLDOMAttribute_get_NodeValue (longint) : string; external 'G_ExpImp.dll';
function XMLDOMAttribute_set_NodeValue (longint, string) : boolean; external 'G_ExpImp.dll';
function XMLDOMCDataSection_AppendData (longint, string) : boolean; external 'G_ExpImp.dll';
function XMLDOMCDataSection_get_Length (longint) : longint; external 'G_ExpImp.dll';
function XMLDOMCDataSection_get_NodeValue (longint) : string; external 'G_ExpImp.dll';
function XMLDOMCDataSection_set_NodeValue (longint, string) : boolean; external 'G_ExpImp.dll';
function XMLDOMCDataSection_SubstringData (longint, longint, longint) : string; external 'G_ExpImp.dll';
function XMLDOMElement_SetAttribute (longint, string, string) : boolean; external 'G_ExpImp.dll';
function XMLDOMNode_AppendChild (longint, longint) : longint; external 'G_ExpImp.dll';
function XMLDOMNode_get_Attributes (longint) : longint; external 'G_ExpImp.dll';
function XMLDOMNode_get_ChildNodes (longint) : longint; external 'G_ExpImp.dll';
function XMLDOMNode_get_NodeType (longint) : integer; external 'G_ExpImp.dll';
function XMLDOMNode_get_NodeName (longint) : string; external 'G_ExpImp.dll';
function XMLDOMNode_Release (longint) : boolean; external 'G_ExpImp.dll';
function XMLDOMNamedNodeMap_get_Length (longint) : longint; external 'G_ExpImp.dll';
function XMLDOMNamedNodeMap_get_Item (longint, longint) : longint; external 'G_ExpImp.dll';
function XMLDOMNodeList_get_Length (longint) : longint; external 'G_ExpImp.dll';
function XMLDOMNodeList_get_Item (longint, longint) : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_GetElementsByTagName (longint, string) : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_Done (longint) : boolean; external 'G_ExpImp.dll';
//------------------------------------------------------------------------------
function InitMAPIMessage : longint; external 'G_ExpImp.dll';
function DoneMAPIMessage(longint) : boolean; external 'G_ExpImp.dll';
function SetMAPIMessageSubject(string, longint) : boolean; external 'G_ExpImp.dll';
function SetMAPIMessageType(string, longint) : boolean; external 'G_ExpImp.dll';
function AddStringToMailBody(string, longint) : boolean; external 'G_ExpImp.dll';
function AddRecipientToMail(string, string, longint) : boolean; external 'G_ExpImp.dll';
function AddAttachedFileToMail(string, string, longint) : boolean; external 'G_ExpImp.dll';
function SendGalMail(longint) : longint; external 'G_ExpImp.dll';
function GetOsVersion : string; external 'G_ExpImp.dll';
function _sGetPrivProf(string, string, string): string; external 'G_ExpImp.dll';
function _lGetPrivProf(string, string, string): Longint; external 'G_ExpImp.dll';
procedure _WritePrivateProfileString(string, string, string, string); external 'G_ExpImp.dll';
#ifdef GAL8_1
function Init_TableBufferService(var AnyType) : longint; external 'G_ExpImp.dll';
procedure Done_TableBufferService(longint); external 'G_ExpImp.dll';
function Get_TableBuffer(longint, var AnyType) : boolean; external 'G_ExpImp.dll';
function Set_TableField(longint, var AnyType, word, word) : boolean; external 'G_ExpImp.dll';
#endif
//------------------------------------------------------------------------------
// ieFileFinder.pas
function FindFirstFile ( string , var anytype ) : boolean; external 'G_ExpImp.dll';
function FindNextFile ( var anytype ) : boolean; external 'G_ExpImp.dll';
function FindFirstFileCli ( string , var anytype ) : boolean; external 'G_ExpImp.dll';
function FindNextFileCli ( var anytype ) : boolean; external 'G_ExpImp.dll';
procedure DoneFileFinderCli; external 'G_ExpImp.dll';
//------------------------------------------------------------------------------
// FastExpImp.pas
procedure FastExp(string); external 'G_ExpImp.dll';
procedure FastImp(string); external 'G_ExpImp.dll';
Код: Выделить всё
function ImpXML(sFileXML: String): Boolean;
{
var C_F, C_P: Comp;
var xmlDocID: LongInt; //<Документ>
//<ALGDATASET>
var xmlTblID_Alg: LongInt;
var xmlTblID_Alg_Nodes, xmlTblID_Alg_NodesCount, xmlTblID_Alg_NodesI: LongInt;
//<ALGROW>
var xmlRowID_Alg: LongInt;
var xmlRowID_Alg_Nodes, xmlRowID_Alg_NodesCount, xmlRowID_Alg_NodesI: LongInt;
//<ALGID><ALGDESCR><ALGDATE><ALGCODE><ALGNAME><WORKERSDATASET>
var xmlRowID_Alg_SubNodes: LongInt;
var SetAlgBuf: TSetAlgBuf;
var cAlgNastr: Comp;
//<WORKERSDATASET>
var xmlTblID_Workers_Nodes, xmlTblID_Workers_NodesCount, xmlTblID_Workers_NodesI: LongInt;
//<WORKERSROW>
var xmlRowID_Wr: LongInt;
var xmlRowID_Wr_Nodes, xmlRowID_Wr_NodesCount, xmlRowID_Wr_NodesI: LongInt
////<WORKERSALGID><WORKERSTREJIM><WORKERSTWORKER><NORMFUNCDATASET><NORMPROCDATASET><ADMFUNCDATASET><ADMPROCDATASET>
var xmlRowID_Wr_SubNodes: LongInt;
var SetWorkersBuf: TSetWorkersBuf;
var cAlgWorkers: Comp;
//<NORMFUNCDATASET>
var xmlTblID_NF_Nodes, xmlTblID_NF_NodesCount, xmlTblID_NF_NodesI: LongInt;
//<NORMFUNCROW>
var xmlRowID_NF: LongInt;
var xmlRowID_NF_Nodes, xmlRowID_NF_NodesCount, xmlRowID_NF_NodesI: LongInt;
//<NORMFUNCID><NORMFUNCDESCR><NORMFUNCDATE><NORMFUNCNO><NORMFUNCFUNC><NORMFUNCNOTE>
var xmlRowID_NF_SubNodes: LongInt;
//<NORMPROCROW>
var xmlRowID_NP: LongInt;
var xmlRowID_NP_Nodes, xmlRowID_NP_NodesCount, xmlRowID_NP_NodesI: LongInt;
//<NORMPROCID><NORMPROCDESCR><NORMPROCDATE><NORMPROCNO><NORMPROCIF><NORMPROCT><NORMPROCF>
var xmlRowID_NP_SubNodes: LongInt;
var SetNFBuf: TSetFBuf;
var SetNPBuf: TSetPBuf;
var cRecNF: Comp;
#declare dclFunc(c_F, c_P, RowName, FuncNo, FuncFunc, FuncNote)
if SetWorkersBuf.bIns
{
cAlgWorkers := InsertWorkersBuf(SetWorkersBuf);
if cAlgWorkers = Comp(0) continue;
SetWorkersBuf.bIns := false;
}
xmlTblID_NF_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_Wr_SubNodes);
if xmlTblID_NF_Nodes <> 0
{
CurrentF := #c_F;
CurrentP := #c_P;
AlgNastrChange;
xmlTblID_NF_NodesCount := XMLDOMNodeList_Get_Length(xmlTblID_NF_Nodes);
for (xmlTblID_NF_NodesI := 0;
xmlTblID_NF_NodesI < xmlTblID_NF_NodesCount;
xmlTblID_NF_NodesI++)
{
xmlRowID_NF := XMLDOMNodeList_Get_Item(xmlTblID_NF_Nodes, xmlTblID_NF_NodesI);
if xmlRowID_NF <> 0
{
if #RowName = XMLDOMNode_Get_NodeName(xmlRowID_NF)
{
xmlRowID_NF_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_NF);
if xmlRowID_NF_Nodes <> 0
{
xmlRowID_NF_NodesCount := XMLDOMNodeList_Get_Length(xmlRowID_NF_Nodes);
//<NORMFUNCID><NORMFUNCDESCR><NORMFUNCDATE><NORMFUNCNO><NORMFUNCFUNC><NORMFUNCNOTE>
ClearAdvRecord(SetNFBuf);
for (xmlRowID_NF_NodesI := 0;
xmlRowID_NF_NodesI < xmlRowID_NF_NodesCount;
xmlRowID_NF_NodesI++)
{
xmlRowID_NF_SubNodes := XMLDOMNodeList_Get_Item(xmlRowID_NF_Nodes, xmlRowID_NF_NodesI);
if xmlRowID_NF_SubNodes <> 0
{
case XMLDOMNode_Get_NodeName(xmlRowID_NF_SubNodes) of
// 'NORMFUNCID':
// 'NORMFUNCDESCR':
// 'NORMFUNCDATE':
#FuncNo:
{
SetNFBuf.bIns := true;
SetNFBuf.No := Word(GetValueFld(xmlRowID_NF_SubNodes));
}
#FuncFunc:
{
SetNFBuf.bIns := true;
SetNFBuf.AlgFunc := GetValueFld(xmlRowID_NF_SubNodes);
}
#FuncNote:
{
SetNFBuf.bIns := true;
SetNFBuf.AlgNote := GetValueFld(xmlRowID_NF_SubNodes);
}
end;
XMLDOMNode_Release(xmlRowID_NF_SubNodes);
}
}
if SetNFBuf.bIns
{
cRecNF := InsertFBuf(SetNFBuf);
}
XMLDOMNode_Release(xmlRowID_NF_Nodes);
}
}
XMLDOMNode_Release(xmlRowID_NF);
}
}
XMLDOMNode_Release(xmlTblID_NF_Nodes);
}
#end
#declare dclProc(c_F, c_P, RowName, FuncNo, FuncIf, FuncT, FuncF, FuncNote)
if SetWorkersBuf.bIns
{
cAlgWorkers := InsertWorkersBuf(SetWorkersBuf);
if cAlgWorkers = Comp(0) continue;
SetWorkersBuf.bIns := false;
}
xmlTblID_NF_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_Wr_SubNodes);
if xmlTblID_NF_Nodes <> 0
{
CurrentF := #c_F;
CurrentP := #c_P;
AlgNastrChange;
xmlTblID_NF_NodesCount := XMLDOMNodeList_Get_Length(xmlTblID_NF_Nodes);
for (xmlTblID_NF_NodesI := 0;
xmlTblID_NF_NodesI < xmlTblID_NF_NodesCount;
xmlTblID_NF_NodesI++)
{
xmlRowID_NF := XMLDOMNodeList_Get_Item(xmlTblID_NF_Nodes, xmlTblID_NF_NodesI);
if xmlRowID_NF <> 0
{
if #RowName = XMLDOMNode_Get_NodeName(xmlRowID_NF)
{
xmlRowID_NF_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_NF);
if xmlRowID_NF_Nodes <> 0
{
xmlRowID_NF_NodesCount := XMLDOMNodeList_Get_Length(xmlRowID_NF_Nodes);
//<NORMFUNCID><NORMFUNCDESCR><NORMFUNCDATE><NORMFUNCNO><NORMFUNCFUNC><NORMFUNCNOTE>
ClearAdvRecord(SetNPBuf);
for (xmlRowID_NF_NodesI := 0;
xmlRowID_NF_NodesI < xmlRowID_NF_NodesCount;
xmlRowID_NF_NodesI++)
{
xmlRowID_NF_SubNodes := XMLDOMNodeList_Get_Item(xmlRowID_NF_Nodes, xmlRowID_NF_NodesI);
if xmlRowID_NF_SubNodes <> 0
{
case XMLDOMNode_Get_NodeName(xmlRowID_NF_SubNodes) of
// 'NORMFUNCID':
// 'NORMFUNCDESCR':
// 'NORMFUNCDATE':
#FuncNo:
{
SetNPBuf.bIns := true;
SetNPBuf.No := Word(GetValueFld(xmlRowID_NF_SubNodes));
}
#FuncIf:
{
SetNPBuf.bIns := true;
SetNPBuf.AlgIf := GetValueFld(xmlRowID_NF_SubNodes);
}
#FuncT:
{
SetNPBuf.bIns := true;
SetNPBuf.AlgT := GetValueFld(xmlRowID_NF_SubNodes);
}
#FuncF:
{
SetNPBuf.bIns := true;
SetNPBuf.AlgF := GetValueFld(xmlRowID_NF_SubNodes);
}
#FuncNote:
{
SetNPBuf.bIns := true;
SetNPBuf.AlgNote := GetValueFld(xmlRowID_NF_SubNodes);
}
end;
XMLDOMNode_Release(xmlRowID_NF_SubNodes);
}
}
if SetNPBuf.bIns
{
cRecNF := InsertPBuf(SetNPBuf);
}
XMLDOMNode_Release(xmlRowID_NF_Nodes);
}
}
XMLDOMNode_Release(xmlRowID_NF);
}
}
XMLDOMNode_Release(xmlTblID_NF_Nodes);
}
#end
_try
{
StartNewVisual(vtRotateVisual, vfTimer, 'Импорт...', 10);
C_F := CurrentF;
C_P := CurrentP;
xmlDocID := XMLOpenDoc(sFileXML);
if xmlDocID = 0
{
Message('Ошибка открытия XML:"' + sFileXML + '"', Error);
_raise excXML_IE;
}
xmlTblID_Alg := myxml_GetNode(xmlDocID, 'ALGDATASET');
if xmlTblID_Alg = 0 // нет корневого элемента
{
Message('Ошибка чтения таблицы ALGDATASET', Error);
XMLDOMDoc_Done(xmlDocID);
_raise excXML_IE;
}
xmlTblID_Alg_Nodes := XMLDOMNode_Get_ChildNodes(xmlTblID_Alg);
if xmlTblID_Alg_Nodes <> 0
{
xmlTblID_Alg_NodesCount := XMLDOMNodeList_Get_Length(xmlTblID_Alg_Nodes);
for (xmlTblID_Alg_NodesI := 0;
xmlTblID_Alg_NodesI < xmlTblID_Alg_NodesCount;
xmlTblID_Alg_NodesI++) //<ALGROW>
{
xmlRowID_Alg := XMLDOMNodeList_Get_Item(xmlTblID_Alg_Nodes, xmlTblID_Alg_NodesI);
if xmlRowID_Alg <> 0
{
if 'ALGROW' = XMLDOMNode_Get_NodeName(xmlRowID_Alg)
{
xmlRowID_Alg_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_Alg);
if xmlRowID_Alg_Nodes <> 0
{
xmlRowID_Alg_NodesCount := XMLDOMNodeList_Get_Length(xmlRowID_Alg_Nodes);
//<ALGID><ALGDESCR><ALGDATE><ALGCODE><ALGNAME><WORKERSDATASET>
ClearAdvRecord(SetAlgBuf);
for (xmlRowID_Alg_NodesI := 0;
xmlRowID_Alg_NodesI < xmlRowID_Alg_NodesCount;
xmlRowID_Alg_NodesI++)
{
xmlRowID_Alg_SubNodes := XMLDOMNodeList_Get_Item(xmlRowID_Alg_Nodes, xmlRowID_Alg_NodesI);
if xmlRowID_Alg_SubNodes <> 0
{
case XMLDOMNode_Get_NodeName(xmlRowID_Alg_SubNodes) of
// 'ALGID':
// 'ALGDESCR':
// 'ALGDATE':
'ALGCODE':
{
SetAlgBuf.bIns := true;
SetAlgBuf.Code := Word(GetValueFld(xmlRowID_Alg_SubNodes));
#ifdef __MF_DEBUG__
#LogS('ALGCODE ' + GetValueFld(xmlRowID_Alg_SubNodes));
#end
}
'ALGNAME':
{
SetAlgBuf.bIns := true;
SetAlgBuf.Name := GetValueFld(xmlRowID_Alg_SubNodes);
#ifdef __MF_DEBUG__
#LogS('ALGNAME ' + GetValueFld(xmlRowID_Alg_SubNodes));
#end
}
'WORKERSDATASET':
{
if not SetAlgBuf.bIns continue;
cAlgNastr := InsertAlgBuf(SetAlgBuf);
if cAlgNastr = Comp(0) continue;
xmlTblID_Workers_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_Alg_SubNodes);
if xmlTblID_Workers_Nodes <> 0
{
xmlTblID_Workers_NodesCount := XMLDOMNodeList_Get_Length(xmlTblID_Workers_Nodes);
for (xmlTblID_Workers_NodesI := 0;
xmlTblID_Workers_NodesI < xmlTblID_Workers_NodesCount;
xmlTblID_Workers_NodesI++)
{
xmlRowID_Wr := XMLDOMNodeList_Get_Item(xmlTblID_Workers_Nodes, xmlTblID_Workers_NodesI);
if xmlRowID_Wr <> 0
{
if 'WORKERSROW' = XMLDOMNode_Get_NodeName(xmlRowID_Wr)
{
xmlRowID_Wr_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_Wr);
if xmlRowID_Wr_Nodes <> 0
{
xmlRowID_Wr_NodesCount := XMLDOMNodeList_Get_Length(xmlRowID_Wr_Nodes);
//<WORKERSALGID><WORKERSTREJIM><WORKERSTWORKER><NORMFUNCDATASET><NORMPROCDATASET><ADMFUNCDATASET><ADMPROCDATASET>
ClearAdvRecord(SetWorkersBuf);
for (xmlRowID_Wr_NodesI := 0;
xmlRowID_Wr_NodesI < xmlRowID_Wr_NodesCount;
xmlRowID_Wr_NodesI++)
{
xmlRowID_Wr_SubNodes := XMLDOMNodeList_Get_Item(xmlRowID_Wr_Nodes, xmlRowID_Wr_NodesI);
if xmlRowID_Wr_SubNodes <> 0
{
case XMLDOMNode_Get_NodeName(xmlRowID_Wr_SubNodes) of
// 'WORKERSALGID':
'WORKERSTREJIM':
{
SetWorkersBuf.bIns := true;
SetWorkersBuf.TRegimName := GetValueFld(xmlRowID_Wr_SubNodes);
#ifdef __MF_DEBUG__
#LogS('WORKERSTREJIM ' + GetValueFld(xmlRowID_Wr_SubNodes));
#end
}
// 'WORKERSTREJCOD':
'WORKERSTWORKER':
{
SetWorkersBuf.bIns := true;
SetWorkersBuf.TWorkerName := GetValueFld(xmlRowID_Wr_SubNodes);
#ifdef __MF_DEBUG__
#LogS('WORKERSTWORKER ' + GetValueFld(xmlRowID_Wr_SubNodes));
#end
}
// 'WORKERSTWORCOD':
'NORMFUNCDATASET':
{
#dclFunc(c_NF, c_NP, 'NORMFUNCROW', 'NORMFUNCNO', 'NORMFUNCFUNC', 'NORMFUNCNOTE')
}
'NORMPROCDATASET':
{
#dclProc(c_NF, c_NP, 'NORMPROCROW', 'NORMPROCNO', 'NORMPROCIF', 'NORMPROCT', 'NORMPROCF', 'NORMPROCNOTE')
}
'ADMFUNCDATASET':
{
#dclFunc(c_UF, c_UP, 'ADMFUNCROW', 'ADMFUNCNO', 'ADMFUNCFUNC', 'ADMFUNCNOTE')
}
'ADMPROCDATASET':
{
#dclProc(c_UF, c_UP, 'ADMPROCROW', 'ADMPROCNO', 'ADMPROCIF', 'ADMPROCT', 'ADMPROCF', 'ADMPROCNOTE')
}
end;
XMLDOMNode_Release(xmlRowID_Wr_SubNodes);
}
}
XMLDOMNode_Release(xmlRowID_Wr_Nodes);
}
}
XMLDOMNode_Release(xmlRowID_Wr);
}
}
XMLDOMNode_Release(xmlTblID_Workers_Nodes);
}
}
end;
XMLDOMNode_Release(xmlRowID_Alg_SubNodes);
}
}
XMLDOMNode_Release(xmlRowID_Alg_Nodes);
}
}
XMLDOMNode_Release(xmlRowID_Alg);
}
}
XMLDOMNode_Release(xmlTblID_Alg_Nodes);
}
XMLDOMDoc_Done(xmlDocID);
}
_except
on excXML_IE:
{
}
_finally
{
CurrentF := c_F;
CurrentP := c_P;
AlgNastrChange;
RescanPanel(tnAlgNastr);
StopVisual('', 0);
}
}
Код: Выделить всё
// Xml_Func.pas
function XML_New : longint; external 'G_ExpImp.dll';
function XML_LoadDoc (longint, string) : boolean; external 'G_ExpImp.dll';
function XML_FindFirstDoc (longint, longint, comp, comp) : longint; external 'G_ExpImp.dll';
function XML_FindNextDoc (longint, longint, comp, comp) : longint; external 'G_ExpImp.dll';
function ImportXMLField (longint, comp, longint, comp) : string; external 'G_ExpImp.dll';
function XML_Done (longint) : boolean; external 'G_ExpImp.dll';
function InitXML_Doc (longint, comp) : longint; external 'G_ExpImp.dll';
function XML_NewNode (longint, longint, longint ,string) : longint; external 'G_ExpImp.dll';
function ExportXMLField (longint, longint, comp ,string) : boolean; external 'G_ExpImp.dll';
function XML_SaveAs (longint, longint, longint ,longint, string) : boolean; external 'G_ExpImp.dll';
function XML_FillMeta (longint, comp) : boolean; external 'G_ExpImp.dll';
function XML_GetRoot (longint) : longint; external 'G_ExpImp.dll';
function XML_Release (longint) : boolean; external 'G_ExpImp.dll';
Код: Выделить всё
procedure myxml_getNode(xml_src:longint;nodename:string):longint;
{
var hnd,nodelist,lnodelist: longint;
hnd:=0;
nodelist:=XMLDOMDoc_GetElementsByTagName(xml_src, nodename);
if(nodelist<>0)
{
lnodelist:=XMLDOMNodeList_get_Length(nodelist);
if(lnodelist=1)
{
hnd:=XMLDOMNodeList_get_Item(nodelist, 0);
}
XMLDOMNode_Release(nodelist);
}
myxml_getNode:=hnd;
}
function GetValueFld(xml_pnar: LongInt): String;
{
var nodes: LongInt;
var lCount: LongInt;
var Item: LongInt;
GetValueFld := '';
nodes := XMLDOMNode_get_ChildNodes(xml_pnar);
if nodes <> 0
{
lCount := XMLDOMNodeList_Get_Length(nodes);
if lCount = 1
{
Item := XMLDOMNodeList_Get_Item(nodes, 0);
GetValueFld := XMLDOMAttribute_Get_NodeValue(Item);
}
XMLDOMNode_Release(nodes);
}
}