怎样准确读出文件内容? 急啊!(100分)

  • 主题发起人 主题发起人 coolnpss
  • 开始时间 开始时间
C

coolnpss

Unregistered / Unconfirmed
GUEST, unregistred user!
在我的程序中,我使用以下的方法读取磁盘的文件内容,其中
Buf:Array[1..1024] Of Char;
----------------------------
Repeat
; ; ; ; BlockRead(WinFile, Buf, SizeOf(Buf), NumRead);
; ; ; ; Socket.WriteLn(Buf);
Until (NumRead = 0);
但我遇到这样一个问题,当WinFile的文件小于1024的时候,Socket发送
的内容还是1024个字节,不是1024字节的整数倍的时候就会出问题。请
各位DFW帮帮忙解决!
谢谢!
 
你用WriteBuf
 
发送时指定内容字节数为NumRead
Until NumRead < SizeOf(Buf);
 
to:lld,还是不行啊,文件<1024的时候,发送出去的还是1024.
???
 
我解决了此问题了原来使用Pointer
Repeat
; ; ; ; BlockRead(WinFile, Buf, SizeOf(Buf), NumRead);
; ; ; ; Socket.Write(@Buf,NumRead);
Until (NumRead = 0);
谢谢!
 
< 1024是让你的程序可以少执行一步循环,关键是你发送的内容。
不知你用的是什么Socket控件有WriteLn,按你的原意应该这样写:
var
; Buf: array of Char;
begin
; SetLength(Buf, 1024);
; while True do
; begin
; ; BlockRead(WinFile, Buf[1], SizeOf(Buf), NumRead);
; ; if NumRead = 1024 then
; ; ; Socket.WriteLn(Buf)
; ; else begin
; ; ; if NumRead = 0 then Break;
; ; ; SetLength(Buf, NumRead);
; ; ; Socket.WriteLn(Buf);
; ; ; Break;
; ; end; ;
; end;
...
 

Similar threads

后退
顶部