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

    Maxxxtri23 New Member

    Joined:
    20 Dec 2008
    Messages:
    76
    Likes Received:
    1
    Reputations:
    0
    Я новичек в делфи, так что просьба не пинать =) В общем пишу я icq бота при помощи модуля TICQClient от Царя. В общем вот процедура реагирующая на прием сообщений
    Code:
    procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);  
    var 
     icq: cardinal; 
     begin 
     icq := StrToInt(UIN);  
    Memo1.Lines.Add(UIN + ': ' + Msg); //Добавляем полученное сообщение в Memo1  
    if Msg='/Disconnect' then  ICQClient1.Disconnect;
      if Msg='help' then  ICQClient1.SendMessage(icq,'Команды: "22"-расписание') 
     end;  
    Вот примерно такое, но я хочу реализовать там расписание пар и как сделать так чтобы например я со своего icq отправил сообщение типа %%Социология ОАП ВМ
    и он распознавал что стоит после знаков %% и прикручивал этот текст к команде "22".
    Тоесть любой желающий пишет боту 22 а он выдает:
    Социология ОАП ВМ.
    Думаю я ясно обьяснил. Жду вашей помощи
     
  2. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    искать %%
    копировать от %% до %% в 22
     
  3. Maxxxtri23

    Maxxxtri23 New Member

    Joined:
    20 Dec 2008
    Messages:
    76
    Likes Received:
    1
    Reputations:
    0
    а как искать, нпишите плиз процедурку, а то я уже столько фуромув и ФАКов перерыл и так и не нашел =((
     
  4. crystalbit

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

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    искать подстроку в строке командами pos и posex
     
  5. ..::TROYAN::..

    ..::TROYAN::.. Elder - Старейшина

    Joined:
    22 May 2008
    Messages:
    90
    Likes Received:
    116
    Reputations:
    14
    кто знает как прочитать строки 2х TEdit..?
     
    #2405 ..::TROYAN::.., 21 Dec 2008
    Last edited: 21 Dec 2008
  6. Maxxxtri23

    Maxxxtri23 New Member

    Joined:
    20 Dec 2008
    Messages:
    76
    Likes Received:
    1
    Reputations:
    0
    Напиши плиз пример, буду оч благодарен
     
  7. crystalbit

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

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    если проверяешь в начале строки
    Code:
    if Pos('%%',msg)=1 then begin //позиция в строке
    s:=copy(msg,3,MaxINT);//в переменной s теперь то, что после %% и до конца
    //ни у дальше че те надо, вносит в TStringList и т.п.
    end;
    
    ну и есть еще много вариантов

    а, ну чтоб смотреть соответствия, вносить туда, я юзал TStringList или массив record'ов, можно, что наверное и лучше, юзать бд
     
    #2407 crystalbit, 21 Dec 2008
    Last edited: 21 Dec 2008
  8. crystalbit

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

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    как я понял из переписки в ПМ, надо получить handle элементов типа TEdit

    для этого есть функция GetWindow и функция GetClassName

    для начала нужно иметь handle первого (любого) TEdit, пусть это будет h (integer)

    теперь
    Code:
    h:=GetWindow(h,GW_HWNDFIRST);
    вернет первый компонент на этом уровне(на том же parent'e)
    это не обязательно TEdit, проверяем функцией GetClassName
    и далее
    Code:
    h:=GetWindow(h,GW_HWNDFIRST);
    repeat
      //работа с h
      h:=GetWindow(h,GW_HWNDNEXT);
    until h=0;
    
    мы перебрали все компоненты, остается проверять класс, получать заголовок и всё остальное, что требуется, после repeat (где комментарий)
     
  9. ronald

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

    Joined:
    27 Mar 2008
    Messages:
    252
    Likes Received:
    42
    Reputations:
    6
    народ, подскажите:
    как включать/выключать звук в системе на Delphi n7?
     
  10. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    юзай TIdCookieCollection - как-то так оно называется
     
  11. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Code:
    procedure TForm1.FormCreate(Sender: TObject);
    var
      TS: TStringList;
    begin
      TS := TStringList.Create;
      TS.Add('123=fff');
      IdHttp1.CookieManager.AddCookie('a=b','antichat.ru');
      IdHTTP1.CookieManager.CookieCollection.Items[0].Path := '/';
      IdHttp1.Post('http://antichat.ru', TS);
    end;
    
     
    1 person likes this.
  12. RaX

    RaX Member

    Joined:
    7 Jun 2008
    Messages:
    34
    Likes Received:
    34
    Reputations:
    0
    Помогите пожалуйста по RichEdit. Как мона вставить в середину какой-либо строки ричедита отформатированный текст? Вот например если отформатировать в вордпаде некоторые участки текста, загнать в буфер и вставить на ричедите, то он точно такой же и отобразится. Как сделать такое кодом?
     
  13. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    Такая вот проблема...
    Создал TWebBrowser (wb1) в нём гружу с сайта форму, получаю имя поля в форме так
    wb1.oleobject.document.getelementbyid('form').item(0).Name
    'form' это имя формы, но если у формы нет имени, что делать? :(
    =========
    А, всё, додумал сам
    Может кому надо
    wb1.oleobject.document.forms.item(0).item(0).Name
     
    #2413 Ponchik, 26 Dec 2008
    Last edited: 26 Dec 2008
    2 people like this.
  14. crystalbit

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

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    посылаю нажатие правой кнопки мыши,
    соответственно cwnd - кнопка, у которой контекстное меню
    Code:
      SendMessage(cwnd,WM_RBUTTONDOWN,1,0);
      SendMessage(cwnd,WM_RBUTTONUP,1,0);
    
    всё нормально работает, но если дописываю
    Code:
      mwnd:=GetMenu(cwnd);
    
    то прога висит (даже не висит, как будто специально ждет) до тех пор, пока меню не исчезнет (я не нажму по нему)
    по идее меню инициализировалось, должен возвращаться его handle, однако после того как я на него нажимаю, прога получает сам cwnd
    пробовал wm_initmenu и wm_initmenupopup, не очень врубился, ибо не могу получить handle меню, а это нужно сначала
    wm_contextmenu пашет нормально, но эффект такой же как и от WM_RBUTTONDOWN и WM_RBUTTONUP (все события смотрел в спае)

    вижу единственный вариант - делать в отдельном потоке, но хэндл меню получить не удается
     
  15. xaker-boss

    xaker-boss Elder - Старейшина

    Joined:
    6 Mar 2007
    Messages:
    251
    Likes Received:
    49
    Reputations:
    -11
    Есть такой код:
    Code:
    procedure SendEmail(sTo, sFile: String);
    var
      M: TIdMessage;
    begin
      M := TIdMessage.Create(Form1);
      M.Body.Add('This file- :lovi:))))');
      M.From.Text := '"ci27" <[email protected]>'; //отправитель
      M.Recipients.Add;                     // [email protected]
      M.Recipients.Items[0].Text := '"Post" <'+sTo+'>'; //Получатель
      M.MessageParts.Add;
      TIdAttachmentFile.Create(m.MessageParts,sFile);
      M.Subject := ':-)'; //Тема письма
    
      Form1.IdSMTP1.AuthType := atSASL;
      Form1.IdSMTP1.Host := 'smtp.mail.ru';
      Form1.IdSMTP1.Port := 2525; // mail.ru 2525 порт использует
      Form1.IdSMTP1.Username := '[email protected]';
      Form1.IdSMTP1.Password := '******';
      Form1.IdSMTP1.Connect();
      if Form1.IdSMTP1.Connected then
      begin
        Form1.IdSMTP1.Send(M);
      end;
      Form1.IdSMTP1.Disconnect;
    end;
    [​IMG]

    Почему он не работает? может где ошибка? Он даже к серверу конектица не хочет, хотя компилируется нормально использую Delphi 2007
     
    #2415 xaker-boss, 28 Dec 2008
    Last edited: 28 Dec 2008
  16. crystalbit

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

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    у меня отправка с мыла на майле работала на стандартном порте и при AuthenticationType := atLogin

    и username вроде надо без собаки и домена
     
  17. phol1eadeux

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

    Joined:
    7 Aug 2007
    Messages:
    108
    Likes Received:
    48
    Reputations:
    -1
    Ну Username явно без '@mail.ru' должен быть ...
     
  18. xaker-boss

    xaker-boss Elder - Старейшина

    Joined:
    6 Mar 2007
    Messages:
    251
    Likes Received:
    49
    Reputations:
    -11
    да в логине я знаю, но если использовать как говорит crystalbit то делфя пишет:
    [DCC Error] Unit1.pas(216): E2003 Undeclared identifier: 'AuthenticationType'
    [DCC Error] Unit1.pas(216): E2003 Undeclared identifier: 'atLogin'

    В этом компоненте вообще нет то кого, тут только вот что можно выбрать:
    [​IMG]
     
  19. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    хакеры блин :-\\
    ===

    xaker-boss, у тя какая версия Delphi?
     
    #2419 De-visible, 28 Dec 2008
    Last edited: 28 Dec 2008
  20. crystalbit

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

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    xaker-boss, у нас видимо разные версии indy) у меня который по умолчанию в delphi 7) делай как было у тебя с authtype
     
Thread Status:
Not open for further replies.