Dúvida com Threads e XML
Pessoal,
Estou trabalhando com Threads e XML no Delphi XE.
Segue meu código completo com a dúvida logo abaixo dele:
A parte que tenho dúvida é está:
Aqui a thread aparentemente para, posso até pedir outra sem problemas que vejo no console do delphi ela abrindo e recebendo novo ID, porém, ñ acontece nada com nenhuma das abertas.
Alguém pode me ajudar?
Eduardo Ludgero
Estou trabalhando com Threads e XML no Delphi XE.
Segue meu código completo com a dúvida logo abaixo dele:
unit Unit2;
interface
uses
Classes, ComCtrls, xmldom, XMLIntf, msxmldom, XMLDoc, ActiveX, SysUtils;
type
TestThread = class(TThread)
private
FProgressBar: TProgressBar;
FLista: TStrings;
FDataI: TDateTime;
FDataF: TDateTime;
Percent: Integer;
procedure UpdateProgress;
protected
procedure Execute; override;
public
constructor Create(CreateSuspended: Boolean; ProgressBar: TProgressBar;
lista: TStrings; dataI, dataF: TDateTime); reintroduce;
end;
implementation
{ TestThread }
constructor TestThread.Create(CreateSuspended: Boolean;
ProgressBar: TProgressBar; lista: TStrings; dataI, dataF: TDateTime);
begin
FProgressBar := ProgressBar;
FLista := lista;
FDataI := dataI;
FDataF := dataF;
inherited Create(CreateSuspended);
end;
procedure TestThread.Execute;
var
i: Integer;
XMLNFe: TXMLDocument;
NodePai, NodeFilho, NodeSec, NodeTemp, NodeEmitente: IXMLNode;
begin
FProgressBar.Min := 0;
FProgressBar.Max := FLista.Count;
try
for i := 0 to FLista.Count do
begin
CoInitialize(nil);
Percent := i;
Synchronize(UpdateProgress);
XMLNFe := TXMLDocument.Create(nil);
XMLNFe.ParseOptions:= [poResolveExternals, poValidateOnParse];
XMLNFe.LoadFromFile(FLista[i]);
XMLNFe.Active := True;
NodePai := XMLNFe.DocumentElement.ChildNodes.First;
if (NodePai.NodeName = NFe) then
begin
NodeFilho := NodePai.ChildNodes.FindNode(infNFe);
NodeSec := NodeFilho.ChildNodes[ide];
end;
end;
finally
XMLNFe.Active := False;
FLista.Free;
CoUninitialize;
end;
end;
procedure TestThread.UpdateProgress;
begin
FProgressBar.Position := Percent;
end;
end.A parte que tenho dúvida é está:
NodePai := XMLNFe.DocumentElement.ChildNodes.First;
Aqui a thread aparentemente para, posso até pedir outra sem problemas que vejo no console do delphi ela abrindo e recebendo novo ID, porém, ñ acontece nada com nenhuma das abertas.
Alguém pode me ajudar?
Eduardo Ludgero
Eduardo Ludgero
Curtidas 0
Respostas
Eduardo Ludgero
15/02/2012
Pessoal,
Já resolvi!
Declarei Form no Uses da Classe Thread e na hora de Criar o XMLDocument em vez de nil passei Application.
Obrigado...
Já resolvi!
Declarei Form no Uses da Classe Thread e na hora de Criar o XMLDocument em vez de nil passei Application.
Obrigado...
GOSTEI 0
Marco Salles
15/02/2012
Pessoal,
Já resolvi!
Declarei Form no Uses da Classe Thread e na hora de Criar o XMLDocument em vez de nil passei Application.
Obrigado...
Já resolvi!
Declarei Form no Uses da Classe Thread e na hora de Criar o XMLDocument em vez de nil passei Application.
Obrigado...
Obrigado por compartilhar , mas acredito que voce poderia utilizar o nil ou um nome de Arquivo no constructor
porém a variavel deve ser definida como sendo da Interface IXmlDocument e não da classe TXmlDocument
GOSTEI 0