Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизКак считать строки, прерывающиеся 0 байтом. Найти похожие ветки
← →
Endi (2003-10-25 16:52) [0]У меня есть тестовый файл в котором все строки отделены друг от друга нулевым байтом, так вот вопрос, как в цикле считывать эти строки. Вот что у меня было
function TForm1.ReadStr(FromPos:cardinal):string;
var
Buf:byte;
i:integer;
begin
i:=0;
Result:="";
buf:=1;
while buf<>0 do begin
FileSeek(FHnd,FromPos+i,0);
FileRead(FHnd,buf,1);
if buf<>0 then if buf=10 then Result:=Result+#13#10
else Result:=Result+Chr(buf);
Inc(i);
end;
end;
но это слишком медленно.
← →
Digitman (2003-10-25 17:03) [1]открой вайл как MMF? замени все #0 (кроме последнего) на #10 и прочитай рез-т в строковую переменную
← →
Endi (2003-10-25 17:28) [2]Так не получится, потому что у меня файл не полностью текстовый, сначала там идут другие данные. Написанная функция получает номер позиции с которой надо читатать. Надо, чтоб она читала все вплоть до нулевого байта. Как я понимаю, тут надо задействовать null-terminated sring, но как я чего-то не догоняю. :(
← →
Digitman (2003-10-25 17:34) [3]
> Так не получится, потому что у меня файл не полностью текстовый
да по барабану, "полностью" или не "полностью"
структуру ты его знаешь ? знаешь наверно
открывай MMF, ищи смещение начала тех самых "неправильных" строковых данных и делай вышеупомянутую логику
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.038 c