Еще один вопрос насчет Webbrowser'a Есть такая страница Code: http://www.фейсбук.ком/home.php#!/search.php?q=1&init=quick&tas=0.04122155806075711&search_first_focus=1298704282224 На ней выводятся некоторые страницы. Если нажать ссылку 'ххх people like this.', то откроется список. Вопрос: Как использовать полосу прокрутки в ЭТОМ СПИСКЕ
Нужно реализовать такую вещь в delphi: Имеется окно, на котором можно рисовать с помощью canvas. На верху окна два кружка - красный, синий. Нажимаешь красный и не отпуская перетаскиваешь на поле, если он оказался на поле, то добавить в поле красный кружочек, который можно перемещать. Если вынести за пределы окна, то кружочек удаляется, кол-во кружочков должно быть не ограничено. Как такое можно реализовать? Так же при нажатии на кружок который в окне правой кнопкой мыши, должно выпадать окно, на котором можно его настроить, например уменьшить, увеличить размер
при FClient.FIdFTP.List (fLS) прога зависает? т.е. запрос идет синхронный или асинхронный? если синхронный то sleep не нужен иначе надо Sleep (500); Applications.ProcessMessages; // на всякий пожарний а лучше поищи событие генерируется при завершении загрузки
не парься с канвой. напиши компонент на основе того который уже это умеет (напр TCustomsControl) и на него накинь TImage, включи DragAndDrob, поставь что надо по событиям OnClick и т.д.
Делаю многопоточное приложение, приложение выполняет все фунции только когда количество потоков равно 1, при большем приложение не выполняет свою функцию. Код потока и синхронизации: PHP: procedure MultiThread.Execute; begin while Work do begin CS.Enter; Inc(Acc); if Acc<Form1.Memo1.Lines.Count then CurAcc:=Acc else Work:=false; //Form1.ProgressBar1.Max:=Form1.Memo1.Lines.Count-1; //Form1.ProgressBar1.Position:= Acc; CS.Leave; if Work = true then begin url:= Form1.Idhttp1.Get(Form1.Memo1.Lines.Strings[CurAcc]); if AnsiPos('charset=UTF-8', url) > 0 then url:=Utf8ToAnsi(url); Synchronize(Sync); end; end; end; procedure MultiThread.Sync; begin for q:=0 to Form1.Memo2.Lines.Count-1 do begin RE:=TRegExp.Create(Form1); RE.Pattern := Form1.Memo2.Lines.Strings[q]+'([\w\W]*?)'+Form1.Memo3.Lines.Strings[q]; RE.Global := true; RE.IgnoreCase := true; RE.Multiline := true; mc:= RE.Execute(url) as MatchCollection; for j := 0 to mc.Count-1 do begin mm := mc[j] as Match; sm := mm.SubMatches as SubMatches; Form1.Memo4.Lines.Add(sm.Item[0]); end; RE.Free; end; end;
Первое что в глаза бросилось, это то что ты во всех потоках юзаеш один и тот же idHTTP создавай в каждом потоке свой отдельный.
изолируй поток от внешнего мира. прога не вылетала с AV? (создай копий объектов в потоке) параметры передавай при старте потока или типа Code: with TThread.Create (true) do begin param1: = 5; param2: = 8; Start; end;
Это тоже самое что в одну разетку втыкать две вилки. Обьяви Http:TIdhttp; В начале потока: http:=Tidhttp.create(nil); http.HandleRedirects:=true; Потом юзай не idhttp1.get а уже http.get Тоесть Code: procedure MultiThread.Execute; var Http:Tidhttp; begin http:Tidhttp.create(nil); http.HandleRedirects:=true; while Work do begin http.get('http://ya.ru'); end; http.free; end;
users idhttp; По кнопке Code: var uns:string http:Tidhttp; begin http:=Tidhttp.create(nil); uns:=http.get('http://ya.ru'); Showmessage(uns); http.free; end;
У меня вот такая проблема. Сделал многопоточное приложение, но при многопотоке скорость такая же как и при одном потоке, такое может быть? Код: PHP: procedure MultiThread.Execute; var Http: Tidhttp; RStream: TStream; Strings: TStringList; begin while Work do begin Strings := TStringList.Create; RStream := TMemoryStream.Create; http := Tidhttp.create(nil); HTTP.HandleRedirects:=true; CS.Enter; Inc(Acc); if Acc<Form1.Memo1.Lines.Count then CurAcc:=Acc else Work:=false; Form1.ProgressBar1.Max:=Form1.Memo1.Lines.Count-1; Form1.ProgressBar1.Position:= Acc; CS.Leave; if Work = true then begin try FAcc:= Copy(Form1.Memo1.Lines.Strings[CurAcc],1,Pos(';',Form1.Memo1.Lines.Strings[CurAcc])-1); FPas:= Copy(Form1.Memo1.Lines.Strings[CurAcc],Pos(';',Form1.Memo1.Lines.Strings[CurAcc])+1,Length(Form1.Memo1.Lines.Strings[CurAcc])); http.get('http://mail.qip.ru/auth/logon?user='+FAcc+'&dom=qip.ru&domain=qip.ru&reason=login&pass='+FPas,RStream); RStream.Position:=0; strings.LoadFromStream(RStream); url:=Utf8ToAnsi(Strings.Text); if AnsiPos('âñå ïèñüìà', Strings.Text) > 0 then Form1.Memo2.Lines.Add(Form1.Memo1.Lines.Strings[CurAcc]) else Form1.Memo3.Lines.Add(Form1.Memo1.Lines.Strings[CurAcc]); Form1.Label5.Caption:=IntToStr(Form1.Memo1.Lines.Count); Form1.Label6.Caption:=IntToStr(Form1.Memo2.Lines.Count); Form1.Label7.Caption:=IntToStr(Form1.Memo3.Lines.Count); //Synchronize(Sync); finally end; end; http.free; Strings.Free; RStream.Free; end; end; procedure MultiThread.Sync; begin end;
почитай о потоках. поставь в потоке сип100. да и по коду не видно как ты запускаешь потоки на выполнение
На выполнение по кнопке: PHP: procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin Work:=true; Acc:=-1; CurAcc:=0; for i := 1 to StrToInt(Edit1.Text) do MultiThread.Create(false); end; До этого приложения у меня еще есть программы с многопоточностью и там все нормально. но вот тут ни как не могу понять.