![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Нужен штамп с дискретностью 100uSec. 
		
	
		
		
		
		
		
	
		
		
	
	
	Сделал так, но выглядит удручающе. Полагаю, что есть более трезвый способ?.. Код: 
	 function DateTimeToTimeStamp(DateTime:TDateTime):cardinal;
begin
     result:= round(frac(DateTime)*1000000000);
end; | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Не понятно, что имеется в виду под "нужен". 
		
	
		
		
		
		
		
	
		
		
	
	
	Вообще, твой код в принципе не правильный. Т.к. в TDateTime в дробной части хранится время в виде части целого дня, т.е. 0.5 - это полдень. Тогда, что бы получить праильное время надо делать как-то так: Код: 
	result := frac(DateTime)*(24*60*60); // получили время в секундах result := result * 1000000; // теперь перевели в кол-во микросекунд  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 У оборудования к которому программу пытаюсь написать есть внутренний счётчик "TimeStamp", отсчитывающий время после старта с инкрементом по 0,1мс, поэтому мне нужно подогнать реальное время к его формату. Спасибо за подсказку.  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Ну, тогда может лучше воспользоваться чем-то типа GetTickCount - кол-во, если не ошибаюсь, микросекунд с определенной даты (аналог UNIX Time). 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Оно в миллисекундах и завязано за запуск системы с обнулением через определённое время. Однажды пользовался ею, но забыл про её существование. Спасибо, на неё и переориентируюсь. К тому же, как показала практика, мне дискретность в микросекундах и не нужна - аппарат строчит CAN сообщения не чаще 2mS(самый быстрый фрэйм, который замечен и тот CF), а в основной массе 10-15mS, плюс аппаратный FIFO оказался очень вместительным. 
		
	
		
		
		
		
		
	
		
		
	
	
	 |