Работа с двоичными файлами с использованием класса TFileStreamКласс TFileStream специально предназначен для работы с файлами, хранящими двоичную информацию. В следующем примере в файл записывается 100 целых чисел //Создаем поток и загружаем в него файл TFileStream * tfile=new TFileStream("a.000",fmOpenReadWrite); //При открытии указатель и так на нуле tfile>Seek(0,0); //Определяем буфер для записи int szBuf[100]; //Записываем информацию в буфер for(int i=0;i < 100;i++) szBuf[i]=i; //Переносим информацию в поток tfile>Write(&szBuf,sizeof(int)*100); //Освобождение поток и переносим его в память tfile>Free(); Следующий пример использует резервирование памяти, которое целесообразно использовать при неизвестном размере файла: //Создаем поток и загружаем в него файл TFileStream *tfile=new TFileStream("a.000",fmOpenReadWrite); //Можно не применять - при открытии указатель и так на нуле tfile>Seek(0,0); //Буфер для информации int *virgBuf; //Выделяем память для буфера информации virgBuf=(int *)malloc(tfile>Size); //Читаем информацию в буфер tfile>Read(virgBuf,tfile>Size); //Выводим информацию, например в компонент TMemo for(unsigned int i=0;i < (unsigned int)tfile>Size/sizeof(int);i++) Memo1>Lines>Add(CurrToStr((int)virgBuf[i])); //Освобождаем память free(virgBuf); //Освобождают поток и переносим в память tfile>Free(); Аналогично, объявив буфер как char *vchrgBuf;, можно работать
с файлами, хранящими информацию символьного типа. Размер буфера и потока
в этом случае также приводится к типу char.
|