Гораздо красивее и проще идти с конца PHP: for i:=strings.count-1 downto 0 do ... Тогда не нужно учитывать сдвиг при удалении элемента Подучи матчасть, погугли методы TStringList и TMemo, найди различия. Реально очень глупые вопросы задаёшь. И хотя бы текст ошибок публикуй. TMemo1.Lines это TStrings, к слову
уж если ты webbrowser юзаешь, то не проще ли все ссылки как-то так собрать: PHP: uses ..., MSHTML, ActiveX;procedure getLinks(const webData: String; var List: TStringList);var doc: IHTMLDocument2; vArr: OleVariant; i: Integer; links: IHTMLElementCollection; link: String;begin if not Assigned(List) then Exit; doc:= CoHTMLDocument.Create as IHTMLDocument2; vArr:= VarArrayCreate([0, 0], varVariant); vArr[0]:= webData; doc.write(PSafeArray(TVarData(vArr).VArray)); if Assigned(doc) then begin links:= doc.all.tags('a') as IHTMLElementCollection; if (links.length > 0) then begin for i:= 0 to links.length - 1 do begin link:= (links.item(i, 0) as IHTMLElement).getAttribute('href',0); if ( pos('http', link) = 1 ) then List.Add(link); end; end; end;end;
мда... вообще-то getLinks это процедура и у нее 2 обязательных параметра, ну а юзать как-то так: Code: list:= TStringList.Create; try getTradeInfo(htmlPageText, list); Memo1.Lines.Assign(list); finally list.Free; end;
И пусть меня забанят за оскорбления, но triblekill и тебе подобные, вы реально ох#ели уже. Вам дают практически готовый код, а вы из-за своей лени, даже не хотите допилить его под свои задачи и требуете: "а ну ка, дядя, сделай-ка мне вот так!", пардонте, но тогда вам сюда. А иначе на хрен браться за это, если нет ни желания, ни знаний. Не зная основ, так и придется блудить в темноте. Spoiler ps: накипело!
Что если мне при записи в inifile абсолютно не нужно использовать ключ достаточно только секции ? Code: Ini.WriteString('Section1',Удали меня полностью и равно после меня тоже,Memo1.Lines.text);
Ага понял только теперь осталось удалить равно = Code: Ini.WriteString('Section1',#13,Memo1.Lines.text);
Если не webbrowser то можно так: Code: procedure TDThread.pars(url: string); var Links,list:Tstringlist; files:string; j,q:integer; begin inc(q); list:=Tstringlist.Create; files:=inttostr(q)+'.htm'; UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, PChar(user), Length(user), 0); if Form2.RadioButton1.Checked = True then begin UserAgent:=user; New (proxy_info); proxy_info^.dwAccessType := INTERNET_OPEN_TYPE_PROXY; proxy_info^.lpszProxy := PAnsiChar(ProxyHost+':'+ProxyPort); // proxy_info^.lpszProxyBypass := PAnsiChar(''); UrlMkSetSessionOption(INTERNET_OPTION_PROXY, proxy_info, SizeOf(Internet_Proxy_Info), 0); Dispose(proxy_info); URLDownloadToFile(nil,Pchar(url),pchar(files),0,nil); if FileExists(files) then list.LoadFromFile(files) else exit; DeleteFile(files); end; if Form2.RadioButton2.Checked = true then begin UserAgent:=user; URLDownloadToFile(nil,Pchar(url),pchar(files),0,nil); if FileExists(files) then list.LoadFromFile(files) else exit; DeleteFile(files); end; reg:=TRegExpr.Create; reg.Expression:='[\s]{1,}(href=")([^"]+)'; if reg.Exec(list.text) then Repeat if Terminated then break; if (copy(reg.Match[2],1,5)='http:')or(copy(reg.Match[2],1,4)='www.')or(copy(reg.Match[2],1,5)='https') then begin if(pos('?',reg.Match[2])>0)and(pos('<',reg.Match[2])=0) then begin if (pos('google.ru',reg.Match[2])=0)and(pos('/account/',reg.Match[2])=0)and(pos('youtube',reg.Match[2])=0)and(pos('blogger',reg.Match[2])=0)and(pos('webcache',reg.Match[2])=0) and(pos('facebook.com',reg.Match[2])=0)and(pos('microsofttranslator.com',reg.Match[2])=0)and(pos('msn.com',reg.Match[2])=0)and(pos('mail',reg.Match[2])=0) and(pos('yandex',reg.Match[2])=0)and(pos('google.com',reg.Match[2])=0)and(pos('microsoft.com',reg.Match[2])=0)and(not duble(reg.Match[2])) then begin if (pos('&',reg.Match[2])<>0)then l:= copy(reg.Match[2],1,pos('&',reg.Match[2])-1); link:= reg.Match[2]; if pos('&',link)>0 then Delete(link, pos('&',link), Length(link)); l:=link; if (l<>'')and(not duble(l)) then Synchronize(start); end; end; end; Until not reg.ExecNext; list.Free; end;
То я давно дописал ! Мне бы сейчас символ = удалить в inifiles Code: Ini.WriteString('Section1',#13,Memo1.Lines.text); Code: Result: [Section1] =строка1 строка2 строка3 строка4 строка5 А мне бы хотелось иметь такой результат в ini: Code: [Section1] строка1 строка2 строка3 строка4 строка5
Так не пробовал: Code: for i:=0 to memo1.Lines.Count -1 do begin lines:=memo1.Lines.Strings[i]; if Copy(lines,1,1)= '=' then Delete(lines, 1, 1); Ini.WriteString('Section1',#13#10,lines); end; Ini.Free; http://www.delphisources.ru/pages/faq/base/tinifile_exam.html
А в чем смысл работать с ini файлом, НЕ как с ini файлом? Сделай обычный текстовый документ в удобном тебе формате и обрабатывай его.
А как сделать : если строки не начинаются с http удалить эти строки, а строки которые начинаются с : или ; записать в Edit1.text ?? Делаю: если строки не начинаются с http удалить эти строки так: Code: var list:Tstringlist; i:integer; for i:=list.count-1 downto 0 do if Copy(list.Strings[i],1,1)<>'http' then begin list.Delete(i); memo1.Lines.text:=(List.text); Строки которые начинаются с http, : и ; содержатся в Tstringlist
Без разделителей, в одну строку? PHP: var list:Tstringlist; i:integer; for i:=list.count-1 downto 0 do if Copy(list.Strings[i],1,4)='http' then list.Delete(i); else Edit1.Text:=Edit1.Text+list.Strings[i];