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

    AtomoS New Member

    Joined:
    17 Feb 2010
    Messages:
    88
    Likes Received:
    1
    Reputations:
    0
    да вин7, делфи 7. прогресс как-то не то.

    вся соль в том что хочется как в диспетчере задач.
    думаю это всё надо отрисовывать попиксельно:
    ряд точек, далее повторение ряда n раз, а сверху дополнителная прорисовка в зависимости от %

    сам не потяну такое

    [​IMG]
     
  2. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    276
    Likes Received:
    282
    Reputations:
    2
    есть отличный набор копонентов, raize components называется (http://delphiexpert.ru/view_download.php?id=86), и вот в нём есть туча всячик красивых свистелок и перделок, включая прогрессбары.
    не особо копаясь я нашел вот такой:

    [​IMG]

    там кучи настроек, такчто сможешь привести его к любому желаемому виду.
     
    2 people like this.
  3. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    кинь на форму PaintBox, вот процедурку сделал:
    Code:
    procedure DrawProgress(PB:TpaintBox;Percent:Byte);
    var i,j:Integer;
        maxProgress:Integer;
        Map:TBitMap;
    begin
      Map:=TBitmap.Create;
      try
        Map.Width:=PB.Width;
        Map.Height:=PB.Height;
        Map.Canvas.Brush.Color:=clBlack;
        Map.Canvas.Brush.Style:=bsSolid;
        Map.Canvas.FillRect(Rect(0,0,Map.Width,Map.Height));
        Map.Canvas.Pen.Style:=psDot;
        Map.Canvas.Pen.Color:=clLime;
        maxProgress:=Map.Height div 3 - 5;
        for i:=Round((maxProgress/100)*(100-Percent)) downto 1  do
        begin
          for j:=2 to Map.Width div 2 - 3 do
          if j mod 2=0 then
          begin
            Map.Canvas.Pixels[j,i*3-1]:=clLime;
            Map.Canvas.Pixels[j,i*3]:=clBlack;
          end
          else
          begin
            Map.Canvas.Pixels[j,i*3-1]:=clBlack;
            Map.Canvas.Pixels[j,i*3]:=clLime;
          end;
          for j:=Map.Width div 2 + 2 to Map.Width-4 do
          if j mod 2=0 then
          begin
            Map.Canvas.Pixels[j,i*3-1]:=clLime;
            Map.Canvas.Pixels[j,i*3]:=clBlack;
          end
          else
          begin
            Map.Canvas.Pixels[j,i*3-1]:=clBlack;
            Map.Canvas.Pixels[j,i*3]:=clLime;
          end;
        end;
        Map.Canvas.Pen.Style:=psSolid;
        for i:=maxProgress downto Round((maxProgress/100)*(100-Percent))+1  do
        begin
          Map.Canvas.Rectangle(2,i*3-1,Map.Width div 2 - 2,i*3+1);
          Map.Canvas.Rectangle(Map.Width div 2 + 2,i*3-1,Map.Width - 3,i*3+1);
        end;
        Map.Canvas.Font.Color:=clLime;
        Map.Canvas.Font.Size:=8;
        Map.Canvas.TextOut(Map.Width div 2 - Map.Canvas.TextWidth(IntToStr(Percent)+' %') div 2,maxProgress*3+2,IntToStr(Percent)+' %');
      finally
        PB.Canvas.Draw(0,0,map);
        Map.Free;
      end;
    end;
    заводишь глобальную переменную Progress
    на OnDraw PaintBox'a вешаешь

    Code:
    begin
      DrawProgress(TPaintBox(Sender),progress);
    end;
    и там, где меняешь загрузку цп делаешь
    Code:
    DrawProgress(PaintBox,progress);
    P.S. поправил, чтобы избавится от моргания.
    P.P.S. благодарности принимаются в литровом эквиваленте :)
    [​IMG]
    _______
    upd: по желанию ТСа чуть-чуть подмарафетил, для большего соответствия оригиналу
     
    #8523 xophet, 20 Sep 2011
    Last edited: 20 Sep 2011
    2 people like this.
  4. waik

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

    Joined:
    2 Nov 2008
    Messages:
    405
    Likes Received:
    163
    Reputations:
    12
    Как обработать сообщение "NotConnected" indy в делфи.

    Шлю Post запрос на вконтакте,мне выдает что NotConnected.Как его обработать что бы сообщение не появлялось.
    Code:
     except
      on EIdNotConnected do....
    
    не помогает.
     
  5. 2pick

    2pick Elder - Старейшина

    Joined:
    17 Mar 2007
    Messages:
    117
    Likes Received:
    39
    Reputations:
    2
    Кто подскажет. Что лучше использовать для работы с текстовыми файлами:
    1. связку AssignFile/rewrite/append/reset/CloseFile
    или
    2. TfileStream
    и почему? :)
     
  6. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    По скорости они примерно одинаковы( хотя TFilestream на пару тройку миллисекунд медленнее).Tfilestream мне кажется более универсальна что-ли.Но сам подумай assignfile унаследована еще от паскаля,она является более низкоуровневой.Ну я бы выбрал 1-е.
     
  7. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    если в потоке, то 2 однозначно, т.к. при попытке 1 все виснет :)
     
  8. 2pick

    2pick Elder - Старейшина

    Joined:
    17 Mar 2007
    Messages:
    117
    Likes Received:
    39
    Reputations:
    2
    Использую в потоке assign и ничего не виснет...
     
  9. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Всё различие в том, что ТФайлСтрим использует так сказать "не блокирующий режим" записи/чтения, когда обычными методами нельзя обратиться к файлу, пока процедура не передаст управление программе. Файлстрим используется при работе с файлами по сети, а при обычном доступе рациональнее использовать обычными методами.
     
  10. edger

    edger Member

    Joined:
    9 Jul 2011
    Messages:
    52
    Likes Received:
    9
    Reputations:
    1
    Товарищи кодеры :] Может из вас кто-нибудь запилить, вот в этот авторег твитер аккаунтов - антигейт и возможность выбора мыл для реги из файла?:> Могу оплатить пиво и пельмени)

    http://files.avtuh.ru/twitter.zip (исходник от создателя авторега)
    Перезалил http://rghost.ru/23615961 ибо на сайт автора ругается аваст :<
     
    #8530 edger, 30 Sep 2011
    Last edited: 30 Sep 2011
  11. AtomoS

    AtomoS New Member

    Joined:
    17 Feb 2010
    Messages:
    88
    Likes Received:
    1
    Reputations:
    0
    ребят не подскажите как отправить кнопку F1-F12 в стороннее окно? (клиент - LineAge2)
    буду благодарен за пример.
     
  12. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Насколько мне известно LA2 вешает хук на клавиатуру и мышу, и что ты с ней не делай, сообщения ты ей пошлешь, но игра их не обработает.
    тут как-то нужно снимать хук или обманывать (что тебе не даст сделать ГеймГуард)
     
  13. AtomoS

    AtomoS New Member

    Joined:
    17 Feb 2010
    Messages:
    88
    Likes Received:
    1
    Reputations:
    0
    не откажешься написать небольшой пример - заодно и проверю
    интересует сочетание shift+f1 а в окне игры f1 это будет
     
  14. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Найди окошко линяги функцией FindWindow() и отошли ему сообщение своих клавиш при помощи SendMessage().
     
  15. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    толку 0, причина: см предыдущий мой пост.
    всю эту ерунду (писать кликеры под LA2) пробовали еще тогда, когда это было мега-актуально, если бы это было так просто, то боты бы не палились ГГ.

    ТС: берешь любую хрень, которой можно записать сочетания клавишь, записываешь ф1, нажимаешь плей, и смотришь как окно LA2 умирает (если мне не изменяет память - тупо вырубается процесс)
     
    #8535 xophet, 3 Oct 2011
    Last edited: 3 Oct 2011
  16. AtomoS

    AtomoS New Member

    Joined:
    17 Feb 2010
    Messages:
    88
    Likes Received:
    1
    Reputations:
    0
    да, выбивает если часто использовать.

    а это не палиться кстати?
     
    #8536 AtomoS, 3 Oct 2011
    Last edited: 3 Oct 2011
  17. ХАМнаМИЛЛИОН

    Joined:
    31 Mar 2011
    Messages:
    19
    Likes Received:
    1
    Reputations:
    0
    Кстати, насчёт эмуляции, Send Input/Send Message современные клиентские игры обрабатывают? А ассемблерские выкрутасы?
     
  18. ShyRka_coder

    ShyRka_coder Member

    Joined:
    27 Jul 2010
    Messages:
    127
    Likes Received:
    7
    Reputations:
    5
    А самому влом тестануть прежде чем спрашивать??
     
  19. DOLLY

    DOLLY New Member

    Joined:
    28 Sep 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    file.reg

    как заставить делфи виполнить рег фал скрито от пользователя
     
  20. Metal-Core

    Metal-Core Member

    Joined:
    20 Sep 2011
    Messages:
    224
    Likes Received:
    21
    Reputations:
    0
    Winexec(pchar('regedit.exe /s 1.reg'),sw_hide));
     
Thread Status:
Not open for further replies.