Вниз
Скачать: 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.022 c
1-41363
RoLeX
2003-10-30 14:29
2003.11.13
Как сделать, чтобы в Edit1 можно было воодить только цифры???


3-40961
Новенький
2003-10-17 11:04
2003.11.13
ADOQuery.FieldByName и ADOQuery.Post


3-40953
AtoL
2003-10-17 12:20
2003.11.13
Прогресс выполнения запроса.


3-40970
Коля
2003-10-16 08:20
2003.11.13
Странности сетевого пути к GDB-файлу


14-42006
Ormada
2003-10-17 12:20
2003.11.13
Редактор для Delphi




   Наверх