-
procedure TForm1.Button5Click(Sender: TObject);
var
v: variant;
d: tDate;
dt:TDateTime;
begin
d:=now;
dt:=now;
ShowMessage(v+d+'1'+1+true);
ShowMessage(v+dt+'1'+1+true);
end;
-
аачуметь....
-
Воистину удивительно.
TDate и TDateTime так отличаются?
-
Этого не может быть!)
-
Все бы ничего, если бы не '1' :)
-
> [0] Vlad Oshin © (24.09.08 17:56)
А что за статья?
-
> {RASkov} (24.09.2008 18:23:04) [4]
Все бы ничего, если бы не варианты.
-
> [6] Anatoly Podgoretsky © (24.09.08 19:19)
Если б не варианты, то ничего ...бы не вышло)
-
так типы-то как бы везде одинаковы.
-
в общем эта дура думает при сложении с вариантом, что TDate это целое
-
тогда все логично. приведение типов по минимуму
-
> Поросенок Винни-Пух (24.09.2008 19:22:08) [8]
А ты не путай типы для вариантов, с типами Дельфи.
Варианты это чужеродное. И тип DATE/TIME отличается, в Дельфи невозможно отличить DATE/TIME от Double, а в вариантах запросто.
-
что и где я путаю, говоря, что типы операндов в обоих случаях одинаковы?
TDate = type TDateTime;
То что в результате будет вариант это понятно. Тип его будет зависеть от остальных слагаемых.
-
> Медвежонок Пятачок (24.09.2008 21:49:12) [12]
На разных этапах вычисления выражения тип может меняться.
-
> > [0] Vlad Oshin © (24.09.08 17:56)
>
> А что за статья?
что-то как-то
Пара фокусов и семь миражей..
не помню..
-
На разных этапах вычисления выражения тип может меняться.
Все верно. Компилер в первом варианте увидел, что результат влезает в integer, но встретив '1' решил, что будет приводить это к вещественному.
а во втором случае явный tdatetime повлиял на итоговый тип варианта