Форум: "Основная";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];
ВнизПоиск подстроки в строке Найти похожие ветки
← →
Brat-2 (2003-01-02 15:47) [0]Читаю в buf: [0..512] of char данные из двоичного файла. Нужно найти в buf подстроку. Стандартная POS не находит (видимо обрабатывает только строку до символа #0 или #13), ибо StrLen(buf) также не определяет ее как 512 (гораздо меньше). Примечание: файл > 512. Подскажите, пожайлуста, как быть?
← →
Ru (2003-01-02 16:03) [1]попробуй написать свою функцию и читать не в буфер символов а в массив целых чисел
← →
ION T (2003-01-02 16:18) [2]Я не понял шо в двоичном файле делает строка?
← →
Song (2003-01-02 16:19) [3]Ищи своим циклом
← →
Sha (2003-01-02 16:32) [4]2 Brat-2 (02.01.03 15:47)
Упреждая твой следующий вопрос:
function PosFromTo(Find, Source: string; QChar: char= "?";
StartPos: integer= 1; StopPos: integer= 0): integer;
var
LenFind, LenSource: integer;
Mask, StopMask, Cur, Start, Stop: PChar;
ch: char;
label
NextPos;
begin;
Result:=0;
LenFind:=length(Find);
LenSource:=length(Source);
if (StartPos<=0) then StartPos:=1;
if (StopPos<=0) or (StopPos>LenSource) then StopPos:=LenSource;
StopPos:=StopPos+1-LenFind;
if (LenFind=0) or (StartPos>StopPos) then exit;
Start:=@Source[StartPos];
Stop:=@Source[StopPos];
StopMask:=@Find[LenFind+1];
NextPos:
Cur:=Start; if Cur=Stop then exit;
Mask:=pointer(Find);
repeat;
ch:=Mask^;
if (ch<>QChar) and (ch<>Cur^) then begin;
Inc(Start);
goto NextPos;
end;
Inc(Cur);
Inc(Mask);
until Mask=StopMask;
Result:=integer(Start)-integer(pointer(Source))+1;
end;
← →
Brat-2 (2003-01-02 21:28) [5]Ok. Всем спасибо. Сделал свой цикл.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c