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

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

    Joined:
    22 Feb 2007
    Messages:
    0
    Likes Received:
    4
    Reputations:
    0
    Code:
    const INTERNET_CONNECTION_MODEM = 1;
    INTERNET_CONNECTION_LAN   = 2;
    INTERNET_CONNECTdState';
    {$R *.DFM}
    procedure TForm1.CheckState(Sender: TObject);
    var    dwConnectionTypes: DWORD;
    begin
    dwConnectionTypes:=IC_MODEM+IC_LAN+IC_PROXY;
    if InternetGetConnectedState(@dwConnectionTypes,0)
    then
          ShowMessage('Youa connected')
    else
          ShowMessage('No Connection');
    end;
    
     
    #21 neji, 8 May 2007
    Last edited: 10 May 2007
    1 person likes this.
  2. Ch3ck

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

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,190
    Reputations:
    430
    Code:
    function InetIsOffline(Flag: Integer): Boolean;
    stdcall; external 'URL.DLL';
    if InetIsOffline(0) then
      ShowMessage('This computer is not connected to Internet!')
    else
      ShowMessage('You are connected to Internet!'); 
    
     
    #22 Ch3ck, 8 May 2007
    Last edited: 9 May 2007
    2 people like this.
  3. neji

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

    Joined:
    22 Feb 2007
    Messages:
    0
    Likes Received:
    4
    Reputations:
    0
    Я канешна извеняюсь но я написал тоже самое толька оформил хренова иба малый опыт писатьни в форумах)))
     
    2 people like this.
  4. Brun

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

    Joined:
    21 Mar 2006
    Messages:
    95
    Likes Received:
    57
    Reputations:
    16
    Прежде чем задавать здесь вопрос стоит посмотреть, а нет ли его сдесь -> http://forum.antichat.ru/showthread.php?p=325627#post325627 . Это хорошая тема, но интересно было бы усышать какую то интересную проблему (вопрос). Ведь спрашивать на счёт строк, которые проходят в школе это не очень серьёзно. ИМХО.
     
  5. Go0o$E

    Go0o$E Members of Antichat

    Joined:
    27 Jan 2006
    Messages:
    304
    Likes Received:
    228
    Reputations:
    419
    2 Brun
    Ладно, попробую задать вопрос немного поинтереснее...

    Как реализовать отправку писем через Socks5, допустим, используя компоненты Indy - IdSMTP и TidMessage?
     
  6. neji

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

    Joined:
    22 Feb 2007
    Messages:
    0
    Likes Received:
    4
    Reputations:
    0
    Code:
    idSmtp.Host:=<smtp>;    // smtp.mail.ru
    idSmtp.UserName:=<user name>;
    idSmtp.Password :=<password>;
    // если не надо авторизации на смтп сервере
    idSmtp.AuthenticationType:=atNone
    // если надо
    idSmtp.AuthenticationType:=atLogin
    ......
    if not idSmtp.Connected then idSmtp.Connect;
    idMess.Body.Clear;
    idMess.Body.Add('ТЕКСТ')
    idMess.From.Address:=<отправитель>;
    idMess.Subject:='тема';
    idMess.Recipients.EMailAddresses:=<получатель>;
    idSmtp.Send(idMess);
    idSmtp.Disconnect;
    Удачи!!
     
    #26 neji, 10 May 2007
    Last edited: 10 May 2007
  7. Go0o$E

    Go0o$E Members of Antichat

    Joined:
    27 Jan 2006
    Messages:
    304
    Likes Received:
    228
    Reputations:
    419
    2 neji

    Не плохо... Осталось лишь дописать главную часть заданного мной вопроса, а именно поддержку Socks5...
     
  8. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    У меня такой вопрос не простой....
    Вообщем по TICQClient'y :)
    У меня в файле допустим 15 номеров формата uins;pass
    Вообщем надо сделать чтобы все эти 15 номеров подконнектились....и не выключались :)
    Пытасюь сделать типа этого:
    Code:
    Uins.LoadFromFile('uins.txt');
    Uins.LoadFromFile('uins.txt');
    Uins.NameValueSeparator := ';';
    for i := 0 to Uins.Count - 1 do
    begin
          ICQClient1.UIN := StrToInt(copy(Uins.Strings[i],0,pos(';',Uins.Strings[i])-1));
          ICQClient1.Password := copy(Uins.Strings[i],pos(';',Uins.Strings[i])+1,32);
          ICQClient1.Login();
    end; 
    Этим способом выводит в онлайн только 1 номер(последний в файле),а мне надо чтобы все номера выводились..
    Так вот мне сказали что надо использовать не 1 ICQClient, а столько, сколько надо номеров вывести вонлайн...

    Так вот скажите пожалуйста как мне это сделать правильно и чтобы эти номера вывелись в онлайн одновременно, то бишь потоки...
    Пожалуйста поподробнее...:)Надо вникнуть.
    За эту задачу дам +18, только объясните подробненько каждую функцию которую будете делать...
     
  9. l-l00K

    l-l00K Banned

    Joined:
    26 Nov 2006
    Messages:
    233
    Likes Received:
    433
    Reputations:
    287
    Так ты выведешь только 1 номер в онлайн, так как у тебя только 1 ICQClient, а их должно быть столько же сколько и уинов, я тебе по асе кидал почти весь код своего флудера, советую немного подучить Delphi, тогда ты сможешь воспользоваться моим кодом
     
  10. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Можно еще попробывать создавать потоки и потом в Runtime создавать TICQClient.

    Вот пример создания в рунтайме n-го колва кнопок и присвоение им обработчика клика. Также можно и создать скока хошь TICQClient'ов
    Code:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    s:array of tbutton;
    const
    b_c=4;
    
    implementation
    
    {$R *.dfm}
    procedure my_click(Self: pointer; Sender: TObject);
    begin
    showmessage(inttostr(Tbutton(sender).Tag));
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
    x:integer;
    begin
    setlength(s,b_c);
    for x:=0 to b_c-1 do begin
    s[x]:=tbutton.Create(self);
    s[x].ParentWindow:=form1.Handle;
    s[x].Caption:=inttostr(x);
    s[x].Left:=10;
    s[x].Top:=40*x;
    s[x].Tag:=x;
    @s[x].OnClick:=@my_click;
    end;
    end;
    
    end.
    
     
    #30 slesh, 14 May 2007
    Last edited: 14 May 2007
  11. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 Go0o$E На счет писам - дык можно запросто юзать обычные сокеты :)
    И через почтовые шлюзы отправлять письма. А там какой хошь такой и пиши адрес отправителя. Если заюзать сокеты то запросто можно всё переложить на socks5
    Я себе для теста писал модуль дельфяный который сам создавал соединение с сокс5 прокси и возвращал дескптор сокета. модуль конечно сырой. (т.е. можно юзать тока IP и только TCP Connect). Если нужен, то могу выложить
     
  12. tip4il

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

    Joined:
    2 Oct 2006
    Messages:
    43
    Likes Received:
    8
    Reputations:
    0
    вообшем вопрос как создать сторожа, который "наблюдает" за сайтом т.е. заходит на сайт каждые 20 минут и проверяет изменилось ли что-нибудь или нет.
    мнеб какой-нибудь сорц или хотяб примерно как это это осушествить
     
    1 person likes this.
  13. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    636
    Reputations:
    476
    tip4il, я похожего сторожа писал, но он оказался не сильно эффективен. На таком крупном и активном форуме каждые 20 минут гарантированно происходят изменения. К тому же имеются возможности для этого у самого форума.
    Вообще сначала определи требования к сторожу: что именно надо - обнаруживать любые изменения в конкретных разделах, просто создание новых тем или пр. В лучшем варианте это съест 75 Кб траффика (загрузка главной страницы форума), а если что-то посложнее - нужно будет тратить ещё больше.
    Реализация возможна следующими средствами: использовать idHTTP или использовать WebBrowser. В всяком случае грузим html и производим выборочные сравнения с ранее загруженным, замечая отличия.
     
    _________________________
    1 person likes this.
  14. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Почему все так и лезук к визуальным компонентам?
    Если легче юзать напрямую сокеты.
    Вот я написал парочку функций для работы с сокетами и всё время их юзаю.
    К примеруЖ функции передаешь адрес буфера где содержится HTTP-заголовки, адрес буфера куда будет помещан ответ, IP сервака и порт куда нужно подсоедениться. И всё пашет запросто. Даже Time-out есть :)
    Особенно удобно юзать если юзаются потоки
     
  15. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    дайте плиз учебник или статьи по сетевым компонентам (Indy), или статьи на эту тему. или сорцы с большим количеством комментов.
    http://www.programmersclub.ru/book тут я уже был.
    я начинающий, так что особо не понайте :)
    всем заранее очень благодарен!))
     
    2 people like this.
  16. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    636
    Reputations:
    476
    Я как раз занимаюсь подобной тематикой.
    Вот статьи, из написанных мной, где рассматривается работа с некоторыми INDY-компонентами:

    Пишем простенький браузер
    Простейший IRC-клиент на Delphi, средствами INDY
    Простой веб-сервер на Дельфи
    Пишем быстро простой бэкдор на основе idHTTPServer
    Бесформенное использование INDY на примере Id http ProxyServer


    К статьям обычно прилагается прокомментированный исходный код. Кроме самих статей, в теме после них, иногда бывают ещё указаны ссылки на полезные литературные источники.

    PS: Всё это было на форуме и до этого поста :) . Рекомендую начать использовать поиск.
     
    _________________________
    3 people like this.
  17. Astral_Master

    Astral_Master New Member

    Joined:
    14 May 2007
    Messages:
    8
    Likes Received:
    1
    Reputations:
    0
    Люди, подскажите. Я не силен с работой с графикой в делфе.. не так давно один человечек попросил написать меня простенькие графические часики..
    я сделал форму, которая рисуется по контуру загруженной картинки циферблата, сделал перетаскивание часов по экрану за любую их часть, расчитал попиксельно, куда должна с каждой новой секундой отклоняться стрелка в зависимости от начального положения.
    Даже стрелку нарисовал стандартными MoveTo, LineTo. Вот тут загвоздочка и пошла... стрелка-то, конечно, рисуется, и отрисовывается куда надо, только звездочка получается, потому что рефреша нету. Делаю рефреш - обновляется и картинка циферблата, отображая только равномерный Color формы... искал помощи в разны местах - не нашел. Может кто сможет помочь?
    Не стоит говорить в своих ответах что-то вроде "зачем тебе часы, если их сейчас можно найти и скачать навалом..." Если я задаю вопрос, значит мне действительно это нужно.
    Спасибо заранее тем, кто сможет помочь разобраться!

    Ник Ример
     
  18. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    Тебе нужна буфферизация(вспомогательная картинка), вот простенький пример набросал
    Code:
    var
      Form1: TForm1;
      bm : TBitmap;
      im : TBitmap;
      al : Integer;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      bm:=TBitmap.Create;
      bm.Width:=128;
      bm.Height:=128;
      im:=TBitmap.Create;
      im.LoadFromFile('D:\MyDocs\My Pictures\untitled.bmp');
    end;
    
    procedure TForm1.FormPaint(Sender: TObject);
    begin
      Form1.Canvas.Draw(0, 0, bm);
    end;
    
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      bm.Canvas.Draw(0, 0, im);
      bm.Canvas.Pen.Color:=$00FF00;
      bm.Canvas.MoveTo(64, 64);
      bm.Canvas.LineTo(round(sin(al/60*pi*2)*64)+64, round(cos(al/60*pi*2)*64)+64);
      dec(al);
      Form1.Canvas.Draw(0, 0, bm);
    end;
     
  19. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    подскажите какие-нибудь проги для начинающих для самостоятельного написания. ведь теория без практики - это не есть гуд) просто подкиньте идей, а в процессе написания можно будет и теорию подучить, и в целом потренироваться.
    заранее спасибо =)
     
  20. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    636
    Reputations:
    476
    О, вот возможно интересное задание - попробуй постепенно воспроизвести стандартный набор Windows: напиши блокнот, калькулятор, проводник, Интернет-браузер, редактор типа WordPad и медиаплеер в этой последовательности. Я начинал своё самообучение именно так.
    В ходе создания программ тебе потребуется освоить работу с практически всеми визуальными компонентами. Причём, благодаря таким компонентам, само написание программ очень простое! А ещё есть исходники их (конечно на Делфи - можно подсмотреть). При возникновении конкретных проблем тебе всегда помогут здесь :)
    Однако, если ещё ты не запускал Делфи, не видел "HelloWorld" и не знаешь, где пункт "Compile", то приступать к подобным заданиям не следует. Нужно хорошо освоить синтаксис языка и функционал среды разработки для того, чтобы хоть как то начать.
     
    _________________________
Thread Status:
Not open for further replies.