Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2009, 13:43   #1
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию Проблемма с Systemtime

не могу тип TdateTime перевести в тип Word для использования переменной в функции Setsystemtime.. Может кто подскажет как это сделать ?
Вот с таким кодом вожусь
Код:
var
  Form1: TForm1;
  per : TdateTime;
  timer : SYSTEMTIME;
  vTime, vDate : Word;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
per := Now;
ShowMessage(DateToStr(per));

vDate:=Edit1.text; 
SetSystemTime(vDate);

end;
Дату показывает, а вот с ее сменой ничего не выходит из-за типов данных ..
sergey113 вне форума Ответить с цитированием
Старый 27.03.2009, 14:15   #2
Neobrat
Форумчанин
 
Регистрация: 10.12.2007
Сообщений: 124
По умолчанию

вместо vDate используй переменую типа TSystemTime

Код:
var
st:TSystemTime;
date:TDateTime;
begin
date:=now();
with st do
begin
   DecodeDate(Date, wYear, wMonth, wDay);
   DecodeTime(Date, wHour, wMinute, wSecond, wMilliseconds);
end;
SetSystemTime(st);
end;
Русский язык не мой конёк

Последний раз редактировалось Stilet; 30.03.2009 в 09:32.
Neobrat вне форума Ответить с цитированием
Старый 27.03.2009, 14:34   #3
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию

Цитата:
Сообщение от Neobrat Посмотреть сообщение
вместо vDate используй переменую типа TSystemTime

var
st:TSystemTime;
date:TDateTime;
begin
date:=now();
with st do
begin
DecodeDate(Date, wYear, wMonth, wDay);
DecodeTime(Date, wHour, wMinute, wSecond, wMilliseconds);
end;
SetSystemTime(st);
end;
Подобный код я видел в нете .. я его не понимаю..
что такое
DecodeDate(Date, wYear, wMonth, wDay);
DecodeTime(Date, wHour, wMinute, wSecond, wMilliseconds);
что оно делает?.. мне надо чтоб брал дату с Edit1.Text и изменял системное время..
sergey113 вне форума Ответить с цитированием
Старый 27.03.2009, 14:38   #4
XuTpbIu
Злобстер
Форумчанин
 
Аватар для XuTpbIu
 
Регистрация: 19.03.2009
Сообщений: 134
По умолчанию

В хелп. В модуле DateUtils вроде хранятся ф-ции.
От знаний ещё никто не умирал, но рисковать не стоит.
XuTpbIu вне форума Ответить с цитированием
Старый 27.03.2009, 14:51   #5
Neobrat
Форумчанин
 
Регистрация: 10.12.2007
Сообщений: 124
По умолчанию

DecodeDate(Date, wYear, wMonth, wDay);

распарсивает дату на wYear - год wMonth- месяц wDay - день

DecodeTime(Date, wHour, wMinute, wSecond, wMilliseconds);
распарсивает дату на wHour- час wMinute - минуты wSecond - секунды wMilliseconds - милисекунды.

а тип TSystemTime это есть рекорд след типа
_SYSTEMTIME = record
wYear: Word;
wMonth: Word;
wDayOfWeek: Word;
wDay: Word;
wHour: Word;
wMinute: Word;
wSecond: Word;
wMilliseconds: Word;

т.е. DecodeDate и DecodeTime в купе с with st do begin end;

распарсивает дату на элементы и присвоивает значение к рекорду st

"мне надо чтоб брал дату с Edit1.Text и изменял системное время.."
брать время из текста не совсем целесообразно.. так как столкнешься с проблемой коректного ввода данных
по мне так лучше поставить два DateTimePicker-а один задает время другой дату...

ну если тебе именно с текста надо брать дату то используй StrToDate...

DecodeDate(StrToDate(Edit1.Text), wYear, wMonth, wDay);
DecodeTime(now(), wHour, wMinute, wSecond, wMilliseconds); - так как время тоже необходимо задать))
Русский язык не мой конёк
Neobrat вне форума Ответить с цитированием
Старый 27.03.2009, 14:52   #6
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию

ЧО ?

Я в хелпе (google) уже несколько дней лажу... толку только нет..

Цитата:
Сообщение от Neobrat Посмотреть сообщение

"мне надо чтоб брал дату с Edit1.Text и изменял системное время.."
брать время из текста не совсем целесообразно.. так как столкнешься с проблемой коректного ввода данных
по мне так лучше поставить два DateTimePicker-а один задает время другой дату...

ну если тебе именно с текста надо брать дату то используй StrToDate...
Спасибо .. по листингу понял ..
А с Edit в том и заморочка что не получается впихнуть SetSystemTime данные... Ругается на то что не совместимы типы Word (Systemtime) и TDateTime в который преобразует StrToDate....
DateTimePicker- пробовал он тоже TDateTime потому не катит..

Последний раз редактировалось Stilet; 30.03.2009 в 09:34.
sergey113 вне форума Ответить с цитированием
Старый 27.03.2009, 14:57   #7
Neobrat
Форумчанин
 
Регистрация: 10.12.2007
Сообщений: 124
По умолчанию

Цитата:
Сообщение от sergey113 Посмотреть сообщение
ЧО ?

Я в хелпе (google) уже несколько дней лажу... толку только нет..

а не пробовал навести курсор на DecodeDate и нажать F1? )) иногда помогает.. вот что там пишут борлодовцы
Код HTML:
Returns Year, Month, and Day values for a TDateTime value.

Unit

SysUtils

Category

datetime routines

Delphi syntax:

procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);

C++ syntax:

extern PACKAGE void __fastcall DecodeDate(const System::TDateTime DateTime, Word &Year, Word &Month, Word &Day);

Description

The DecodeDate procedure breaks the value specified as the Date parameter into Year, Month, and Day values. If the given TDateTime value has a negative (BC) year, the year, month, and day return parameters are all set to zero.
Цитата:
Сообщение от sergey113 Посмотреть сообщение
Спасибо .. по листингу понял ..
А с Edit в том и заморочка что не получается впихнуть SetSystemTime данные... Ругается на то что не совместимы типы Word (Systemtime) и TDateTime в который преобразует StrToDate....
DateTimePicker- пробовал он тоже TDateTime потому не катит..
что что???

"типы Word (Systemtime) "

Systemtime в качестве параметра нужно передавать переменую типа TSystemTime..

и с едита а точнее из строки ты сначала юудешь переконверчивать в TdateTime а потом в TSystemTime...

не проше сразу из DateTimePicker-а брать данные типа TDateTime ??
Русский язык не мой конёк

Последний раз редактировалось Stilet; 30.03.2009 в 09:36.
Neobrat вне форума Ответить с цитированием
Старый 27.03.2009, 15:08   #8
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию

я тут запутался совсем..
упрощаем..
основная проблема у меня в том, что я устанавливаю время при помощи функции SetSystemTime. И не могу в нее запихнуть данные из edit или DateTimePicker ... Выдается ошибка несоответствия данных.
Вопрос: Как это сделать ?

а чем конвертирут в TSystemTime...

это я и не могу..

Последний раз редактировалось Stilet; 30.03.2009 в 09:37.
sergey113 вне форума Ответить с цитированием
Старый 27.03.2009, 15:14   #9
Neobrat
Форумчанин
 
Регистрация: 10.12.2007
Сообщений: 124
По умолчанию

бр..
нет функции конвертации TdateTime -> TSystemTime
раз ее нет надо ее реализовать..

Код:
function DateToSystemTime(Date:TDateTime):TSystemTime;
begin
with result do
 begin
   DecodeDate(date, wYear, wMonth, wDay);
   DecodeTime(date, wHour, wMinute, wSecond, wMilliseconds);
 end;
end;
на входе дата в формате TDateTime на выходе TSystemTime


что еще не понятного?
Русский язык не мой конёк
Neobrat вне форума Ответить с цитированием
Старый 27.03.2009, 15:21   #10
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию

Цитата:
Сообщение от Neobrat Посмотреть сообщение
бр..
нет функции конвертации TdateTime -> TSystemTime
раз ее нет надо ее реализовать..

Код:
function DateToSystemTime(Date:TDateTime):TSystemTime;
begin
with result do
 begin
   DecodeDate(date, wYear, wMonth, wDay);
   DecodeTime(date, wHour, wMinute, wSecond, wMilliseconds);
 end;
end;
на входе дата в формате TDateTime на выходе TSystemTime


что еще не понятного?
теперь понятно .. и проще видимо не бывает .. большое спасибо. Прийду с учебы буду тренироватся.
sergey113 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемма с импортом Johnson SQL, базы данных 1 18.09.2009 11:15
Проблемма с BitBtn Fe_DoS Общие вопросы C/C++ 1 26.03.2009 21:48
Проблемма с играмми PapaRoach Компьютерное железо 2 06.10.2008 08:32
Проблемма с 3d max 9 Crivel Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 29.08.2008 23:03
Проблемма c if Crivel Помощь студентам 8 08.08.2008 15:28