Odpowiednik BlockRead w C++Builder

0

Przy wysyłaniu plików przy pomocy TSS i TCS korzystamy z BlockRead do czytania plików. Mamy tam taki jeden parametr który określa realną ilość odczytanych bajtów. Czy jest coś podobnego w C++ Builder? Bo tam korzystam ze strumieni i piszę:

Plik->Read(buffer, sizeof(bufer));
Plik->Write(buffer, sizeof(buffer));

wklejam do pliku ale gdy bufor będzie w połowie wypełniony to i tak wkleja całą zawartość bufora.

0

Jeśli bufor jest w połowie wypełniony to wypada zapisać połowę, a nie walić full. Co? ;P

0

No pewnie że nie pakować całego jak można pół ale jak w końcu załądować tylko tyle ile siedzi w buforze???

A może ktoś wie jak tą funkcję BlockRead zamienić na c++ ewentualnie jak skopiować plik porcjami tak abu powstał plik o idealnej wielkości bajtów. Bo np mając bufor 1024 b a plik ma np 1030 b to po skopiowaniu go plik ten u mnie będzie miał wagę 2048 b a nie 1030b. Jak temu zaradzić. Oczywiście rozmiar bufora można przydzielić dynamicznie i wtedy będzie ok jednak musi być 1024 czyli 1KB. No chyba że ktoś wie jak przesłąć za jednym zamachem 10 MB.

0

funkcja Read zwraca liczbę przeczytanych bytów.

int bytes = fin->Read(buf, sizbuf);
if( bytes < 0 || fout->Write(buf, bytes) != bytes ) error("katastrofaaaaaaaa!");

CopyFile - jest jeszcze coś takiego...

0

Dzieki. o to wlasnie chodzilo. Jest ok.
teraz pisze
while(plik2->size < plik1->size)
{
waga = plik1->read(bufor,sizeof(bufor));
plik2->write(bufor,waga);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1