Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.21;
Скачать: CL | DM;

Вниз

Выделение строк   Найти похожие ветки 

 
kaZaNoVa ©   (2006-12-27 19:27) [0]

есть задача, - имеется строка вида:
12:42 Отданы предметы: Metals[78] в здании "JKL[45/121]"
(лог-файл)
записей много, разновидностей предметов всего 8, как выделять в массив количество предметов?

пока реализовал так:

-----

function StrStPosZ(P, S : PAnsiChar; var Pos : Cardinal) : boolean;
 {-Sets Pos to position of string S within string P returns True if found}
var
 Temp : PChar;
begin
 Result := False;
 Temp := StrPos(P, S);
 if Temp <> nil then begin
   Pos := Temp - P;
   Result := True;
 end;
end;

----

  If StrStPosZ(Pchar(Memo1.Lines.Strings[i]),"Metals[",k) then
        Begin
         StrStPosZ(Pchar(Memo1.Lines.Strings[i]),"]",p) ;
         Inc(info[1],strToInt(copy(Memo1.Lines.Strings[i],k+8,p-k-7)));
        End;

----


(имхо коряво но работает)

есть какие-либо короткие и красивые решения?


 
oldman ©   (2006-12-27 19:36) [1]

работает?
проверил?
точно работает?
НИЧЕГО РУКАМИ НЕ ТРОГАЙ!!!!!!!!!!


 
kaZaNoVa ©   (2006-12-27 19:39) [2]

oldman ©   (27.12.06 19:36) [1]
работает?
проверил?
точно работает?

да ;)
коэффиценты смещения (8,7) подбирал наугад))


 
wicked ©   (2006-12-27 19:41) [3]

уже два раза за пару дней проскакивало тут - это работа для регекспов...


 
kaZaNoVa ©   (2006-12-27 19:43) [4]

wicked ©   (27.12.06 19:41) [3]
догадываюсь:)
но в них не разбираюсь)

если кто-то подскажет, КАК мона сделать - буду благодарен:) (изучать по ним документацию времени нет)


 
umbra ©   (2006-12-27 19:47) [5]

var
Curstr: string;
start, myend: integer;
{..................................}
curstr := Memo1.Lines.Strings[i];
start := PosEx("[", curstr) + 1;
myend := PosEx("]", curstr, start);
if end > start then
Inc(info[1], strtoint(MidStr(curstr, start, myend - start)));


 
wicked ©   (2006-12-27 19:49) [6]

для такого случая - что то вроде
\:\s*[a-zA-Z]+\[([0-9]+)\]

результат - в matches[1], ежели используется TRegExpr

хотя, опять таки, зависит от вида строчек...


 
kaZaNoVa ©   (2006-12-27 19:51) [7]

umbra ©   (27.12.06 19:47) [5]
wicked ©   (27.12.06 19:49) [6]
спасиб) нечто новое ... попробую прикрутить)

а модули какие-либо надо подключать?)


 
wicked ©   (2006-12-27 19:52) [8]

для регекспов - конечно...
www.regexpstudio.com


 
oldman ©   (2006-12-27 19:55) [9]

Ну, если у тебя стандартный лог-файл:
"мусор материал[] мусор здание[] мусор материал[] мусор здание[]..."
что мешает прямой обработке файла как строки как массива символов?



Страницы: 1 вся ветка

Текущий архив: 2007.01.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
15-1167689053
ProgRAMmer Dimonych
2007-01-02 01:04
2007.01.21
Объясните мне тупому...


15-1167031624
WondeRu
2006-12-25 10:27
2007.01.21
Вот и я женился!


15-1166785722
MBo
2006-12-22 14:08
2007.01.21
Пятничные задачки ;)


15-1167477570
Kerk
2006-12-30 14:19
2007.01.21
Mouse Nightshirt


15-1167469742
Derww
2006-12-30 12:09
2007.01.21
Как определить связен ли граф?