以前是做C#的,这次有必要要求使用Delphi做,但是真的是不熟悉啊,谢谢大家。 求设计加基本方法。问题是这样的 有一个文件或者数据流以ByteArray的方式 开始处理。在C#中 设定流的Position为0 开始读取,使用ReadByte() 、ReadShort()、ReadInteger()、ReadUTFString()等等就可以按顺序处理里面的Byte了。在Delphi里面要怎么做呢? ba: PByteArray;
  Reader: TReader;  ms := TMemoryStream.Create;
  ms.WriteBuffer(ba^, Length(ba^));  Reader := TReader.Create(ms,  Length(ba^));
  Reader.Position := 0;
  Reader.ReadChar;但是这样 怎么测试都不对呢?还有就是如果这样是对的,怎么读Short(两个字节)?都Integer(4个字节)?等等呢?谢谢~

解决方案 »

  1.   

    你可以读到一个整型的变量里,读的字节数制定为byte、word、integer等的长度就行了。
      

  2.   

    这种做法是精髓。
    TReader 跟 TWriter 配对。
    建议 lz 用TWriter 写一下,保存成文件。然后用你擅长的 C# 来读。就明白了。
      

  3.   

    谢谢, 问一下,在delphi中Byte占一个字节,word占几个字节 是什么?  integer 似乎占2个字节?
    谢谢提示 ,这个的确是, 有一个问题 就是 我的数据ByteArray中一个整形 是由4个字节组成的。而,我使用Delphi TWriter 的writeinteger(100)方法写的 整形 只占了 2个字节这怎么办? 怎么回事呢?谢谢谢谢你,不是 我这个写完 不是给C#用的,C# 我会做 怎么办呢?
    其实就是在用Delphi写通用输出Dll
      

  4.   

    不同语言、不同时期的int可能是不同的:16位、32位、64位
    所以,最好显式定义:int8、int16、int32、int64(按位)或int1、int2、int4、int8(按字节)
      

  5.   


    那现在我这里的数据是4个字节表示一个Integer数字,那么在Delphi中 我要怎么能够根据四个字节读取出来这个整形呢?我试了很多遍了,就是不行  郁闷啊
    谢谢?