[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Еще один вопрос насчет Webbrowser'a

    Есть такая страница
    Code:
    http://www.фейсбук.ком/home.php#!/search.php?q=1&init=quick&tas=0.04122155806075711&search_first_focus=1298704282224
    На ней выводятся некоторые страницы. Если нажать ссылку 'ххх people like this.', то откроется список. Вопрос: Как использовать полосу прокрутки в ЭТОМ СПИСКЕ
     
  2. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Нужно реализовать такую вещь в delphi:
    Имеется окно, на котором можно рисовать с помощью canvas.
    На верху окна два кружка - красный, синий.
    Нажимаешь красный и не отпуская перетаскиваешь на поле, если он оказался на поле, то добавить в поле красный кружочек, который можно перемещать.
    Если вынести за пределы окна, то кружочек удаляется, кол-во кружочков должно быть не ограничено.
    Как такое можно реализовать?:)
    Так же при нажатии на кружок который в окне правой кнопкой мыши, должно выпадать окно, на котором можно его настроить, например уменьшить, увеличить размер:)
     
  3. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    из описания ничего не понятно :(
     
  4. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    при FClient.FIdFTP.List (fLS) прога зависает? т.е. запрос идет синхронный или асинхронный? если синхронный то sleep не нужен иначе надо
    Sleep (500);
    Applications.ProcessMessages; // на всякий пожарний
    а лучше поищи событие генерируется при завершении загрузки
     
  5. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    не парься с канвой. напиши компонент на основе того который уже это умеет (напр TCustomsControl) и на него накинь TImage, включи DragAndDrob, поставь что надо по событиям OnClick и т.д.
     
  6. Jed7777

    Jed7777 Elder - Старейшина

    Joined:
    16 Jun 2008
    Messages:
    0
    Likes Received:
    11
    Reputations:
    0
    Делаю многопоточное приложение, приложение выполняет все фунции только когда количество потоков равно 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-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 
    := 0 to mc.Count-do
              
    begin
                mm 
    := mc[j] as Match;
                
    sm := mm.SubMatches as SubMatches;
                
    Form1.Memo4.Lines.Add(sm.Item[0]);
              
    end;
    RE.Free;
    end;
    end;
     
  7. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    Первое что в глаза бросилось, это то что ты во всех потоках юзаеш один и тот же idHTTP создавай в каждом потоке свой отдельный.
     
  8. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    изолируй поток от внешнего мира. прога не вылетала с AV? (создай копий объектов в потоке)

    параметры передавай при старте потока или типа
    Code:
    with TThread.Create (true) do
    begin
      param1: = 5;
      param2: = 8;
      Start;
    end;
    
     
  9. Jed7777

    Jed7777 Elder - Старейшина

    Joined:
    16 Jun 2008
    Messages:
    0
    Likes Received:
    11
    Reputations:
    0
    Как и главное зачем это делать?


    Можно пример с этим показать, а то что-то не понял?
     
  10. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    171
    Likes Received:
    46
    Reputations:
    10
    Это тоже самое что в одну разетку втыкать две вилки.


    Обьяви 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; 
    
    
    
     
    #7850 090808, 27 Feb 2011
    Last edited: 27 Feb 2011
    2 people like this.
  11. Helium

    Helium New Member

    Joined:
    6 Jan 2010
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    Разобрался
     
    #7851 Helium, 27 Feb 2011
    Last edited: 7 Apr 2011
  12. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    171
    Likes Received:
    46
    Reputations:
    10
    Подключится куда, подробнее
     
  13. Helium

    Helium New Member

    Joined:
    6 Jan 2010
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    Разобрался
     
    #7853 Helium, 27 Feb 2011
    Last edited: 7 Apr 2011
  14. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    171
    Likes Received:
    46
    Reputations:
    10
    users idhttp;


    По кнопке


    Code:
    var
    uns:string
    http:Tidhttp;
    begin
    http:=Tidhttp.create(nil);
    uns:=http.get('http://ya.ru');
    Showmessage(uns);
    http.free;
    end;
    
     
    #7854 090808, 27 Feb 2011
    Last edited: 27 Feb 2011
  15. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    не http:Tidhttp.create(nil);
    а http:=Tidhttp.create(nil);

    пропустил =
     
  16. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    171
    Likes Received:
    46
    Reputations:
    10
    ну да:)
     
  17. Helium

    Helium New Member

    Joined:
    6 Jan 2010
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    Разобрался
     
    #7857 Helium, 27 Feb 2011
    Last edited: 7 Apr 2011
  18. Jed7777

    Jed7777 Elder - Старейшина

    Joined:
    16 Jun 2008
    Messages:
    0
    Likes Received:
    11
    Reputations:
    0
    У меня вот такая проблема. Сделал многопоточное приложение, но при многопотоке скорость такая же как и при одном потоке, такое может быть?
    Код:
    PHP:
    procedure MultiThread.Execute;
    var
    HttpTidhttp;
    RStreamTStream;
    StringsTStringList;
    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
    ;
     
  19. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    почитай о потоках.

    поставь в потоке сип100.
    да и по коду не видно как ты запускаешь потоки на выполнение
     
  20. Jed7777

    Jed7777 Elder - Старейшина

    Joined:
    16 Jun 2008
    Messages:
    0
    Likes Received:
    11
    Reputations:
    0
    На выполнение по кнопке:
    PHP:
    procedure TForm1.Button1Click(SenderTObject);
    var
      
    i:integer;
    begin
    Work
    :=true;
    Acc:=-1;
    CurAcc:=0;
    for 
    := 1 to StrToInt(Edit1.Text) do
        
    MultiThread.Create(false);
    end;
    До этого приложения у меня еще есть программы с многопоточностью и там все нормально. но вот тут ни как не могу понять.
     
Thread Status:
Not open for further replies.