我想做一个程序里有 Memo1   Memo2
当Memo1输入 类似这样的数据20 00 83 1B 6E F3 5D F9   (就是一个16进制数后一个空格又一个16进制数)
在 Memo2中显示“ . .n ] ”应该在Memo1的Change事件中怎么写?

解决方案 »

  1.   

    通过空格把数据截出来
    然后用
    var
    n:integer;
    str,str1:string;
    begin
    str:=memo1.text;
    while pos(' ',str)>0 do
    begin
    n:=pos(' ',str);
    str1:=copy(str,1,n-1);
    str:=str+' '+char(strtoint(str1));
    delete(str,1,n);
    end;
    memo2.lines.add(str);
    end;
      

  2.   

    procedure TForm1.Memo1Change(Sender: TObject);
    var HexStr:string;
        BinInt:integer;
    begin
      if length(memo1.Text)>=2 then
      begin
        if (memo1.Text[length(memo1.Text)]<>' ') and (memo1.Text[length(memo1.Text)-1]<>' ') then
        begin
            HexStr:=copy(memo1.Text,length(memo1.Text)-1,2);
            HexToBin(@HexStr[1],Pchar(@BinInt),1);
            memo2.Text:=memo2.Text+IntToStr(BinInt)+'.';
        end;
      end;
    end;
      

  3.   

    var
       tls:TStringList;
       i:Integer;
       tmpStr:String;
    begin
       tls:=TStringList.Create;
       try
          tls.Text:=StringReplace(Memo1.Lines.Text,' ',#13#10,[rfReplaceAll]);
          Memo2.Clear;
          for i:=0 to tls.Count-1 do
          begin
             tmpStr:=Trim(tls.Strings[i]);
             if tmpStr<>'' then Memo2.Lines.Text:=Memo2.Lines.Text+chr(StrToInt('$'+tmpStr));
          end;
       finally
          tls.Free;
       end;
    end;