![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
переменная SYSTEMTIME определить что она пустая [D7, WinXP]
Dmitry_177 © (2007-03-30 19:57:00)есть переменная типа SYSTEMTIME, как мне определить что в ней не содержится дата?
попробовал так:
var
sysTime: SYSTEMTIME;
..
if sysTime <> nil then
так ругается компилятор..
вообще на сколько я знаю в ней по умолчанию не должно быть какой-то даты в отличие от FILETIME, решил проверить:
procedure TForm1.Button1Click(Sender: TObject);
var
sysTime: SYSTEMTIME;
begin
MessageBox(0, PChar(IntToStr(sysTime.wDay) + ' ' + IntToStr(sysTime.wMonth) + ' ' + IntToStr(sysTime.wYear)), '', 0);
end;
выдает какие-то числа, у меня они такие: "0 90 73"
как же тогда проверить что в переменной sysTime нету даты, т.е. вообще не записывали ее туда?
Palladin (2007-03-31 00:37:00) [1]
> Dmitry_177 (30.03.07 20:59) [7]
и правильно думал... см MBo © (30.03.07 20:32) [4]
пока не определишься что значит "пустая" смысла в пустоте не будет
Dmitry_177 (2007-03-30 20:59:00) [2]trubin, я думал это не столь важно будет..
trubin (2007-03-30 20:48:00) [3]
> непойдет.. дело в том, что эта дата входит в состав некой
> структуры, которую присылают по сети(используя сокеты WinSock).
> . вот мне нужно определить есть ли там дата или нет...
Так бы сразу и написал, а то я в [1] изгалялся :(
RASkov (2007-03-30 20:39:00) [4]SYSTEMTIME - запись из Word'овых значений.... никак не проверишь. Или проверять на корректность всех значений записи... также..
можно вначале инициализировать, например, год в 0 : sysTime.wYear:=0; и смотреть потом изменилась или нет.... но это тоже не выход наверное...
ну или так, может:
try
D:=SystemTimeToDateTime(sysTime);
except
ShowMessage('Дата не корректная');
end;
А вообще [4]...
MBo (2007-03-30 20:32:00) [5]Есть переменная типа Integer. Как определить, что она не содержит никакого числа?
Dmitry_177 (2007-03-30 20:31:00) [6]непойдет.. дело в том, что эта дата входит в состав некой структуры, которую присылают по сети(используя сокеты WinSock).. вот мне нужно определить есть ли там дата или нет...
Anatoly Podgoretsky (2007-03-30 20:30:00) [7]> Dmitry_177 (30.03.2007 19:57:00) [0]
Она не может быть пустой.
trubin (2007-03-30 20:29:00) [8]
> как же тогда проверить что в переменной sysTime нету даты,
> т.е. вообще не записывали ее туда?
Примерно так:
FillChar(sysTime, SizeOf(SYSTEMTIME), $FF); //заполняем все единицами
...Используешь где-то
if sysTime.wYear = $FFFF then
ShowMessage('Год не заполнен');
> вообще на сколько я знаю в ней по умолчанию не должно быть
> какой-то даты в отличие от FILETIME
Как это по умолчанию?