** Mxn |
Отправлено: 03.03.2006, 11:53 |
|
Не зарегистрирован
|
Уважаемые господа! Подскажите!
char * TempString;
TFileStream * FILE = new TFileStream(OpenDialog->FileName, fmOpenRead);
TempString = (char *) malloc(FILE->Size + 1);
FILE->ReadBuffer(TempString, FILE->Size);
...
Таким образом прекрасно читаются текстовые файлы. Но при чтении двоичных файлов переменная TempString содержит не весь файл. Как можно прочитать весь двоичный файл??? |
|
Valdemar |
Отправлено: 03.03.2006, 13:02 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Возможно в двочном файле попадается символ "\0", который для С-строк является концом строки. Содержимое файла записывается в TempString полностью, но используя TempString вы имеете доступ только до первого символа "\0". Можно применять доступ по индексу: TempString[i], а для копирования использовать функции, использующие размер буфера, а не только указатель на буфер.
Отредактировано Valdemar — 03/03/2006, 13:13 |
|
Alex1000 |
Отправлено: 03.03.2006, 15:23 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 13
|
FileOpen
FileRead
FileClose |
|
Aptem |
Отправлено: 03.03.2006, 16:51 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Попробуй так:
CODE |
FILE *stream;
int length = 1024;
char *data = new char[length];
stream = fopen ( "c:\\123.txt", "rb" );
fread ( data, length, 1, stream );
fclose ( stream );
|
|
|