Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Скорость работы приложения!
Форум программистов > Системное программирование > Другие
Rjkz
Написал програмку
Код

unit unitSpeed1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, MPlayer, StdCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  bm: TBitMap;
  s: String;
  Hour, Min, Sec, MSec: Word;
        DMin,DSec     : Word;
  int,int2:integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  bm := TBitMap.Create;
  bm.Width := 1024;
  bm.Height :=1500;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  DecodeTime(Time, Hour, Min, Sec, MSec);

If Int=0 then
begin
  DMin:=Min;
  DSec:=Sec+1;
  If DSec>=60 then DSec:=DSec-60;
  Int:=1;
end;

  int:=int+1;
  s := TimeToStr(time);
  bm.Canvas.TextOut(100,100, s);
  bm.Canvas.TextOut(100,125,'                                  ');
  bm.Canvas.TextOut(100,125, inttostr(DMin)+'>>'+inttostr(DSec));
   If(Sec=Dsec) then
   begin
    Bm.Canvas.Pen.Color:=Random(16777216);
    bm.Canvas.TextOut(100,150,'                                  ');
    bm.Canvas.TextOut(100,150,inttostr(Int));

     Bm.Canvas.Moveto(Int2,0);
     Bm.Canvas.LineTo(Int2,Int);
     Int2:=int2+1;
     If Int2>Form1.Width-20 then begin Int2:=0; Bm.Canvas.Rectangle(-1,-1,700,800);end;
     int:=0;
   end;



  Form1.Canvas.Draw(0, 0, bm);

end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
  bm.Destroy;
end;

end.


Почему в WindowsMe или Windows98 при движении мышкой по элементам имеющим всплывающие подсказки Hint по непонятным причинам начинает увиличиваться значение переменной (Int) обычно значение равно 20 но при шивилинии мышкой по элементам с Hint делать какой нить программой то может достигать и 1600, а в WindowsXP значение постоянно и равно 65 , я так понемаю это всё дело в планировщике задач который чаще и надолще отдаёт на приложения квант времени ,,подскажите как программно это можно делать самому,,чтоб на определёную программу задавать и квант времени передовался ей на больше времени и чаще ?
European
Цитата(Rjkz @ 8:04:2008 - 21:35) *
подскажите как программно это можно делать самому,,чтоб на определёную программу задавать и квант времени передовался ей на больше времени и чаще ?

Для влияния на количество выделяемых квантов используется механизм изменения приоритетов потоков
Rjkz
European в WindowsME изменения приоритетов потоков нет,,,а в ХР не как не повлеяло и значение перемеменной (Int) так и остовалось на значении 65 cool.gif
Pasha
Rjkz
Судя по коду в первом сообщении, ты думаешь что вызов Timer1Timer - это и есть выделение приложению кванта времени? Вообще-то таймер срабатывает через равные промежутки времени - те самые 65 чего-то там, а планировщик задач не имеет к таймерам почти никакого отношения.
sax_ol
Цитата(Rjkz @ 9:04:2008 - 17:51) *
и значение перемеменной (Int) так и остовалось на значении 65

Силюсь понять вот это, но пока никак ... sad.gif
European
Цитата(Rjkz @ 9:04:2008 - 16:51) *
European в WindowsME изменения приоритетов потоков нет,,,

Вы ошибаетесь
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2008 IPS, Inc.