Вниз
Скачать: 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.02 c
7-42201
ksa2002
2003-08-27 11:37
2003.11.13
МОДЕМЫ


3-40803
k_len
2003-10-22 09:49
2003.11.13
DBGrid


14-41957
Butterfly
2003-10-17 14:50
2003.11.13
Про попугаев


1-41243
slivka
2003-11-01 00:43
2003.11.13
Помогите пожалуйста чайнику


1-41271
Nert
2003-10-31 14:37
2003.11.13
Идеальное округление :-)




   Наверх