Вверх ↑
Разработчик
Ответов: 26163
Рейтинг: 2127
#1: 2010-09-11 13:46:11 ЛС | профиль | цитата
Tad писал(а):
а прокомментировать function FParse слабо

А попробуй сам прокомментировать. Этот код я поскипал с KOL, разбираться сильно не стал, но похоже, после переделки под один символ, вот это можно убрать -- and ((Pos < 0) or (J < Pos))
------------ Дoбавленo в 13.46:
Tad, вот так попробуй


//---------------- Функция обратного парсирования строки ----------------------- 

function RParse(var S: string; const Delimiters: char): string;
var
I, Pos: integer;
P, F: PChar;
begin
P := PChar(S);
F := StrRScan(P, Delimiters);
if F <> nil then
begin
Pos := Integer(F) - Integer(P);
if Pos <= 0 then Pos := -1;
end
else
Pos := -1;
Result := S;
S := Copy(Result, 1, Pos);
Result := CopyEnd(Result, Pos + 2);
end;

//------------------------------------------------------------------------------
//
//------------ Исправленная функция прямого парсирования строки ----------------
function FParse(var S: string; const Delimiters: char): string;
var
I, Pos: Integer;
P, F: PChar;
begin
P := PChar(S);
F := StrScan(P, Delimiters);
if F <> nil then
begin
Pos := Integer(F) - Integer(P) + 1;
if Pos <= 0 then Pos := Length(S) + 1;
end
else
Pos := Length(S) + 1;
Result := S;
S := CopyEnd(Result, Pos + 1);
Result := Copy(Result, 1, Pos - 1);
end;

//------------------------------------------------------------------------------
карма: 22

0