gdyż z jednej strony odwołujesz się do istniejącego pliku, a z drugiej tworzysz nowy i dlaczego decyduje o tym zmienna przesyl?! Co ta zmienna ma wspólnego z istniejącym plikiem.
Ma to wspólnego, że jeśli będzie true, to oznacza, że strumień f1 został stworzony, ergo proces ściągania pliku został zainicjowany. Jak łatwo zauważyć przesyl jest zmienną nadmiarową, ponieważ tę samą funkcję może pełnić wskaźnik f1:
{
char buf[1024];
int size = Socket->ReceiveBuf(buf,1024);
if(size == -1)return;
fl->WriteBuffer(buf,size);
odebranowszystko += size;
/* wszystko się ściągnęło, koniec imprezy */
if(odebranowszystko == wielkoscpliku)
{
delete f1;
f1 = NULL;
}
}
else
{
if(Socket->ReceiveBuf(&wielkoscpliku,sizeof(long)) == sizeof(long) && wielkoscpliku > 0)
{
odebranowszystko = 0;
fl = new TFileStream("C:\\222.jpg", fmCreate);
}
}
Oczywiście wskaźnik f1 musi być wyzerowany na początku.






