![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с пробоемой [D5]
abcd © (2002-12-19 17:43:00)type
PBuffer = ^TBuffer;
TBuffer = array [Byte] of Char;
var buf: PBuffer;
begin
...
AssignFile(f,"123");
Rewrite(f);
BlockWrite(f,buf^,4);
...
end;
в файл помимо нужной информации пишется что-то левое, хотя я из буфера беру, допустим 4 символа.
{bas} (2002-12-19 18:28:00) [1]а кто б. обнулять buf в цикле отпраки?????
abcd (2002-12-19 17:59:00) [2]Это посылка с сервера:
src := TFileStream.Create("234",fmOpenRead);
sServ.Socket.Connections[0].SendText(IntToStr(src.Size));
New(buf);
while src.Position < src.Size do
begin
cnt := src.Read(buf^, SizeOf(buf));
sServ.Socket.Connections[0].SendBuf(buf^, cnt);
end;
Dispose(buf);
buf := nil;
src.Free;
Это прием клиентом:
if not Receive then Count := StrToInt(Socket.ReceiveText);
cnt := Socket.ReceiveLength;
if not Receive then
begin
AssignFile(f,"123");
Rewrite(f);
Receive := true;
end;
GetMem(buf,cnt+1);
Socket.ReceiveBuf(buf^,cnt);
BlockWrite(f,buf^,cnt);
CountRead := CountRead + cnt;
if CountRead = Count then
begin
CountRead := 0;
Count := 0;
Receive := false;
FreeMem(buf);
CloseFile(f);
sClnt.Socket.SendText("Received");
end;
Помимо файла источника в файл назначения пишется что-то, что не должно туда писаться.
Digitman (2002-12-19 17:56:00) [3]Нет, ну а инициализация переменной buf где ? она вообще существует у тебя в коде ДО всего того, что ты привел ?
abcd (2002-12-19 17:53:00) [4]если подробней, то до этого кода:
src := TFileStream.Create("234",fmOpenRead);
while src.Position < src.Size do
cnt := src.Read(buf^, SizeOf(buf));
Sha (2002-12-19 17:53:00) [5]Нам видно все, что между точек...
Reindeer Moss Eater (2002-12-19 17:47:00) [6]Пишется то, на что указывает ни на что не указывающий buf