Вниз
Скачать: CL | DM;

Как считать строки, прерывающиеся 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.019 c
1-41184
Mistic
2003-11-02 15:58
2003.11.13
Child -Форма в DLL


1-41393
loki128
2003-10-29 08:42
2003.11.13
Окна


14-41999
Viktor Kushnir
2003-10-15 18:51
2003.11.13
Нужна проффесиональная помощь.


1-41241
Ganjo
2003-10-30 21:09
2003.11.13
StringGrid


1-41435
md
2003-10-29 13:32
2003.11.13
процессы




   Наверх