Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.043 c
2-1167135910
xeron
2006-12-26 15:25
2007.01.21
Перевод из одного типа в другой...


2-1167913674
Neket
2007-01-04 15:27
2007.01.21
Иконка Программы


3-1162386352
FBuilder
2006-11-01 16:05
2007.01.21
MySQL + Delphi через DBExpress


6-1156401367
skosenok
2006-08-24 10:36
2007.01.21
TcpClient как очистить буфер принятых байт?


15-1167825467
kaZaNoVa
2007-01-03 14:57
2007.01.21
Автоматизация сбора ресурсов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский