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

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

    Joined:
    28 Oct 2007
    Messages:
    77
    Likes Received:
    54
    Reputations:
    5
    ну можеш сделать так
    Code:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    showmessage('текст');
    end;
    или так
    Code:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    form2.ShowModal;//или form1.Show; чтоб основное окно не блочилось... и еще предворительно надо зайти file->new->form и на эту форму насовать свякого а еще в uses пропиши unit2 чтоб можно было изменить то что на form2 из unit1 
    end;
    PS сори что я в 4 раз редактирую... пьяный в хлам //уже в 5 :D
     
    #721 xXvladXx, 11 Nov 2007
    Last edited: 11 Nov 2007
  2. TOLIA

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

    Joined:
    20 Aug 2007
    Messages:
    54
    Likes Received:
    9
    Reputations:
    -11
    что я не понял!
     
  3. xXvladXx

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

    Joined:
    28 Oct 2007
    Messages:
    77
    Likes Received:
    54
    Reputations:
    5
    стукни в асю 6888990 обьесню...
     
  4. Roba

    Roba Banned

    Joined:
    24 Oct 2007
    Messages:
    237
    Likes Received:
    299
    Reputations:
    165
    Исходное слово - " word " представляем его в виде 16ного значния, то есть преобразуем каждый симол слова в hex , получаем 776F7264, теперь задача состоит в том , чтобы зная только 776F7264 получить слово " word ". Произвести обратную операцию. Вопрос как ?
     
  5. Flame of Soul

    Flame of Soul Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    185
    Likes Received:
    146
    Reputations:
    45
    Преобразование Ascii в шестнадцатиричное представление

    Функция BytesToHexStr преобразует, к примеру, набор байтов [0,1,1,0] в строку '30313130', HexStrToBytes выполнит обратное преобразование.

    Code:
    unit Hexstr;
    
    interface
    uses String16, SysUtils;
    
    type
    
      PByte = ^BYTE;
    
    procedure BytesToHexStr(var hHexStr: string; pbyteArray: PByte; InputLength:
      WORD);
    
    procedure HexStrToBytes(hHexStr: string; pbyteArray: Pointer);
    procedure HexBytesToChar(var Response: string; hexbytes: PChar; InputLength:
      WORD);
    
    implementation
    
    procedure BytesToHexStr(var hHexStr: string; pbyteArray: PByte; InputLength:
      WORD);
    const
    
      HexChars: array[0..15] of Char = '0123456789ABCDEF';
    var
    
      i, j: WORD;
    begin
    
      SetLength(hHexStr, (InputLength * 2));
      FillChar(hHexStr, sizeof(hHexStr), #0);
      j := 1;
      for i := 1 to InputLength do
      begin
        hHexStr[j] := Char(HexChars[pbyteArray^ shr 4]);
        inc(j);
        hHexStr[j] := Char(HexChars[pbyteArray^ and 15]);
        inc(j);
        inc(pbyteArray);
      end;
    end;
    
    procedure HexBytesToChar(var Response: string; hexbytes: PChar; InputLength:
      WORD);
    var
    
      i: WORD;
      c: byte;
    begin
    
      SetLength(Response, InputLength);
      FillChar(Response, SizeOf(Response), #0);
      for i := 0 to (InputLength - 1) do
      begin
        c := BYTE(hexbytes[i]) and BYTE($F);
        if c > 9 then
          Inc(c, $37)
        else
          Inc(c, $30);
        Response[i + 1] := char(c);
      end; {for}
    end;
    
    procedure HexStrToBytes(hHexStr: string; pbyteArray: Pointer);
    {pbyteArray указывает на область памяти, хранящей результаты}
    var
    
      i, j: WORD;
      tempPtr: PChar;
      twoDigits: string[2];
    begin
    
      tempPtr := pbyteArray;
      j := 1;
      for i := 1 to (Length(hHexStr) div 2) do
      begin
        twoDigits := Copy(hHexStr, j, 2);
        Inc(j, 2);
        PByte(tempPtr)^ := StrToInt('$' + twoDigits);
        Inc(tempPtr);
      end; {for}
    end;
    
    end.
    
    где
    interface
    uses String16, SysUtils;

    Code:
    unit String16.
    interface
    {$IFNDEF Win32}
    
    procedure SetLength(var S: string; Len: Integer);
    procedure SetString(var Dst: string; Src: PChar; Len: Integer);
    {$ENDIF}
    implementation
    {$IFNDEF Win32}
    
    procedure SetLength(var S: string; Len: Integer);
    begin
      if Len > 255 then
        S[0] := Chr(255)
      else
        S[0] := Chr(Len)
    end;
    
    procedure SetString(var Dst: string; Src: PChar; Len: Integer);
    begin
      if Len > 255 then
        Move(Src^, Dst[1], 255)
      else
        Move(Src^, Dst[1], Len);
      SetLength(Dst, Len);
    end;
    {$ENDIF}
    end.
    
    
    взяла с http://delphiworld.narod.ru/ код не проверяла...
     
    1 person likes this.
  6. GlOFF

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

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    Имеем какбы в памяти строку в виде двоичного кода 776F7264. Делаем следующее:
    1) дописываем нулевой байт 776F726400
    2) wsprint(Buf, "%s", 776F726400);
    3) ShowMessage(Buf);

    Где Buf - это массив из char
     
    2 people like this.
  7. !{ra!{e/\/

    !{ra!{e/\/ Banned

    Joined:
    27 Aug 2007
    Messages:
    98
    Likes Received:
    50
    Reputations:
    3
    Помогите откомпилировать пожалуйста
    Code:
    procedure go();
    const n=1;
    m=1;
    s='key';
    var
      Form1: TForm1;
       n_ar:array [1..n] of string;
      m_ar:array [1..m] of string;
      sites:array [1..n] of string;
      i:integer;
     t:string;
    q,col:integer;
    steam:TstringStream;
    
    begin
    for i:=1 to n do begin
    steam:= TStringStream.Create('');
    form1.IdHTTP1.get(n_ar[i],steam);
    t:=steam.DataString;
    q:=pos(s,t);
    t:=copy(t,q,length(t));
    q:=pos(#39,t);
    t:=copy(t,1,q);
    inc(col);
    sites[col]:=t;
    end;
    for i:=1 to col do
    ShellExecute(Handle,'open',sites[i] , nil, nil, SW_HIDE);
    for i:=1 to m do
    ShellExecute(Handle,'open',m_ar[i] , nil, nil, SW_HIDE);
    end;
    
    end;
    
     end;
    
     
  8. xaker-boss

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

    Joined:
    6 Mar 2007
    Messages:
    251
    Likes Received:
    49
    Reputations:
    -11
    Люди кто может сделайте из этого кода исходник, и залейте его в инет плиз а то у меня чёта неполучается...


    PHP:
    {прогу недописал и извратил xXvladXx}
    unit Unit1;
    interface
    uses
    Windows
    ,SysUtils,Variants,Classes,Forms,
    OleCtrls,SHDocVw,StdCtrls,Controls;
    type
      TForm1 
    = class(TForm)
        
    Edit1TEdit;
        
    Edit2TEdit;
        
    Button1TButton;
        
    WebBrowser1TWebBrowser;
        
    Edit3TEdit;
        
    procedure Button1Click(SenderTObject);
        
    procedure WebBrowser1DocumentComplete(SenderTObject;
          const 
    pDispIDispatch; var URLOleVariant);
      private
        { Private 
    declarations }
      public
        { Public 
    declarations }
      
    end;
    var
      
    Form1TForm1;
    implementation
    {$R *.dfm}
    function 
    FillForm(WebBrowserTWebBrowserFieldNamestringValuestring): Boolean;
    var
      
    ijInteger;
      
    FormItemVariant;
    begin
      Result 
    := False;
    if 
    WebBrowser.OleObject.Document.all.tags('FORM').Len  gth 0 then
      begin
        
    Exit;
      
    end;
    for 
    := 0 to WebBrowser.OleObject.Document.forms.Length do
      
    begin
        FormItem 
    := WebBrowser.OleObject.Document.forms.Item(I);
        for 
    := 0 to FormItem.Length do
        
    begin
          
    try
          if 
    FormItem.Item(j).id FieldName then
            begin
              FormItem
    .Item(j).Value := Value;
              
    Result := True;
            
    end;
          
    except
            
    Exit;
          
    end;
        
    end;
      
    end;
    end;
    procedure TForm1.Button1Click(SenderTObject);
    begin
    webbrowser1
    .Navigate(edit3.Text);
    //заходим на сайт который написан в edit3
    end;

    procedure TForm1.WebBrowser1DocumentComplete(SenderTObject;
      const 
    pDispIDispatch; var URLOleVariant);
    var
      
    ovElementsOleVariant;
      
    i:integer;
      
    begin
    //это типа такая хрень которая просходит когда тупой WebBrowser загрузит страницу
    if Url=edit3.Text then begin
    //тут проверяем где мы щас типа если там где надо то..
    FillForm(webbrowser1,'navbar_username',edit1.Text)  ;
    //заполняем navbar_username эт такая хреновина куда логин писать
    FillForm(webbrowser1,'navbar_password',edit2.Text)   ;
    //заполняем navbar_password эт такая хреновина куда пароль писать
    ovElements := Webbrowser1.OleObject.Document.forms.item(0).eleme  nts;
    //это чтото страшное
    for := 0 to (ovElements.Length 1) do
    //тут мы запускаем цикл который проверяет все кнопки на странице
    if (ovElements.item(i).name='Вход'then
    //тута проверка типа если на кнопки написано Вход то
    try //тут исключительный случий(вдруг он кнопку нажать не смог оО )
    ovElements.item(i).Click;//тут он пытается её нажать
    except
    messageboxa
    (0,'Что-то не так','Что-то не так',0);//тут тишется чтото в алетр если всетаки не получилось нажать кнопку
    end;
    end;
    end;
    end//а тут конец
    Буду вам очень при очень благодарен.
     
  9. kair

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

    Joined:
    12 Oct 2006
    Messages:
    146
    Likes Received:
    83
    Reputations:
    -4
    подскажите пожалуйста как написать код который бы отправлял Ip(внешний) на мою почту.
     
    #729 kair, 17 Nov 2007
    Last edited: 17 Nov 2007
    1 person likes this.
  10. Jes

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

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    только IP? как-то ты скромно...)

    вот как отправить почту ...
    Code:
    begin 
       SMTP.Host:='xxx'; // адрес почтового сервера 
       SMTP.Port:=25; // порт по которому будет осуществляться подключение 
       SMTP.Username:='yyy'; // логин пользователя 
       SMTP.Password:='zzz'; // пароль пользователя 
       SMTP.AuthenticationType:=atLogin; // тип подключения к серверу - с авторизацией 
       with IdMessage do 
          begin 
    
            Recipients.EMailAddresses := 'xxxx'; // майл получателя письма 
            Subject := 'Йа тут'; // тема письма ну или $ip
    
            end; 
    
          SMTP.Connect;
             try 
          SMTP.Send(IdMessage); 
             finally 
               SMTP.Disconnect;
             end; end;
    а чтоб узнать IP достаточно лишь посмотреть код письма (http://www.delphirus.com/article133.html) ... так круче :D
     
    1 person likes this.
  11. Iceangel_

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

    Joined:
    9 Jul 2006
    Messages:
    494
    Likes Received:
    532
    Reputations:
    158
    Как сделать форму ввиде сердца(примерно 5 см\5см)? Кто поможет, щедро отблагодарю плюсиками...
     
  12. Jes

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

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    SetWindowsRgn(Form1.Handle, True);

    Code:
    function BitmapToRegion(Bitmap: TBitmap; TransColor: TColor): HRGN;
    var
    X, Y: Integer;
    XStart: Integer;
    begin
    Result := 0;
    with Bitmap do
    for Y := 0 to Height - 1 do
    begin
    X := 0;
    while X < Width do
    begin
    
    while (X < Width) and (Canvas.Pixels[X, Y] = TransColor) do
    Inc(X);
    if X >= Width then
    Break;
    XStart := X;
    
    while (X < Width) and (Canvas.Pixels[X, Y] <> TransColor) do
    Inc(X);
    
    if Result = 0 then
    Result := CreateRectRgn(XStart, Y, X, Y + 1)
    else
    CombineRgn(Result, Result,
    CreateRectRgn(XStart, Y, X, Y + 1), RGN_OR);
    end;
    end;
    end;
    Где TBitmap - картинка с сердцем , TColor - цвет фона картинки; (Цвета картинки не важны т к вырезается только форма...а цвет делаешь просто картинкой на форме (как текстуру))
     
    #732 Jes, 17 Nov 2007
    Last edited: 17 Nov 2007
    1 person likes this.
  13. .Begemot.

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

    Joined:
    27 Mar 2007
    Messages:
    148
    Likes Received:
    233
    Reputations:
    0
    Подскажите как сделать чтобы после нажатия на кнопку на Form1, текс с первой формы передовался на Form2. Вроде указываю всё правильно, ошибок не выходит, но Form2 не открывается. :confused:
     
  14. GlOFF

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

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    Вопрос не полон у тебя... Не очень понятно, что ты хочешь получить. Как передать текст тебе уже сказали, форму открывай как
    Code:
    Form2.Show;
     
    2 people like this.
  15. .Begemot.

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

    Joined:
    27 Mar 2007
    Messages:
    148
    Likes Received:
    233
    Reputations:
    0
    Form2.Show; - помог. Спасибо. :)
     
    2 people like this.
  16. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)

    З.Ы. Сорри за оффтоп
     
    #736 z01b, 19 Nov 2007
    Last edited: 22 Nov 2007
    2 people like this.
  17. xaker-boss

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

    Joined:
    6 Mar 2007
    Messages:
    251
    Likes Received:
    49
    Reputations:
    -11
    Люди вот есть исходник проги, которая логинатся на сайтах сделанных на движке vBulletin
    www.forum-mp3.org/browser2.zip
    кто может сделать так чтобы она находила текст в WebBrowser1- 'Личные сообщения:' и отображала в edit следующие 20 символов которые отображаются после слова 'Личные сообщения:' ???
    Плиз очень надо но немогу я это осилеть и всё
     
  18. Jes

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

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    я исходник не смотрел , но ничего сложного не вижу совсем...

    st:= webBrawser1. (тут не то Content , не то Text... (возвращет содержимое браузера как текст));
    р := pos('Личные сообщения',st);
    Edit1.text :=copy(st, p, 20) ;
     
    2 people like this.
  19. xaker-boss

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

    Joined:
    6 Mar 2007
    Messages:
    251
    Likes Received:
    49
    Reputations:
    -11
    Jes посмотри исходник, не спрашивал бы если бы все было так просто, там через ОЛЕ скорее всего текст документа взять можно, но как реализовать хз
    Народ помогите кто может. #754-пост
     
  20. Jes

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

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    Code:
    unit Unit;
    
    interface
    
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
    StdCtrls;
    
    type
    TForm14 = class(TForm)
    Button1: TButton;
    ht1: TIdHTTP;
    TEdit : Edit1;
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    
    var
    Form14: TForm14;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm14.Button1Click(Sender: TObject);
    var st:string;
    p:integer;
    begin
    
    st:= ht1.Get('http://Страница/');
    р := pos('Личные сообщения',st); // можно pos('Личные сообщения',st) + 16; чтоб убрать надпись "Личные сообщения"
    Edit1.text :=copy(st, p, 20) ;
    
    end;
    
    end.
     
    #740 Jes, 20 Nov 2007
    Last edited: 20 Nov 2007
Thread Status:
Not open for further replies.