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

    Seregakz New Member

    Joined:
    13 Jun 2009
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    не совсем дошло) вот исходничок)

    Code:
    function mp3(cto: string): string;
     var F: File;
        hSession, hURL: HInternet;
        Buffer: array[1..1024] of Byte;
        err: boolean;
        ResumePos,BufferLen,SumSize: DWORD;
         iii: integer;   kyda:string;
          header, data:string;
    begin
    
    kyda:='1.mp3';
    SumSize:=0; ResumePos:=0;
    AssignFile (F,kyda);
    IF FileExists (kyda) then
      begin
       Reset(f,1);
       ResumePos:=FileSize(F);
       Seek(F, FileSize(F));
      end else ReWrite(f,1);
    form1.NADO:= TRUE;
    hSession:= InternetOpen('MP3 Down',PRE_CONFIG_INTERNET_ACCESS,nil,nil,0);
    
      Data:='Content-Type: application/x-www-form-urlencoded'#10;
    
    hURL := InternetOpenURL(hSession,PChar(cto),pchar(data),length(data),INTERNET_FLAG_NO_COOKIES,0);
    
    WaitForSingleObject(InternetOpenURL.hProcess, INFINITE);
    InternetQueryDataAvailable(hURL, SumSize,0,0);
    if ResumePos>0 then
     begin
     InternetSetFilePointer(hURL,ResumePos,nil,0,0);
     end;
    REPEAT
     err:= InternetReadFile(hURL, @Buffer,SizeOf(Buffer),BufferLen);
     IF err= false then
      begin
       Result := 'err'; 
      exit;
      end
      else
      begin
    ///
      end;
     BlockWrite(f, Buffer, BufferLen);
     Application.Processmessages;
    UNTIL (BufferLen= 0) Or (form1.NADO= FALSE);
      Result := 'ok'; 
    end;
     
  2. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Есть к примеру такой html код:

    Code:
    <html>
    <head><title>Отпарсите меня пожалуйста :-)</title></head>
    <body>
    <a href="http://yandex.ru/">Го на яндекс</a>
    <a href="http://google.ru/">Го на гугл</a>
    <a href="http://yahoo.com/">Го на яху</a>
    </body>
    </html>
    Как отпарсить этот код с помощью регулярки?
    Именно нужно в мемо добавить то что в href стоит
    Мемо должен такой получится после парсинга

    Code:
    http://yandex.ru/
    http://google.ru/
    http://yahoo.com/
    Знаю как парсить один результат а как несколько парсить не знаю :-(
     
  3. ZirroCool

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

    Joined:
    16 Sep 2006
    Messages:
    128
    Likes Received:
    55
    Reputations:
    20
    wolmer,собстно вот:
    http://forum.vingrad.ru/articles/topic-213075.html
     
    #4303 ZirroCool, 4 Oct 2009
    Last edited: 4 Oct 2009
  4. Пуховой

    Joined:
    25 Nov 2007
    Messages:
    46
    Likes Received:
    37
    Reputations:
    0
    wolmer, ежели использовать RegExpr... Применительно к вашему примеру (s - ваш текст).

    Code:
    function extract (const ainputstring : string; buf : string) : tstringlist;
    var
      r : tregexpr;
      f : tstringlist;
    begin
      f := tstringlist.create;
      r := tregexpr.create;
      try
        r.expression := buf;
        if r.exec (ainputstring) then
          repeat
            f.add (r.match [0]);
          until not r.execnext;
      finally r.free;
      end;
      result := f;
    end;
    
    function to_memo (s : widestring) : integer;
    begin
      if extract (s, 'http[^"]*[^"]') <> nil then form1.memo1.lines.addstrings (extract (s, 'http[^"]*[^"]'));
      result := 1;
    end;
     
    5 people like this.
  5. Хотшок

    Хотшок New Member

    Joined:
    4 Oct 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    А где в Dephi 7 компонент NMFTP
     
  6. Пуховой

    Joined:
    25 Nov 2007
    Messages:
    46
    Likes Received:
    37
    Reputations:
    0
    Хотшок, его там нет. Используйте альтернативу - TidFTP, вкладка indy clients.
     
  7. yfet

    yfet Banned

    Joined:
    11 Jul 2009
    Messages:
    48
    Likes Received:
    19
    Reputations:
    5
    не соединяется tiсqcliеnt. посоветуйте что делать?
     
  8. s0l_ir0n

    s0l_ir0n Active Member

    Joined:
    14 Mar 2009
    Messages:
    399
    Likes Received:
    144
    Reputations:
    18
    Обновить/сменить компонент
    Попытаться соединяться на login.oscar.aol.com или на IPшник 64.12.202.116
     
    2 people like this.
  9. StalkerKill

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

    Joined:
    27 Oct 2007
    Messages:
    0
    Likes Received:
    8
    Reputations:
    -1
    нужно в delphi, на некоторое время выключить (полностью) клаву, я уже мозг себе весь сломал, может кто помочь, это мне нужно для софта: http://fuckav.ru/showthread.php?t=204
     
  10. Пуховой

    Joined:
    25 Nov 2007
    Messages:
    46
    Likes Received:
    37
    Reputations:
    0
    Code:
    procedure BlockInput; external 'user32.dll';
    
    procedure Block;
    asm
      push 1
      call BlockInput
    end;
    
    procedure UnBlock;
    asm
      push 0
      call BlockInput
    end;
    Найдено в DelphiWorld. Блокировка клавиатуры и мыши, снимается нажатием ctrl+alt+del либо вызовом UnBlock; .

    Проверил - работает (Vista, XP virt.)
     
    #4310 Пуховой, 5 Oct 2009
    Last edited: 5 Oct 2009
  11. yfet

    yfet Banned

    Joined:
    11 Jul 2009
    Messages:
    48
    Likes Received:
    19
    Reputations:
    5
    какой компонент посоветуете для отправки смс в Россию???
     
  12. intNet

    intNet Member

    Joined:
    31 May 2009
    Messages:
    29
    Likes Received:
    14
    Reputations:
    5
    yfet, нет таких.
    Вроде протокол MRA позволяет такое, на форуме была такая статья, правда на асм.
     
  13. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Что-то не могу понять как скачать файл из интернета по средствам Winsock, я знаю что там что-то с recv+while надо делать но что точно не знаю (могу ошибаться)

    Вообщем помогите по этому вопросу
     
  14. s.p.a.m

    s.p.a.m Banned

    Joined:
    26 Jan 2009
    Messages:
    6
    Likes Received:
    2
    Reputations:
    0
    Как одной кнопке прописать две процедуры? То есть нажимаешь один раз на кнопку выполняется одна процедура, ещё раз нажимаешь - вторая..
     
  15. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Можно переменную какую - нибудь задать типа boolean (например). Можно вызывать процедуру в зависимости от свойства caption кнопки.

    If button1.caption = 'Go' then begin
    GO(param1,param2);
    button1.caption :='Stop';
    end
    else
    begin
    STOP(param1,param2);
    button1.caption :='Go';
    end;
     
    1 person likes this.
  16. Fepsis

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

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Создай переменную-переключатель процедур, и по нажатию кнопки проверяй его значение...
    Если значение = 1 , то выполняй первую процедуру и переключателю присваивай значение = 2, если = 2 выполняй вторую процедуру, а переключателю присваивай значение 1...
     
    1 person likes this.
  17. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Под завязку :)
    Code:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        function Clicks(chto,nachto:integer): boolean;
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
      i:integer;
    
    implementation
    
    {$R *.dfm}
    
    
    function TForm1.Clicks(chto,nachto:integer): boolean;
    begin
     if Frac(chto/nachto)<>0 then
      begin
        result:=false;
      end
     else
      begin
        result:=true;
      end;
    end;
    
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     i:=i+1;
    
     if Clicks(i,2) then
      begin
        showmessage('Это вторая процедура');
      end
     else
      begin
        showmessage('Это первая процедура');
      end;
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     i:=0;
    end;
    
    end.
    
    i - счетчик скоко юзер кликнул по кнопке

    (думаю разберешся сам с гуглом, а если нет то пиши в личку, прокоменчу строки которые надо)
     
    #4317 wolmer, 7 Oct 2009
    Last edited: 7 Oct 2009
    1 person likes this.
  18. alexey-m

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

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Используй свойство Tag
    К примеру
    Procedure form.button1Click(....)
    begin
    If button1.tag = 0 then procedure1;
    if button1.tag = 1 then procedure2;

    A в этих процедурах меняй тэг на обратный
     
    1 person likes this.
  19. Sysem56

    Sysem56 New Member

    Joined:
    12 Sep 2009
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    как скопировать файлы определенного расширения, размера при включении программы все скопированные файлы закидывает в одну папку ?
     
  20. alexey-m

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

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    немного непонятен вопрос можно пояснее =)
     
Thread Status:
Not open for further replies.