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

Обсуждение в разделе «С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby», начал(-а) banned, 6.05.2007.

Статус темы:
Тема закрыта для ответов.
  1. Maxxxtri23

    Maxxxtri23 New Member

    Регистрация:
    20.12.2008
    Сообщения:
    76
    Одобрения:
    1
    Репутация:
    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 Борец за русский язык

    Регистрация:
    12.02.2006
    Сообщения:
    973
    Одобрения:
    290
    Репутация:
    43
    искать %%
    копировать от %% до %% в 22
     
  3. Maxxxtri23

    Maxxxtri23 New Member

    Регистрация:
    20.12.2008
    Сообщения:
    76
    Одобрения:
    1
    Репутация:
    0
    а как искать, нпишите плиз процедурку, а то я уже столько фуромув и ФАКов перерыл и так и не нашел =((
     
  4. crystalbit

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

    Регистрация:
    6.06.2008
    Сообщения:
    212
    Одобрения:
    88
    Репутация:
    8
    искать подстроку в строке командами pos и posex
     
  5. ..::TROYAN::..

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

    Регистрация:
    22.05.2008
    Сообщения:
    90
    Одобрения:
    116
    Репутация:
    14
    кто знает как прочитать строки 2х TEdit..?
     
    #2405 ..::TROYAN::.., 21.12.2008
    В последний раз редактировалось: 21.12.2008
  6. Maxxxtri23

    Maxxxtri23 New Member

    Регистрация:
    20.12.2008
    Сообщения:
    76
    Одобрения:
    1
    Репутация:
    0
    Напиши плиз пример, буду оч благодарен
     
  7. crystalbit

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

    Регистрация:
    6.06.2008
    Сообщения:
    212
    Одобрения:
    88
    Репутация:
    8
    если проверяешь в начале строки
    Code:
    if Pos('%%',msg)=1 then begin //позиция в строке
    s:=copy(msg,3,MaxINT);//в переменной s теперь то, что после %% и до конца
    //ни у дальше че те надо, вносит в TStringList и т.п.
    end;
    
    ну и есть еще много вариантов

    а, ну чтоб смотреть соответствия, вносить туда, я юзал TStringList или массив record'ов, можно, что наверное и лучше, юзать бд
     
    #2407 crystalbit, 21.12.2008
    В последний раз редактировалось: 21.12.2008
  8. crystalbit

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

    Регистрация:
    6.06.2008
    Сообщения:
    212
    Одобрения:
    88
    Репутация:
    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 - Старейшина

    Регистрация:
    27.03.2008
    Сообщения:
    252
    Одобрения:
    42
    Репутация:
    6
    народ, подскажите:
    как включать/выключать звук в системе на Delphi n7?
     
  10. desTiny

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

    Регистрация:
    4.02.2007
    Сообщения:
    1 006
    Одобрения:
    444
    Репутация:
    94
    юзай TIdCookieCollection - как-то так оно называется
     
  11. desTiny

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

    Регистрация:
    4.02.2007
    Сообщения:
    1 006
    Одобрения:
    444
    Репутация:
    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 пользователь.
  12. RaX

    RaX Member

    Регистрация:
    7.06.2008
    Сообщения:
    34
    Одобрения:
    34
    Репутация:
    0
    Помогите пожалуйста по RichEdit. Как мона вставить в середину какой-либо строки ричедита отформатированный текст? Вот например если отформатировать в вордпаде некоторые участки текста, загнать в буфер и вставить на ричедите, то он точно такой же и отобразится. Как сделать такое кодом?
     
  13. Ponchik

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

    Регистрация:
    30.08.2005
    Сообщения:
    687
    Одобрения:
    807
    Репутация:
    311
    Такая вот проблема...
    Создал TWebBrowser (wb1) в нём гружу с сайта форму, получаю имя поля в форме так
    wb1.oleobject.document.getelementbyid('form').item(0).Name
    'form' это имя формы, но если у формы нет имени, что делать? :(
    =========
    А, всё, додумал сам
    Может кому надо
    wb1.oleobject.document.forms.item(0).item(0).Name
     
    #2413 Ponchik, 26.12.2008
    В последний раз редактировалось: 26.12.2008
    Это одобряют 2 пользоветелей.
  14. crystalbit

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

    Регистрация:
    6.06.2008
    Сообщения:
    212
    Одобрения:
    88
    Репутация:
    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 - Старейшина

    Регистрация:
    6.03.2007
    Сообщения:
    251
    Одобрения:
    49
    Репутация:
    -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.12.2008
    В последний раз редактировалось: 28.12.2008
  16. crystalbit

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

    Регистрация:
    6.06.2008
    Сообщения:
    212
    Одобрения:
    88
    Репутация:
    8
    у меня отправка с мыла на майле работала на стандартном порте и при AuthenticationType := atLogin

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

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

    Регистрация:
    7.08.2007
    Сообщения:
    108
    Одобрения:
    48
    Репутация:
    -1
    Ну Username явно без '@mail.ru' должен быть ...
     
  18. xaker-boss

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

    Регистрация:
    6.03.2007
    Сообщения:
    251
    Одобрения:
    49
    Репутация:
    -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

    Регистрация:
    6.01.2008
    Сообщения:
    916
    Одобрения:
    550
    Репутация:
    66
    хакеры блин :-\\
    ===

    xaker-boss, у тя какая версия Delphi?
     
    #2419 De-visible, 28.12.2008
    В последний раз редактировалось: 28.12.2008
  20. crystalbit

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

    Регистрация:
    6.06.2008
    Сообщения:
    212
    Одобрения:
    88
    Репутация:
    8
    xaker-boss, у нас видимо разные версии indy) у меня который по умолчанию в delphi 7) делай как было у тебя с authtype
     
Статус темы:
Тема закрыта для ответов.