Paladyno 0 Denunciar post Postado Abril 28, 2008 Gente, estou escrevendo uma DLL e não consigo fazer a chamada de uma função que possui como parametro uma variavel do tipo IXMLNode. DLL: library Update; uses SysUtils, Classes, XMLIntf; {$R *.res} function Copia(Node: IXMLNode; Const Mover: Boolean = false): Boolean; var Path: String; Origem, Destino: File of byte; Lido, Escrito: Integer; Buffer: array[1..2048]of Char; begin try Path := ExtractFilePath(Node.ChildNodes[2].NodeValue); if not DirectoryExists(Path) then CreateDir(Path); AssignFile(Origem, Node.ChildNodes[1].NodeValue); AssignFile(Destino, Node.ChildNodes[2].NodeValue); Reset(Origem); Rewrite(Destino); repeat BlockRead(Origem, Buffer, SizeOf(Buffer), Lido); BlockWrite(Destino, Buffer, Lido, Escrito); until (Lido = 0) or (Lido <> Escrito); CloseFile(Origem); CloseFile(Destino); Result := True; except Result := false; Exit; end; if Mover then Result := DeleteFile(Node.ChildNodes[1].NodeValue); Result := Result and True; end; function Tratamento(Node: IXMLNode): Boolean; begin Result := True; try Case StrToIntDef(Node.AttributeNodes[0].NodeValue, 0) of 1: Result := Copia(Node); 2: Result := Copia(Node, True); end; except Result := False; end; Result := Result and True; end; exports Tratamento; begin end. Chamada: ... var Funcao: function(Node: IXMLNode): Boolean;// DLL: THandle; ... begin ... DLL := LoadLibrary('Update.DLL'); if DLL <> 0 then begin @Funcao := GetProcAddress(DLL, 'Tratamento'); if @Funcao <> nil then Funcao(Node); FreeLibrary(DLL); end;Node do XML: <arquivo id="1"> <nome>ITEM</nome> <MIME>application/octet-stream</MIME> <tratamento tipo="01"> <execute>Copiando</execute> <origem>C:\Update.dll</origem> <destino>C:\Update2.dll</destino> </tratamento> </arquivo>Quando testei chamando uma função sem parametros deu certo. Alguém poderia me dar uma ajuda? Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Thomaz 0 Denunciar post Postado Abril 29, 2008 Qual mensagem de erro? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Abril 30, 2008 A variável NODE que você possui qual é o tipo dela ? Você declarou ela assim ? var nodo: IXMLNode; No uses ainda precisa ter: xmldom, XMLIntf, msxmldom, XMLDoc Compartilhar este post Link para o post Compartilhar em outros sites