TSstringlist类的变量怎么用啊?TSstringlist类的方法都有什么啊?用途是什么啊?
请看看以下一段程序的一部分那里错了?
var
  tmpstr:string;
  stackbuf:pointer;
begin
  getmem(stackbuf,tpmsglen);
  move(msgbuf[0],stackbuf^,tpmsglen);  tmpstr:=inttostr(integer(stackbuf))  StartCallList.Add(tmpstr);  showmessage('成功');
end;      
我将showmessage('成功');放到 
tmpstr:=inttostr(integer(stackbuf))
StartCallList.Add(tmpstr);
这两句的前面就可以显示,而放到其中一句的后面就不能显示,请问大家这两句那里错了?
谢谢!!1

解决方案 »

  1.   

    procedure TForm1.ExcClick(Sender: TObject);
    var
      s: TStringList;
      i,ProNum : integer;
      ProCode,DateStr : String;
    begin
      if (Edit1.Text = '选择您文件保存的地址') or (ADOC.ConnectionString = '') then
      begin
        showmessage('    路径不对或没有连接数据库  !  ');
      end
      else
      begin
        DateStr := FormatDateTime('yyyy-mm-dd',Now);
        ProgressBar1.Show;
        ProgressBar1.Min := 0;
        ProgressBar1.Max := DBG.DataSource.DataSet.RecordCount;
        Q1.Close;
        Q1.SQL.Clear;
        Q1.SQL.Add('select lngEndValue - lngStartValue as 产品数量,strProductCode as 产品编号  from tabPrintItem where datEndDate <= :bb and datEndDate >= :cc  ');
        Q1.Parameters.ParamByName('bb').Value := DateTimePicker2.DateTime;
        Q1.Parameters.ParamByName('cc').Value := DateTimePicker1.DateTime;
        Q1.Open;
        s := TStringList.Create;
        s.Add('<?xml version="1.0" encoding="gb2312" ?>');
        s.Add('<ufinterface sender="'+Form2.sender.Text+'" receiver="u8" roottag="storeinout" docid=".5795186" proc="Query" codeexchanged="N" exportneedexch="N" display="出库单" family="库存管理">');
        s.Add('<storeinout>');
        s.Add('<header>');
        s.Add('<receiveflag>0</receiveflag>');
        s.Add('<vouchtype>11</vouchtype>');
        s.Add('<businesstype>领料</businesstype>');
        s.Add('<source>库存</source>');
        s.Add('<businesscode></businesscode>');
        s.Add('<warehousecode>103</warehousecode>');
        s.Add('<date>' + DateStr + '</date>');
        s.Add('<code>0300000089</code>');
        s.Add('<receivecode>201</receivecode>');
        s.Add('<departmentcode>04</departmentcode>');
        s.Add('<personcode></personcode>');
        s.Add('<purchasetypecode></purchasetypecode>');
        s.Add('<saletypecode></saletypecode>');
        s.Add('<customercode></customercode>');
        s.Add('<vendorcode></vendorcode>');
        s.Add('<ordercode></ordercode>');
        s.Add('<quantity>0</quantity>');
        s.Add('<arrivecode></arrivecode>');
        s.Add('<billcode></billcode>');
        s.Add('<consignmentcode></consignmentcode>');
        s.Add('<arrivedate></arrivedate>');
        s.Add('<checkcode></checkcode>');
        s.Add('<checkdate></checkdate>');
        s.Add('<checkperson></checkperson>');
        s.Add('<templatenumber>65</templatenumber>');
        s.Add('<serial></serial>');
        s.Add('<handler></handler>');
        s.Add('<memory>'+Form2.memoery.Text+'</memory>');
        s.Add('<maker>'+Form2.maker.Text+'</maker>');
        s.Add('<define1></define1>');
        s.Add('<define2></define2>');
        s.Add('<define3></define3>');
        s.Add('<define4></define4>');
        s.Add('<define5></define5>');
        s.Add('<define6></define6>');
        s.Add('<define7>0</define7>');
        s.Add('<define8></define8>');
        s.Add('<define9></define9>');
        s.Add('<define10></define10>');
        s.Add('<define11></define11>');
        s.Add('<define12></define12>');
        s.Add('<define13></define13>');
        s.Add('<define14></define14>');
        s.Add('<define15></define15>');
        s.Add('<define16>0</define16>');
        s.Add('<auditdate></auditdate>');
        s.Add('</header>');
        s.Add('<body>');
        while not Q1.eof do
            begin
                ProCode := Q1.FieldByName('产品编号').AsString;             //start...
                ProNum := Q1.FieldByName('产品数量').AsInteger;
                s.Add('<entry>');
                s.Add('<id>30020302</id>');
                s.Add('<barcode></barcode>');
                s.Add('<inventorycode>'+ProCode+'</inventorycode>');
                s.Add('<iMassDate></iMassDate>');
                s.Add('</entry>');
                ProgressBar1.Position := ProgressBar1.Position + 1;
                Q1.Next;
              end;
        s.Add('</body>');
        s.Add('</storeinout>');
        s.Add('</ufinterface>');
        s.SaveToFile(save);
        s.Free;
        ProgressBar1.Hide
      end;
      showmessage('  XML文件生成完毕!  ');
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      with SaveDialog1 do
      begin
        DefaultExt:='xml';
        Filter := '*.xml';
        Execute;
        edit1.Text := FileName;
        save := filename;
        Form2.ShowModal;
      end;
    end;procedure TForm1.ShowReExit(Sender: TObject);
    begin
      ShowRe.Click;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      ProgressBar1.Hide;
      DateTimePicker1.DateTime := Now;
      DateTimePicker2.DateTime := Now;
    end;
    给你看这个例子就ok了
      

  2.   

    你这几句都有问题getmem(stackbuf,tpmsglen);
    // tpmsglen没有初始化值
    move(msgbuf[0],stackbuf^,tpmsglen);
    //msgbuf不会拷贝到stackbuf,stackbuf本身已经是指针了还+^?
    tmpstr:=inttostr(integer(stackbuf))
    //这里的stackbuf是指针吧,你是+指针的地址还是+指针的值?
    StartCallList.Add
    //不要add,yao append你的程序不完整,看不懂~~
      

  3.   

    move的哪里写错了,
    hoho
    忘了不过还是每看懂