Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / GetTickCount / 12 сообщений из 12, страница 1 из 1
25.06.2019, 15:13
    #39830380
VladimirVVP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetTickCount
Мне нужно было создать паузу в цикле, для чего я использовал GetTickCount
будет ли такий вариант правельным?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
procedure datainapp;
var
i,c,a:integer;
d:integer = 20000;
begin
 a := GetTickCount;
{**************************}
 for i:=0 to c do
  begin
  {**************************}
repeat
     Application.ProcessMessages;
     {**************************}
     break;
     end;
   until (GetTickCount - a) >= d;
  end;
  timerD.Enabled:=False;
  datayou;
end;
...
Рейтинг: 0 / 0
25.06.2019, 15:15
    #39830383
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetTickCount
за это убивать надо! (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.06.2019, 15:35
    #39830389
delphinotes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetTickCount
VladimirVVP,

а ещё GetTickCount может перейти через 2^32 и выражение в скобках станет отрицательным
...
Рейтинг: 0 / 0
25.06.2019, 15:48
    #39830393
Kast2K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetTickCount
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
uses System.Diagnostics

procedure Test;
var
  i: Int64;
  sw: TStopwatch;
begin
  sw := TStopwatch.StartNew;
  // do smth
  sw.Stop;
  i:=sw.ElapsedMilliseconds;
end;
...
Рейтинг: 0 / 0
25.06.2019, 15:52
    #39830397
Kast2K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetTickCount
упс, не прочитал правильно :)

немного говнокода
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
uses
   System.SyncObjs

procedure TGetLineCNTsThread.Execute;
var
  se:TSimpleEvent; 
  wr:TWaitResult;
begin
  se:=TSimpleEvent.Create(nil,False,False,'tmrCnt');
  try
      wr:=se.WaitFor(1000);
      if wr=wrTimeout then
        begin
          //do smth
        end
      else
        Break;
  finally
    FreeAndNil(se);
  end;
end;
...
Рейтинг: 0 / 0
25.06.2019, 16:04
    #39830407
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetTickCount
VladimirVVPбудет ли такий вариант правельным?Нет.

1. Пауза в цикле это нонсенс. Расскажите чего вы хотите добиться?
2. Application.ProcessMessages с вероятностью 95% даст побочные эффекты
3. Для этого есть другие функции
4. Ваш код не обеспечивает паузы
...
Рейтинг: 0 / 0
25.06.2019, 18:59
    #39830482
VladimirVVP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetTickCount
_Vasilisk_,

в общем в цикле передаются данные в php для записи в БД, понимаю, что это не пауза, но мне нужно сделать проверку на запись - тоесть в нутри repeat некоторое время выполняется запрос (проверка выполнения записи). .если запись произошла то отмечам, что запись в базу добавлена и делаем break; и занаво проходим цикл.. если за установленное время не получен ответ , то продолжаем выполнять основной цикл.. Но в тоже время у меня должен быть доступ к работе с программой (что бы не зависала)..
данная процедура выполняется по таймеру..
...
Рейтинг: 0 / 0
25.06.2019, 19:01
    #39830484
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetTickCount
25.06.2019 18:59, VladimirVVP пишет:
> мне нужно сделать проверку на запись

зачем?
почему?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.06.2019, 08:32
    #39830553
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetTickCount
VladimirVVP... Но в тоже время у меня должен быть доступ к работе с программой (что бы не зависала)..
данная процедура выполняется по таймеру..

Вынести тяжелую операцию в дополнительный поток.
...
Рейтинг: 0 / 0
26.06.2019, 13:04
    #39830685
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetTickCount
VladimirVVPв общем в цикле передаются данные в php для записи в БД,Что мешает в БД писать самому? Без PHP прослойки
VladimirVVPесли за установленное время не получен ответ , то продолжаем выполнять основной цикл.Т.е. добавлена запись, не добавлена нам все равно. Так зачем тогда ждать?
VladimirVVPНо в тоже время у меня должен быть доступ к работе с программойКакое управление вы хотите? Закрыть программу посреди цикла? И что тогда будет с консистентностью данных?
VladimirVVPданная процедура выполняется по таймеру..Вообще отлично! Таймер, ProcessMessages и задержки. Архитектурное решение просто супер! А выполнять ее по приходу данных не пробовали?
...
Рейтинг: 0 / 0
26.06.2019, 13:05
    #39830686
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetTickCount
_Vasilisk_VladimirVVPв общем в цикле передаются данные в php для записи в БД,Что мешает в БД писать самому? Без PHP прослойкиИли просто анализировать результат работы PHP скрипта
...
Рейтинг: 0 / 0
26.06.2019, 13:40
    #39830706
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetTickCount
goldmi45VladimirVVP... Но в тоже время у меня должен быть доступ к работе с программой (что бы не зависала)..
данная процедура выполняется по таймеру..

Вынести тяжелую операцию в дополнительный поток.+1
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / GetTickCount / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]