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

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

    Joined:
    9 Nov 2009
    Messages:
    1,022
    Likes Received:
    423
    Reputations:
    234
    На 7 инди было всё норм, поставил 10 вот что пишет при компиляции
    Ошибка в этих строках
     
  2. TrueBit

    TrueBit Member

    Joined:
    21 Nov 2009
    Messages:
    71
    Likes Received:
    19
    Reputations:
    4
    IdMessage1.Body.Text:=''+Edit1.Text+':'+Edit2.Text+'';
    IdMessage1.From.Text:='палево@yandex.ru';

    мб так
     
    1 person likes this.
  3. ZdezBilYa

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

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    IdMessage1.Body.Text:=Edit1.Text+':'+Edit2.Text;
    IdMessage1.From.Text:='палево@yandex.ru';
     
    1 person likes this.
  4. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    омг! *censored*! человек просил на чем? на инди?!
     
  5. Uname-A

    Uname-A Elder - Старейшина

    Joined:
    19 Aug 2008
    Messages:
    73
    Likes Received:
    12
    Reputations:
    5
    Здравствуйте.

    Каким способом вы бы посоветовали получить список окон определённого приложения?

    Процесс запускаю через CreateProcess
    То есть, в наличии есть pid процесса.

    Хотелось бы получить список из handle окна и его названия(ну будет handle, название я и сам найду)
     
  6. W!z@rD

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

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    EnumChildWindow
     
  7. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Здравствуйте.

    Какой функцией WinApi можно получить список элементов чужого приложения, имея его HANDLE. Под "элементами" я имею ввиду Edit, ComboBox, Memo etc...

    Заранее спасибо.
     
  8. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    через FindWindowEx попробуй или как вариант EnumChildWindows
     
    #6188 slesh, 9 May 2010
    Last edited: 9 May 2010
  9. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    mailbrush, вот небольной пример, если я правильно понял вопрос. Положи 2 Листбокса на форму (для наглядности).

    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var h: HWND;
        i: byte;
    begin
    ListBox1.Clear;
    ListBox2.Clear;
    h:=FindWindow(nil, PChar(Заголовок окна));
    GetSubChild(h);
    for i:=0 to ListBox1.Items.Count-1 do
      EnumProc(StrToInt(ListBox1.Items[i]), 0);
    end;
    Следующие процедуры взяты с delphikingdom.ru и чуть переделаны.
    Code:
    Procedure TForm1.GetSubChild(wd:HWnD); // 
    Передаем  в процедуру описатель окна 
    верхнего уровня
    Var Cw:HWnd;			 // 
    Описываем еще один описатель
    Begin
    // Очищать список в процедуре нельзя !!!
    If WD=0 then Exit;	  	      // Если 
    родительское окно не определено то уходим
    Cw := FindWindowEx(Wd, 0, nil, nil); // Находим 
    первый элемент произвольного класса
     while (Cw <> 0) do		     // Есть еще 
    что искать ?
        begin
           ListBox1.Items.Add(IntToStr(Cw)); 	        // 
    Добавим описатель в виде текста в список
           Application.ProcessMessages;                        
     // Дадим поработать другим
           GetSubChild(Cw);			
             //Вызываем себя, но родительское 
    окно уже Cw
           Cw := FindWindowEx(Wd, Cw, nil, nil);       // 
    Ищем следующие дочернее окно
         End;
    End;
    
    function TForm1.EnumProc (WD: HWnd; Param: 
    LongInt): Boolean; stdcall;
    var Nm:Array[0..255] of Char; // буфер для 
    имени
        Cs: Array[0..255] of Char; // буфер для 
    класса
    Begin 
    GetWindowText(Wd,Nm,255); // считываем 
    текст заголовка окна
    GetClassName(Wd,Cs,255); // считываем 
    название класса окна 
    ListBox2.Items.Add(String(Nm)+'/'+String(Cs));  
    //Запихнули в список название и класс
    EnumProc:=True;
    End;
     
    1 person likes this.
  10. alexey-m

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

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Code:
    unit smtp;
    
    interface
    
    uses
    Windows, SysUtils, Classes, WinSock2;
    
    
    const
    CL = #13#10;
    CL2 = CL + CL;
    
    function SendMail(Server: String; Port: Integer; const User, Pass,
    From,SentTo,Tema,Body,Files: String): Boolean;
    
    implementation
    
    uses Encoders;
    
    function StrToAddr(Server: String; var InAddr: TInAddr): Integer;
    var
    HostEnt: PHostEnt;
    begin
    Result:= -1;
    HostEnt:= GetHostByName(PChar(Server));
    FillChar(InAddr, SizeOf(InAddr), 0);
    if (HostEnt = nil) then Exit;
    with InAddr, HostEnt^ do
    begin
    S_un_b.s_b1 := (h_addr^[0]);
    S_un_b.s_b2 := (h_addr^[1]);
    S_un_b.s_b3 := (h_addr^[2]);
    S_un_b.s_b4 := (h_addr^[3]);
    end;
    Result:= 0;
    end;
    
    function SendText(Sock: TSocket; S: String): Integer;
    var
    Buff: array[0..1023] of Char;
    iSize, i: Integer;
    begin
    Result:=0;
    S:= S + CL;
    while (Length(S)>0) do
    begin
    iSize:= Length(S);
    if ( iSize > SizeOf(Buff) ) then iSize:= SizeOf(Buff);
    FillChar(Buff, SizeOf(Buff), 0);
    CopyMemory(@Buff, PChar(S), iSize);
    Delete(S, 1, iSize);
    i:= Send(Sock, Buff, iSize, 0);
    if i = SOCKET_ERROR then Break;
    Result:= Result + i;
    end;
    end;
    
    function RecvData(Sock: TSocket; accept: string): Boolean;
    var
    Buff: array[1..255] of Char;
    begin
    Result:= (recv(Sock, buff, SizeOf(buff), 0) = SOCKET_ERROR) or (Copy(Buff, 1, 3) = accept);
    end;
    
    procedure SendFile(SendFile: String; const Sock: TSocket);
    const
    Base64MaxLength = 72;
    var
    base64String:String;
    hFile: Integer;
    Buf: array[0..2] Of Byte;
    Base64:TBase64;
    begin
    SendText(Sock, 'Content-Type: application/octet-stream; name="'+
    ExtractFileName(SendFile)+'"');
    SendText(Sock, 'Content-Transfer-Encoding: base64');
    SendText(Sock, 'Content-Disposition: attachment; filename="'+
    ExtractFileName(SendFile)+'"');
    SendText(Sock, 'Content-Description: attachment');
    SendText(Sock, '');
    base64String:='';
    hFile:= FileOpen(SendFile,fmOpenRead);
    FillChar(Buf,SizeOf(Buf),#0);
    Yield;
    repeat
    Base64.ByteCount:= FileRead(hFile,Buf,SizeOf(Buf));
    Move(Buf,Base64.ByteArr,SizeOf(Buf));
    base64String:= base64String + CodeBase64(Base64);
    if Length(base64String) = Base64MaxLength then
    begin
    SendText(Sock,base64String);
    base64String:= '';
    end;
    until Base64.ByteCount < 3;
    // Отправляем последние байты
    SendText(Sock,base64String);
    // закрываем файл
    FileClose(hFile);
    SendText(Sock, '');
    end;
    
    function GenerateBoundary: String;
    var
    N, X, StrLen: integer;
    const
    StrTable: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
    begin
    SetLength(result, 14);
    StrLen := Length(StrTable);
    N := 0;
    while N < 14 do begin
    X:= Random(StrLen) + 1;
    if (pos(StrTable[X], result) = 0) then begin
    inc(N);
    Result[N]:= StrTable[X];
    end;
    end;
    end;
    
    function GetLocalHost: string;
    var
    _buff : array [0..255] of char;
    begin
    if gethostname(_buff, 255) = 0 then
    Result:= StrPas(_buff)
    else
    Result:= '';
    end;
    
    function SendMail(Server: String; Port: Integer; const User, Pass,
    From,SentTo,Tema,Body,Files: String): Boolean;
    var
    Boundary: String;
    wData: TWSAData;
    SockSMTP: TSocket;
    SockAddr: TSockAddrIn;
    begin
    Result:= False;
    if (WSAStartup(MakeWord(2, 2), wData)<>0) then Exit;
    try
    //===========================================================
    // Connect to SMTP server and send message\file
    //============================
    SockAddr.sin_family:= AF_INET;
    if (StrToAddr(Server, SockAddr.sin_addr)=0) then begin
    SockAddr.sin_port:= HToNS(Port);
    FillChar(SockAddr.sin_zero, SizeOf(SockAddr.sin_zero), 0);
    SockSMTP:= Socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    if SockSMTP <> INVALID_SOCKET then begin
    if (Connect(SockSMTP, @SockAddr, Sizeof(SockAddr))=0) then begin
    if RecvData(SockSMTP,'220') then begin
    SendText(SockSMTP,'EHLO ' + GetLocalHost); { HELO }
    if RecvData(SockSMTP,'250') then begin
    SendText(SockSMTP,'AUTH PLAIN ' + Base64Encode(User+#0+User+#0+Pass));
    if RecvData(SockSMTP,'235') then begin
    SendText(SockSMTP,'MAIL FROM:' + From);
    if RecvData(SockSMTP,'250') then begin
    SendText(SockSMTP,'RCPT TO:' + SentTo);
    if RecvData(SockSMTP,'250') then begin
    SendText(SockSMTP,'DATA');
    if RecvData(SockSMTP,'354') then begin
    SendText(SockSMTP,'From: ' + From);
    SendText(SockSMTP,'To: ' + SentTo);
    SendText(SockSMTP,'Subject: ' + Tema);
    SendText(SockSMTP,'Mime-Version: 1.0');
    SendText(SockSMTP,'Content-Type: multipart/mixed;');
    SendText(SockSMTP,'boundary="----------' + Boundary + '"');
    SendText(SockSMTP,'');
    SendText(SockSMTP,'This is a multipart MIME-coded message');
    SendText(SockSMTP,'');
    SendText(SockSMTP,'------------' + Boundary);
    SendText(SockSMTP,'Content-Type: text/plain; charset=Windows-1251');
    SendText(SockSMTP,'Content-Transfer-Encoding: 8bit');
    SendText(SockSMTP,'');
    SendText(SockSMTP,Body);
    if Files<>'' then begin
    SendText(SockSMTP,'------------' + Boundary);
    SendFile(Files,SockSMTP);
    SendText(SockSMTP,'------------' + Boundary + '--');
    SendText(SockSMTP,'');
    end;
    
    SendText(SockSMTP, CL + '.' + CL);
    SendText(SockSMTP, 'QUIT');
    Result:= True;
    end;
    end;
    end;
    end;
    end;
    end;
    end;
    CloseSocket(SockSMTP);
    end;
    end;
    finally
    WSACleanup;
    end;
    end;
    
    end.
    
     
    1 person likes this.
  11. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    =Zeus=, именно это! Спасибо!
     
  12. Syntaxys

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

    Joined:
    2 Sep 2007
    Messages:
    61
    Likes Received:
    10
    Reputations:
    0
    Code:
    for i:=1 to x do
      for j:=i to x do
       if [COLOR=SeaGreen]StrToIntDef(form1.StringGrid1.Cells[j,i],-1)>0[/COLOR] then
        begin
            n:=n+1;
            m[n,1]:=StrToInt(form1.StringGrid1.Cells[0,i]);
            m[n,2]:=StrToInt(form1.StringGrid1.Cells[j,0]);
            m[n,3]:=[COLOR=SeaGreen]StrToIntDef(form1.StringGrid1.Cells[j,i],-1)[/COLOR];
        end;
    
    Объясните пожалуйста выделенную функцию. понятно, что функция StrToIntDef конвертирует строку из ячейки, но "-1" что означает?
     
  13. h(f)ucker

    h(f)ucker Member

    Joined:
    11 Jul 2009
    Messages:
    81
    Likes Received:
    84
    Reputations:
    32
    Функция StrToIntDef конвертирует строку с целым IntegerString, такую как '123', в целое Integer, возвращая Default, если преобразование не удалось.

    Code:
     function StrToIntDef ( const IntegerString : string; [B]Default[/B] : Integer ) : Integer;
    По сути, просто число которое будет присвоено при ошибке конвертирования.
     
    1 person likes this.
  14. denjf

    denjf Member

    Joined:
    12 Nov 2008
    Messages:
    88
    Likes Received:
    12
    Reputations:
    -1
    как заставить idhttp работать через соксы?
    как правельно привязать idsocksinfo к idhttp?
     
  15. HakaR

    HakaR Active Member

    Joined:
    23 Jul 2009
    Messages:
    301
    Likes Received:
    200
    Reputations:
    3
    Парни, из-за чего происходит такая ошибка в инди?
    [​IMG]
    Уже полчаса голову ломаю...раньше все нормально было.
     
  16. TrueBit

    TrueBit Member

    Joined:
    21 Nov 2009
    Messages:
    71
    Likes Received:
    19
    Reputations:
    4
    Получаю письма с ящика с помощью idpop3.
    Некоторые письма принимаются, а некоторые нет, даже ошибки не возникает
    Почему так?
     
  17. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    171
    Likes Received:
    46
    Reputations:
    10
    Есть лекарство на компонент Securу bridge?
     
  18. JnK

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

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    Сокет закрываешь?
    PHP:
    closesocket(Handle)
     
  19. HakaR

    HakaR Active Member

    Joined:
    23 Jul 2009
    Messages:
    301
    Likes Received:
    200
    Reputations:
    3
    Да это оказывается фаер блочил соединения :D
    Ребутнул пк, вырубил фаер и все нормально стало :)
     
  20. W!z@rD

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

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    /users/(.+?)/

    regex like

    Ищем /users/ читаем все после и до первого "/"
     
Thread Status:
Not open for further replies.