Дано: D7, Win XP SP3,бинарный файл.
В файле по определенным и заранее известным смещениям хранятся строки. Под строку в файле отведено 32 байта, причем если строка короче 32 символов - строка дополнена #00 до нужной длины. Следом идет уже другая информация с любым hex кодом.
Необходимо получить эту строку для дальнейшей работы с ней. Сейчас выполнено так.
Пример бинарного файла(начало):
Код:
04h 01h 00h 00h НУЖНАЯ СТРОКА ИЗ 32 БАЙТ 00h 00h 00h 00h 00h 00h 00h 00h XXh XXh.....
Программный код:
Код:
.........
Var
MS: TMemoryStream;
binRowsCount: integer;
TC : record
Name : String[33];
......
end;
begin
MS:=TMemoryStream.Create;
MS.LoadFromFile(Path);
MS.Read(binRowsCount,4); //чтение 4 байт, указатель смещается на 4;
TC.Name:=''; // хочу обнулить т.к. там абракадабра по умолчанию
MS.ReadBuffer(TC.Name,32); //собственно чтение этой 32-байтной строки
TC.Name[32]:= #00; //сделать нуль-терминированную строку т.к. мало ли что там в конце осталось
........
end
.
В релультате имеем:
TC.Name=УЖНАЯ СТРОКА ИЗ 32 БАЙТ||||||||| ,
где 1-й символ (Н) отсутствует, а строка дополнена непечатными символами (|).
Подскажите, пожалуйста, что не правлильно я делаю.