var
Size:longint;
stri,AString:string;
MyStream: TFileStream;
PChar:pansichar;
begin
MyStream:= TFileStream.Create('c:\6666.ico, fmOpenRead);
Size:=63;
  MyStream.Read(Size, SizeOf(4));
  GetMem(PChar, Size);
  MyStream.Read(PChar,Size);
  AString:= PChar;
  showmessage(AString);
  MyStream.Free;
end;
为什么没有信息呢。如何才能读到63-67之间的数据呢?

解决方案 »

  1.   

    Size:=63;
      MyStream.Read(Size, SizeOf(4));//size不就被你改变了吗?
      GetMem(PChar, Size);//为什么用pchar这样的名字呢 郁闷
    。。
      MyStream.position := size;
      MyStream.read( astring, 4 );//67-63
      

  2.   

    var
      AnIco:Integer;
      Buffer:PChar;
      iBytesRead:Integer;
    begin
      AnIco:=FileOpen('c:\6666.ico',fmOpenRead);
      try
        FileSeek(AnIco,63,0);
        Buffer:=PChar(AllocMem(67));
        iBytesRead:=FileRead(AnIco,Buffer^,1); 
      finally
        FileClose(AnIco);
        FreeMem(Buffer);
      end;