zoukankan      html  css  js  c++  java
  • 线程加载返回的XMLtoTClientDataSet

    type
      TReadOrderThread = class(TThread)
      private
        FCDS: TClientDataSet;
        Fstr: string;

      protected

        procedure Execute; override;
        procedure readOrder;

        function  XMLToDataSet(strXML:WideString;nodeName:string):TClientDataSet;

      public
        constructor Create(str:string);  overload;

      end;

    function PostWebPage(url,para:String;TimeOut:Integer):WideString;
    var
      tmpWeb:TIdHTTP;
      IdSSL : TIdSSLIOHandlerSocketOpenSSL;
      retrun:String;
      Proxy:String;
      i:Integer;
      paralist:TStrings;
      Response2: TStringStream;

    begin
      retrun:='';
      try
        //Response2:= TStringStream.Create('');
        paralist:=TStringList.Create;
        paralist.Text:=StringReplace(para,'&',#13#10,[rfReplaceAll]);
        IdSSL:= TIdSSLIOHandlerSocketOpenSSL.Create(nil);
        IdSSL.SSLOptions.Method:=sslvSSLv3;
        tmpWeb:=TIdHTTP.Create(nil);

        tmpWeb.IOHandler:=IdSSL;


        tmpWeb.ReadTimeout:=TimeOut;
        tmpWeb.Request.ContentType:='application/x-www-form-urlencoded';
        try
        retrun:=tmpWeb.Post(url,paralist);
        except
         on e:exception do
          showmessage(e.Message);

        end;
        sleep(500);
       // retrun:=Utf8ToAnsi(paralist.Text);

      finally
          tmpWeb.Disconnect;
          FreeAndNil(tmpWeb);
          //Response2.Free;
          FreeAndNil(paralist);
      end;
      Result:=retrun;
    end; 

     constructor TreadOrderThread.Create(str:string);
    begin
      FreeOnTerminate := True;
      Fstr := str;
      FCDS:=TClientDataSet.Create(nil);
      inherited Create(False);
    end;

    function   TreadOrderThread.XMLToDataSet(strXML:WideString;nodeName:string):TClientDataSet;
      var
          myDataSet:TClientDataSet;
          s:string;
          xdoc   :   IXMLDOMDocument;
          xdn   :IXMLDOMNode;
          xdns   :IXMLDOMNodeList;
          i,j:integer;
          d,ii:integer;
          sumtotal,sumje,dj,je:double;
          sl:integer;
    begin

      myDataSet   :=   TClientDataSet.Create(nil);
      xdoc:=CreateDOMDocument();
      xdoc.loadXML(strXML);
      sumtotal:=0;
      sumje:=0;
      s:='';
      xdn:=xdoc.documentElement;
      xdns:=xdoc.selectNodes('//'+nodeName);
      try
      begin
        try
          for i:=0 to xdns.item[0].childNodes.length-1 do
          begin
            myDataSet.FieldDefs.Add(xdns.item[0].childNodes[i].nodeName,ftstring,1000);
          end;
        except
           Application.MessageBox('没有查询到数据。','提示',32);
           exit;
        end;

        try
           myDataSet.CreateDataSet;                      //建立
           myDataSet.Active;

        except;
        end;

        d:=0;
        for i:=0 to xdns.length-1 do
        begin
           myDataSet.Append;
              myDataSet.FieldValues[xdns.item[i].childNodes[j].nodeName]:=xdns.item[i].childNodes[j].text;
           end;
         
           myDataSet.Post;
        end;


        

        end;
          except
          on   Ex:Exception   do
          begin
            myDataSet:=nil;
            FCDS.Active:=false;

          end;
       end;

          result:=myDataSet;
        
      end;

     procedure TreadOrderThread.Execute;
    var
      OwnerData: OleVariant;

    begin
      try
           FCDS.Active:=false;

        //while not self.Terminated do
        //begin
           self.Synchronize(readOrder);
           sleep(50);
         //  if (_total>(total/page)) or (total=0) then
          //   self.Terminate();
       // end;
      finally
       // CoUninitialize;
      end;
    end;

  • 相关阅读:
    CRL线程池调度和配置的一些细节
    迁移到iis7
    musicstore edit方法出错的原因和解决方法
    如何分离出EF的三份结构定义文件
    在GridView中 鼠标移动到行 该行颜色变换
    飘逸程序员的老家
    [转贴]ASP.NET中常用的26个优化性能方案
    【转贴】在ASP.NET中显示进度条ASP.NET
    在使用GridView中删除的按钮弹出提示框最简单的一中方法
    【转贴】ASP.NET图表控件
  • 原文地址:https://www.cnblogs.com/azhai/p/1595134.html
Copyright © 2011-2022 走看看