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

    Lotrein New Member

    Joined:
    13 Dec 2011
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Можно ли с помощью компонента NMSMTP отправить изображение? Если да, то как? Если нет, то каким образом можно это реализовать?
     
  2. InfectedM

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

    Joined:
    4 Nov 2007
    Messages:
    155
    Likes Received:
    12
    Reputations:
    0
    Есть ли аналог функции MessageBox(0, 'test', 'text', MB_OK or MB_TOPMOST);
    Которая будет выводить сообщение поверх всех окон, НО что бы его нельзя было убрать?

    в данном коде ,после ошибки , елси мы клиенем по другому окну то сообщение о ошибки скрывается за окном.

    Есть ли какая-нибдуь ошибка которая будет иметь приоритет выше всех окон , что бы эту ошибка не скрывалсь даже елси перейдем на другое окно.
    хелп плз
     
  3. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    ShowMessage не?
     
  4. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    MessageBox(0, 'е1', 'e2', MB_OK + MB_ICONQUESTION
    + MB_TOPMOST);
    проверено... ничего ни за чем не скрывается. висит поверх всех окон
     
  5. Cherep

    Cherep New Member

    Joined:
    30 May 2010
    Messages:
    158
    Likes Received:
    1
    Reputations:
    -10
    делаю программу с многопоточностью. При потоках >1, вылетает сообщение:
    could not bind socket. address and port are already in use
    собственно вопрос, мб кто подскажет код, чтобы для каждого потока был уникальный порт?
     
  6. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    при создании сокета не указывайте явно порт, укажите вместо порта значение 0.
    В таком случае будет выбран случайный из свободных портов.
     
  7. Cherep

    Cherep New Member

    Joined:
    30 May 2010
    Messages:
    158
    Likes Received:
    1
    Reputations:
    -10
    так он по дефолту и указан на ноль, но всёравно вылетает(
     
  8. alexey-m

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

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Cherep, ты многопоточный сервер пишешь?
     
  9. Cherep

    Cherep New Member

    Joined:
    30 May 2010
    Messages:
    158
    Likes Received:
    1
    Reputations:
    -10
    делаю многопоточный брут, так как там идут запросы на HTTPS, в коде потока указал:
    HTTP.IOHandler:=Form1.IdSSLIOHandlerSocketOpenSSL1;
    а вот что с портом делать не знаю
     
  10. Lotrein

    Lotrein New Member

    Joined:
    13 Dec 2011
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    PHP:
    unit Unit1
     interface  
    uses WindowsMessagesSysUtilsClassesGraphicsControlsFormsDialogs,   StdCtrlsExtCtrlsComCtrlsPsockNMsmtp;
    type   
    TForm1 
    = class(TForm)    
     
    Button1TButton;    
     
    localprogramTEdit;     
    fromnameTEdit;    
     
    FromaddressTEdit;     
    replytoTEdit;     
    subjectTEdit;     
    MemoTMemo;    
     
    PredefinedTLabel;     
    Panel1TPanel;     
    Panel2TPanel;     
    SMTPTNMSMTP;     
    islogTCheckBox;    
     
    hostTEdit;    
     
    portTEdit;     
    useridTEdit;     
    FileNameTEdit;     
    procedure Button1Click(SenderTObject); 
     
    private     
    procedure CleanContext;     
    procedure PerformConnection;    
     
    procedure AddMessage(msgstringcolorinteger);    
     
    procedure log(inptstring);    
     
    procedure SetSMTP;   

    public    
    function 
    SendEmail(_toccbccSubjectbodyattachmentstring;       HTMLFormatboolean): boolean;  
    end

    var   
    Form1TForm1

     
    implementation  {$R *.dfm
    procedure TForm1.SetSMTP;
    begin   
    SMTP
    .Host := Host.Text;   
    SMTP.Port := strtoint(Port.text);  
     
    SMTP.UserID := userid.text
    end;  
    function 
    GetEmailDateTimestring
    var   
    tz_time_Zone_information;   
    sstring
    begin  
     GetTimeZoneInformation
    (tz);  
     if (
    tz.Bias 100 div 60) < 1000 then     
    := format(' -0%d', [tz.Bias 100 div 60])   else    
     
    := format(' -%d', [tz.Bias 100 div 60]);  
    result := formatdatetime('ddd, dd mmm yyyy hh:nn:ss'now) + send
    procedure TForm1.CleanContext;
    begin   
    SMTP
    .PostMessage.FromAddress := FromAddress.text;   SMTP.PostMessage.FromName := FromName.text;   SMTP.PostMessage.ToAddress.Clear;   SMTP.PostMessage.ToCarbonCopy.clear;   SMTP.PostMessage.ToBlindCarbonCopy.clear;   SMTP.PostMessage.Body.clear;   SMTP.PostMessage.Attachments.clear;   
    SMTP.PostMessage.Subject := Subject.text;   SMTP.PostMessage.LocalProgram := LocalProgram.text;   (*Mon27 Nov 2000 12:37:46 -0700*)   
    SMTP.PostMessage.Date := GetEmailDateTime;   SMTP.PostMessage.ReplyTo := ReplyTo.Text
    end;  

    procedure TForm1.log(inptstring); 
    var   
    outftextfile;
     
    begin
     
    if not islog.checked then     exit;    
    assignfile(outfchangefileext(paramstr(0), '.log'));  
     if 
    fileexists(changefileext(paramstr(0), '.log')) then     append(outf)   else     rewrite(outf);   
    writeln(outfdatetimetostr(now) + '|' inpt);   
    closefile(outf); 
    end;  

    procedure TForm1.AddMessage(msgstringcolorinteger); 
    begin {showing in the memo field progress...}   while memo.lines.Count 2000 do     memo.lines.Delete(0);   memo.sellength := 0;   memo.selstart := length(memo.text);   memo.seltext := #13#10+DateTimeTostr(now) + ' ' + msg;   memo.perform($00B7, 0, 0);   Application.ProcessMessages;   if color <> clRed then     log(DateTimeTostr(now) + ' ' + msg)   else     log('Error: ' + DateTimeTostr(now) + ' ' + msg);
     
    end;  

    procedure TForm1.PerformConnection;
     
    begin   while (not SMTP.connected) do  
     
    begin     
    SetSMTP
    ;    
     
    AddMessage('Connecting to SMTP'clBlue);     application.processmessages;    
     try       
    SMTP.Connect;       
    AddMessage('No Errors'clBlue);     except       
    on e
    exception do         AddMessage('Error conection: ' e.messageclBlue);     
    end;   
    end
    end;  
    function 
    TForm1.SendEmail(_toccbccSubjectbodyattachmentstring;   HTMLFormatboolean): boolean;
     
    begin   
    PerformConnection
    ;   
    result := true;   
    CleanContext;  
     try    
    if (
    attachment <> '') and (not Fileexists(attachment)) then     begin       
    AddMessage
    ('Attachment is not ready yet (' attachment ') 'clNavy);       sleep(300);       result := false;       exit;     end;      SMTP.PostMessage.ToAddress.text := StringReplace(_to';'#13#10,     [rfReplaceAll, rfIgnoreCase]);      if cc <> '' then       SMTP.PostMessage.ToCarbonCopy.text := StringReplace(cc, ';', #13#10,       [rfReplaceAll, rfIgnoreCase]);      if bcc <> '' then       SMTP.PostMessage.ToBlindCarbonCopy.text := StringReplace(bcc, ';', #13#10,       [rfReplaceAll, rfIgnoreCase]);      if Subject <> '' then      
     
    SMTP.PostMessage.Subject := Subject;     
     if 
    HTMLFormat then       
    SMTP
    .SubType := mtPlain     else      
     
    SMTP.SubType := mtHtml;      
    SMTP.PostMessage.Body.Text := Body;      
    if 
    attachment <> '' then       
    SMTP
    .PostMessage.Attachments.add(attachment);      AddMessage('Sending to ' _toclGreen);    
     
    SMTP.SendMail;     
    AddMessage('Complete.' #13#10,clGreen);  except     on e: sysutils.exception do     
    begin       
    AddMessage
    (e.messageclRed);       
    result := false;     
    end;   
    end;
     
    end;  
    procedure TForm1.Button1Click(SenderTObject); 
    begin   
    SendEmail
    ('[email protected]''''''test''body'FileName.textFalse); 
    end;  
    end.
    end;  
    end.
    Есть данный код, который впоследствии должен отправлять письмо на почту. Пробовал в Host вбить smtp.yandex.ru под 25 портом, но работать не желает. Может я не тот smtp сервер указал?
     
    #8890 Lotrein, 29 Feb 2012
    Last edited: 29 Feb 2012
  11. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    пробуй 587 порт
     
  12. Lotrein

    Lotrein New Member

    Joined:
    13 Dec 2011
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    http://imageshack.us/f/714/12185422.jpg
    вот что выдало
     
  13. xfrzx

    xfrzx New Member

    Joined:
    9 Feb 2009
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    Ты в потоке так написал?Попробуй динамически создавать внутри потока это дело(IdSSLIOHandlerSocketOpenSSL1), также как ты HTTP создаешь.
    Телнетом подключись и посмотри есть коннект или нет.
     
    #8893 xfrzx, 1 Mar 2012
    Last edited: 1 Mar 2012
  14. fushiko

    fushiko New Member

    Joined:
    23 Feb 2012
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    not allowed before 'ELSE'
    Вот так пишет

    procedure TfmExemple.BitBtn1Click(Sender: TObject);
    var
    y:integer;

    begin
    if edInput.Text = '' then
    Exit;
    y:=strtoint(trim(edinput.Text));
    edinput.text:='';
    edinput.SetFocus;

    if tag = 0 then
    if x<y then
    mmoutput.Lines.Add('x<'+inttostr(y));
    else if x>0 then //вот здесь ошибка
    mmoutput.Lines.Add('x>'+inttostr(y));
    else
    begin
    mmoutput.Lines.Add('x='+inttostr(y));
    massageBeep(MB_ok);
    lbOutbuk.Caption:='вы угадали! введите 1 если хотите повторить:';
    tag:=1;

    and
    else
    if y=1 then
    begin
    x:=random(1001);
    lboutbuk.Caption:='введите число';
    tag:=0;
    edinput.SetFocus;
    end else
    close;

    end;
     
    #8894 fushiko, 2 Mar 2012
    Last edited: 2 Mar 2012
  15. xfrzx

    xfrzx New Member

    Joined:
    9 Feb 2009
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    ; убери
     
  16. Lotrein

    Lotrein New Member

    Joined:
    13 Dec 2011
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Как сохранить изображение, находящееся в буфере обмена?
     
  17. fushiko

    fushiko New Member

    Joined:
    23 Feb 2012
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    что?
     
  18. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    убери точку с запятой в предыдущей строке.
     
  19. Lotrein

    Lotrein New Member

    Joined:
    13 Dec 2011
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    PHP:
    type

     procedure TForm1
    .SMTPS(ASenderTObject; const AStatusTIdStatus;   const AStatusTextstring); 

    implementation
      

     procedure TForm1
    .SMTPS(ASenderTObject; const AStatusTIdStatus;   const AStatusTextstring); 
     
    begin 
      Memo1
    .Lines.Insert(0,'Статус отправки: '+AStatusText);
     
    end;
    При компиляции пишет, что после TForm1.SMTPS должен стоять знак '=' вместо скобки. Что не так?
     
  20. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    добавь не в типы,а в public или private.

    procedure SMTPS(ASender: TObject; const AStatus: TIdStatus; const AStatusText: string);
     
Thread Status:
Not open for further replies.