![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый вечер! Столкнулся с проблемой которую никак не могу решить, всё облазил и ничего подходящего не нашел.
![]() |
#2
|
||||
|
||||
![]() находишь чотетаное db= и начинаешь писать всё остальное в эту переменную ... пока не найдешь "
Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#3
|
|||
|
|||
![]() Цитата:
![]() |
#4
|
||||
|
||||
![]() можно попробовать вот так:
Код:
copy(string,pos('db=',string),length(string)-pos('db=',string)+length('db=')); delete(string,pos(' " ',string),length(string)-pos('"',string)+1); string - строка текста, с которой проводятся операции смысл этой ахинеи: копируем из string, начиная с позиции первого элемента (а именно 'db=') число элементов строки, равное длине строки минус позиция вхождения искомого элемента. из оставшегося куска строки удаляем элементы, начиная с позиции первого вхождения искомого элемента (' " ') равное длина строки минус позиция элемента. результат будет в исходной строке string, писал по памяти, но вроде так работает по операциям над строковым типом данных можно посмотреть вот тут Понять, что хочет заказчик - бесценно, ведь он платит MasterCard ![]() Последний раз редактировалось cotseec, 08.09.2008 в 23:13. |
#5
|
||||
|
||||
![]() строка пишется сразу после нахождения знака = и до знака "
Код:
var i,j:=integer; stg,db:string; ....... db:=''; for i:=0 to Length(stg)-1 do begin if stg[i]="=" then begin for j:=i to Length(stg)-i-1 do db:=db+stg[i]; end end; я не проверял ... но принцып тот же ... Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#6
|
|||
|
|||
![]() Здается мне ты парсер пишешь)))))
|
#7
|
|||
|
|||
![]() Цитата:
|
#8
|
|||
|
|||
![]() Заработать, заработало но только на половину.
![]() Вот код: Цитата:
Из строки: slkjsljklskdgjskdjlkdjgsserdb=d;kl;sdlkhlsdhkkd"sd ;lskdgjsdlkjslkdj;lksd удаляется все после " а перед db= всё остается ![]() |
#9
|
||||
|
||||
![]() нда, с copy что-то не то, вот еще один вариант:
Код:
delete(а,pos('"',а),length(а)-pos('"',а)+1); delete(а,1,pos('db=',а)-1); разобрался, чтобы заработал с copy надо сделать вот так: Код:
a:=copy(a,pos('db=',a),length(a)-pos('db=',a)+length('db=')); delete(a,pos('"',a),length(a)-pos('"',a)+1); и окончательно, все в одну строку Код:
a:=copy(a,pos('db=',a),length(a)-pos('"',a)-5); Понять, что хочет заказчик - бесценно, ведь он платит MasterCard ![]() Последний раз редактировалось cotseec, 09.09.2008 в 00:39. |
#10
|
|||
|
|||
![]() Всё, теперь отлично работает! Спасибо!
|
#11
|
|||
|
|||
![]() А если нужно несколько значений из строки вынуть, этот способ же не прокатит уже? Например: kahrtnviutnb=aie"bltnba=tbart"babntabn=rjjb"ddg, и желательно записать в разные переменные, т.е. A исходная строка, в B записать nb=aie", в C ba=tbart", в D bn=rjjb".
![]() |
#12
|
|||
|
|||
![]() А если несколько то можно сделать так:
Код:
var Pos1, Pos2: Integer; A: String; // твоя строка Res: TStrings; // результаты begin Res := TStringList.Create; // инициализаруем A := 'kahrtnviutnb=aie"bltnba=tbart"babntabn=rjjb"ddg'; // находим позиции Pos1 := Pos('=', A); Pos2 := Pos('"', A); // пока чтото не нашли выполняем... while (Pos1 <> 0) or (Pos2 <> 0) do begin Res.Add(Copy(A, Pos1-2, Pos2-Pos1+3)); // отрезаем нужный нам кусок и загоняем в результат))) Delete(A, 1, Pos2); // удалям то что объискали Pos1 := Pos('=', A); // пренаходим позиции Pos2 := Pos('"', A); end; Memo1.Lines := Res; // выводи результат Res.Free; // особождаем память end; |