![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Бьюсь с отправлением файла по соксу [D7, WinXP]
Коля © (2006-03-26 11:39:00)Ну ведь правильно все написал - а выскакиевает AccessViolation. Помогите ошибку найти.
procedure TAppForm.pute(fil:string);
var
PHH: TPacketHeaderHolder;
PH: TPacketHeader;
Stm:TStream;
a:file of byte;
buf:array[0..1024]of byte;
frc:integer;
begin
Stm := TMemoryStream.Create;
assignfile(a,fil);
reset(a);
while not eof(a) do begin
blockread(a,buf,1024,frc);
stm.WriteBuffer(buf,1024);
end;
closefile(a);
PHH := TPacketHeaderHolder.Create(ptReply);
try
Stm.Position := 0;
PHH.DataSize := Stm.Size;
PHH.DataHash := CalcMD5(Stm);
PH := PHH.PacketHeader;
finally
FreeAndNil(PHH);
end;
Stm.Position := 0;
with ClientSocket.Socket do
begin
SendBuf(PH, SizeOf(PH));
SendStream(Stm);
end;
FreeAndNil(Stm);
end;
Коля (2006-03-26 22:47:00) [1]
try
.....
.....
Socket.SendStream(Stm);
except
FreeAndNil(Stm);
raise;
end;
хм, а вот так, вроде, память освобождается
Dmitrij_K (2006-03-26 19:23:00) [2]У тебя остается проблема освобождения памяти от MemoryStream
Коля (2006-03-26 18:39:00) [3]Гениально! Спасибо большое!
убрал FreeAndNil(Stm); и все отлично заработало. А сам двое суток голову ломал
Dmitrij_K (2006-03-26 14:39:00) [4]Почитай справку по SendStream, особенно внизу Note:
Dmitrij_K (2006-03-26 14:33:00) [5]1. TMemoryStream.LoadFromFile()
2. Сокет блокирующий иль нет?
Коля (2006-03-26 11:42:00) [6]да, забыл сказать - выскакивает она на последней строчке.