PDA

Просмотр полной версии : [Помогите!] что написать? +парсинг


Павел.DO
17.08.2013, 20:12
Вопрос первый:
Привожу цитату:
Для кого я статьи писал... [Ссылки могут видеть только зарегистрированные и активированные пользователи]

function Pars(s: string): string;
begin
result := Copy(s, Pos('"header_credits"', s) + 38,
Pos('"header_uri"', s) - Pos('"header_credits"', s) - 52);
end;
Я в дельфи недавно. Меня научили парсить другим способом:
private
{ Private declarations }
function Pars(T_, ForS, _T: string): string; //тут зажимаем Ctrl+Shift+C
public
Далее пишем:
function TForm1.Pars(T_, ForS, _T: string): string;
var
a, b: integer;
begin
Result := '';
if (T_ = '') or (ForS = '') or (_T = '') then
Exit;
a := Pos(T_, ForS);
if a = 0 then
Exit
else
a := a + Length(T_);
ForS := Copy(ForS, a, Length(ForS) - a + 1);
b := Pos(_T, ForS);
if b > 0 then
Result := Copy(ForS, 1, b - 1);
end;
Код нажатия на кнопку:
procedure TForm1.Button1Click(Sender: TObject);
var
Source, Source_forum:TstringList;
begin
memo1.Lines.Clear;
Source:=TStringList.Create;
Source.Text:=id[Ссылки могут видеть только зарегистрированные и активированные пользователи]('ссылка');
memo1.lines.add('Онлайн: (тут можно написать что угодно или же поставить '')'+Pars('HTML код до нужного текста',Source.Text,'HTML код после нужного текста'));
Мне казалось что приведенным мною кодом проще это делать (это моё мнение, могу ошибаться)..Что посоветуете? Есть ли какие-то преимущества или недостатки? И сразу вопрос, для тех кто использует второй (мой) способ: как спарсить например такой код:
<br>первое значение<br>
<br>второе значение<br>
<br>третье значение<br>
<br>четвертое значение<br>
у меня получает только первое (верхнее) значение.
Второй вопрос:
Подкиньте идейку, что написать. Знания не большие, но буду пытаться и стараться. А то вообще нету идей :) тапками не кидайте /nyan

Sinyss
17.08.2013, 21:35
Спарсить сначала верхний компонент html документа, в котором хранятся эти значения. Потом разбить на части и парсить каждую отдельно..

Павел.DO
17.08.2013, 21:45
Спарсить сначала верхний компонент html документа, в котором хранятся эти значения. Потом разбить на части и парсить каждую отдельно..

я так пробовал. Только как можно из приведенного выше мною кода убрать <br> все. есть такая функция? или каждое значение парсить надо?

Apo-S
17.08.2013, 21:51
Я бы создал временную строку, содержимое:
<br>первое значение<br>
<br>второе значение<br>
<br>третье значение<br>
<br>четвертое значение<br>
Затем спарсил бы первое значение, и удалил бы эту строку, выходит у нас в строке:
<br>второе значение<br>
<br>третье значение<br>
<br>четвертое значение<br>
И так далее..

metraz
18.08.2013, 01:34
В таких случаях я пользуюсь регулярными выражениями, очень помогает.

VeTaL_UA
18.08.2013, 02:36
StringReplace такая функция зовётся.

windust
25.08.2013, 01:45
while Pos('<br>', zm) <> 0 do
begin
Delete(zm, 1, Pos('<br>', zm) + Length('<br>') - 1);
Form1.Memo1.Lines.Add(Copy(zm, 1, Pos('<', zm) - 1));
end;

J-Fobos
25.08.2013, 18:00
По секрету расскажу :)
В винде маленькая библиотека под названием mshtml.dll, и внутри этой библиотеки лежит шайтан устройство под названием IHTMLDocument, которое является базовым классом для IHTMLDocument2, который можно импортировать и использовать по его прямому назначению.
Более подробно тут ([Ссылки могут видеть только зарегистрированные и активированные пользователи])