[ 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. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Не обязательно использовать этот цикл
    В обработчике события класса потока OnTerminate можно просто проверять количество потоков и если оно равно нулю то включать кнопку Но обязательно надо сначала уменьшать счетчик. Например:
    Dec(count_threads_on);
    if count_threads_on = 0 then ...

    А с таймером - тоже далеко не элегантное решение.
     
    #5761 GhostOnline, 9 Apr 2010
    Last edited: 9 Apr 2010
  2. trigada

    trigada Banned

    Joined:
    23 Sep 2009
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Ммм... Вроде понял. Ну а вообще, это же не критично, что используется свободная часть процессора, так как потоки у меня все равно низкого приоритета..., а хотя если программа должна быть основной, например какие-нибудь драйвера, то это неприемлимо?
    Все супер работает как часы. :)
     
    #5762 trigada, 9 Apr 2010
    Last edited: 9 Apr 2010
  3. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Какая разница какого приоритета потоки? Код потока от этого работать быстрее не будет.
    Я везде стараюсь сократить расходы ресурсов. Вот представь: этот цикл у тебя крутится, потоки медленно уничтожаются, а пользователь тем временем запустил еще один ресурсоемкий процесс. Это приведет к зависанию, и как следствие к плохому мнению о тебе как разработчике.

    UPD:
    И все же я считаю использовать такой цикл неверно.
    Главный поток приложения имеет средний приоритет. Ты запускаешь в этом потоке цикл, в то время как у тебя есть потоки с низким приоритетам которым нужно коректно завершиться. Но процессорного времени им на это не хватает ибо много отъедает цикл в главном потоке. В итоге имеем к нагрузке процессора еще и медленное завершение потоков.
     
    #5763 GhostOnline, 9 Apr 2010
    Last edited: 9 Apr 2010
  4. denjf

    denjf Member

    Joined:
    12 Nov 2008
    Messages:
    88
    Likes Received:
    12
    Reputations:
    -1
    Скажите в какую сторону рыть?

    Нужно перехватывать пароли и логины в браузерах.

    Возможно перехватить POST запрос в котором идут логин и пароль?
    Как это на Delphi делается?
     
  5. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    denjf что значит перехватить? может тебе нужен сниффер?
     
  6. denjf

    denjf Member

    Joined:
    12 Nov 2008
    Messages:
    88
    Likes Received:
    12
    Reputations:
    -1

    Мне нужен код на Delphi. или любая инфа о том как можно написать.

    Суть программы:

    Человек заполняет форму допустим на mail.ru вводит Логин и пароль. Нажимает на батон. Пошел HTTP POST запрос...
    Так вот надо из этого запроса выдрать логин и пароль, т.е. его надо перехватить.

    Нагуглил вот
    Реализовать че то не могу ((
     
  7. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    вот пример сниффера который перехватывает заголовки, только впиши свой ip через который ты в инете сидишь. Вот из него можешь сделать то что тебе нужно клац
    лично проверил сейчас - работает отлично!
     
  8. Axeee

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

    Joined:
    26 Nov 2008
    Messages:
    286
    Likes Received:
    15
    Reputations:
    0
    пишу программу на дельфине.. (работаю с компонентом веббраузер)

    в процессе работы программы появляется ошибка.. ("Ошибка сценария.. продолжить выполнение сценариев на этой страницы ? да или нет варианты ответов..")

    как от неё избавиться или как её скрыть ?

    нельзя чтоб она появлялась !
     
  9. S[N]EP

    S[N]EP Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    102
    Likes Received:
    28
    Reputations:
    10
    Пытаюсь загрузить на фтп файл. пользуюсь indy ftp
    вот код:
    PHP:
    procedure TForm2.Button1Click(SenderTObject);

    begin
    idFTP1
    .Host:=ftphost.Text;   //FTP-сервер
    idFTP1.Port:=21;                  //порт ФТП сервера
    idFTP1.Username:=ftplogin.Text;
    idFTP1.Password:=ftppass.Text;
    idFTP1.Connect;
    idFTP1.Put(edit1.Text);
    idFTP1.Disconnect;

    end;
    выдаёт ошибку [​IMG]
    что делать?)
     
  10. EndLeSSDre@M

    EndLeSSDre@M Banned

    Joined:
    18 Jul 2009
    Messages:
    142
    Likes Received:
    99
    Reputations:
    -5
    компонент Indy IdFTP

    В разделе Var:
    PHP:
    IdFTP1 TIdFTP
    При ФормОнЛоад:
    PHP:
    IdFTP1 := TIdFTP.Create(IdFTP1); 

    Конект:
    PHP:
    IdFTP1.Host := ftphost.Text
    IdFTP1.Username := ftplogin.Text
    IdFTP1.Password := ftppass.Text
    IdFTP1.Port := 21
    IdFTP1.Connect(True10000);
    idFTP1.Put(edit1.Text);
    idFTP1.Disconnect;
     
    #5770 EndLeSSDre@M, 10 Apr 2010
    Last edited: 10 Apr 2010
  11. S[N]EP

    S[N]EP Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    102
    Likes Received:
    28
    Reputations:
    10
    PHP:
    IdFTP.Connect(True10000);
    - вот на эту строку ругается:
    PHP:
    [DCC ErrorUnit2.pas(44): E2250 There is no overloaded version of 'Connect' that can be called with these arguments
    а если её убрать то опять эта же ошибка.
     
  12. EndLeSSDre@M

    EndLeSSDre@M Banned

    Joined:
    18 Jul 2009
    Messages:
    142
    Likes Received:
    99
    Reputations:
    -5
    тогда давай так: какая версия Indy у тебя???

    вот этот код нормально работает!

    PHP:
    procedure TForm1.PutClick(SenderTObject);
    var
      
    ftpTIdFTP;
      
    ms:  TMemoryStream;
    begin
      ftp
    :=TIdFTP.Create(Application);
      
    ms:=TMemoryStream.Create;
      try
        try
          
    ftp.Host:=ftphost.Text;
          
    ftp.Port:=21;
          
    ftp.Username:=ftplogin.Text;
          
    ftp.Password:=ftppass.Text;
          
    ftp.Connect(true2000);
          
    AssErt(ftp.Connected);
          
    ftp.ChangeDir(' ');
          
    ftp.Put(edit1.Text);
          
    ShowMessage('Отправлено');
        finally
          
    ms.Freeftp.Free;
        
    end;
      
    except
        ShowMessage
    ('Хрен! :(');
      
    end;
    end;
    end.
    Indy обнови кароче
     
    #5772 EndLeSSDre@M, 10 Apr 2010
    Last edited: 10 Apr 2010
  13. Axeee

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

    Joined:
    26 Nov 2008
    Messages:
    286
    Likes Received:
    15
    Reputations:
    0
    пишу программу на дельфине.. (работаю с компонентом веббраузер)

    в процессе работы программы появляется ошибка.. ("Ошибка сценария.. продолжить выполнение сценариев на этой страницы ? да или нет варианты ответов..")

    как от неё избавиться или как её скрыть ?

    нельзя чтоб она появлялась !
     
  14. EndLeSSDre@M

    EndLeSSDre@M Banned

    Joined:
    18 Jul 2009
    Messages:
    142
    Likes Received:
    99
    Reputations:
    -5
    try except попробуй

    или

    {$I-}
    ....
    {$I+}
     
  15. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    Code:
    procedure hintwnd();
    var H:HWND;
        Rec:TRect;
        HintForm:TForm;
        HintLabel:TLabel;
    begin
    
      H := FindWindow('Shell_TrayWnd', nil);
      if h=0 then exit;
    
      GetWindowRect(h, Rec);
      HintForm:= TForm.Create(nil);
      HintForm.Width:=225;
      HintForm.Height:=75;
    
      HintForm.Color:=clSkyBlue;
      HintForm.BorderStyle:=bsNone;
      HintForm.FormStyle := fsStayOnTop;
    
      HintLabel:=TLabel.Create(nil);
      with HintLabel do
       begin
         Parent:=HintForm;
    
         WordWrap:=true;
    
         Caption:=msg;
    
         Align:=alClient;
         Layout:=tlCenter;
         Alignment:=taCenter;
       end;
    
      HintForm.AlphaBlend:=true;
      HintForm.AlphaBlendValue:=0;
    
      HintForm.Left:=Screen.Width-HintForm.Width;
      HintForm.Top:=Rec.Top-HintForm.Height;
    
      ShowWindow(HintForm.handle,SW_SHOWNOACTIVATE);
    
      while HintForm.AlphaBlendValue < 255 do
        begin
          HintForm.AlphaBlendValue := HintForm.AlphaBlendValue + 3;
          sleep(7);
          HintForm.repaint;
        end;
    
      Sleep(5000);
    
      while HintForm.AlphaBlendValue > 0 do
        begin
          HintForm.AlphaBlendValue := HintForm.AlphaBlendValue - 3;
          sleep(10);
        end;
    
      HintLabel.Free;
      HintForm.Free;
    end;
    при выполнении кода основная форма не перемещается и плохо реагирует на действия пользователя.. где грабли?
     
  16. EndLeSSDre@M

    EndLeSSDre@M Banned

    Joined:
    18 Jul 2009
    Messages:
    142
    Likes Received:
    99
    Reputations:
    -5
    ну не перемещается она у тебя из за этого кода:

    HintForm.FormStyle := fsStayOnTop;

    очевидно что она находится сверху.


    а плохо реагирует это из за множества Sleep() скорее всего...
     
  17. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    плохо работает не созданная форма, а основная.. и слипы не должны играть никакой роли по идее, код выполняется в отдельном потоке!
     
  18. Axeee

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

    Joined:
    26 Nov 2008
    Messages:
    286
    Likes Received:
    15
    Reputations:
    0

    это чтобы скрыть появление этой ошибки да ?
     
  19. DdoNbAsS

    DdoNbAsS New Member

    Joined:
    6 Apr 2010
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    Скажите что бы на Делфи писать с чего начинать то?
     
    1 person likes this.
  20. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Советую начинать читать книги для новичков. Можешь найти в Google по запросу "Delphi для начинающих". Также посмотри здесь:
     
Thread Status:
Not open for further replies.