Zmienna TDateTime zawsze ma wartość 1899-12-31

0

mam zmienną DataRozpoczeciaDzialalnosciFirmy :TDateTime;

i próbuję coś tam podstawić:
i jak robię

  DataRozpoczeciaDzialalnosciFirmy := Date();
  DataRozpoczeciaDzialalnosciFirmy := DM.FirmT.FieldByName('Data_rozp_dzialalnosci').AsDateTime;
  DataRozpoczeciaDzialalnosciFirmy := EncodeDate(2000,01,01);

To zawsze moja zmienna ma wartośc 0, czyli 1899-12-31
Usunąłem plik *.dcu, ale to nic nie dało.
Czy ktoś ma może jakiś pomysł, dlaczego tak się dzieje?

0

Do datetime przypisujesz w 1 i 3 linijce DATE bez TIME więc końcówka to są zera jednak nie uzyskałem efektu całkowitej zmiennej = 0 ... może gdzieś inny kod coś z tą zmienną robi?

1
My Razem napisał(a):

...

Usunąłem plik *.dcu, ale to nic nie dało.
...

Ciekawa analiza

woolfik napisał(a):

... może gdzieś inny kod coś z tą zmienną robi?

Sądzę że chyba raczej prawie na pewno (osobiście obstawiam 2-3 scenariusze)

0

Jakieś cuda się dzieją.
Okazuje się że to Delphi oszukuje.
Podczas debugowania hint pokazuje datę 1899-12-31, ale jak tą zmienną gdzieś podstawię (np. do ShowMessage) to data jest prawidłowa!.
Widzieliście coś takiego?

0

@My Razem: która wersja Delphi?

0

W delphi 7 było tak, że jak tworzyłeś projekt i na formę położyłeś DateTimePicker data była zawsze w dniu utworzenia projektu. czasami zdarzało się, że data była liczona od 31 grudnia starego roku. Wówczas stosowałem dzień - 1; U mnie działa Twój kod poprawnie.

https://4programmers.net/Delphi/Gotowce/Zabawa_z_dat%C4%85_;)

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  DataRozpoczeciaDzialalnosciFirmy : TDateTime;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  DataRozpoczeciaDzialalnosciFirmy := EncodeDate(1899,12,31);
  Showmessage(datetostr(DataRozpoczeciaDzialalnosciFirmy));

  DataRozpoczeciaDzialalnosciFirmy := EncodeDate(2000,01,01);
  Showmessage(datetostr(DataRozpoczeciaDzialalnosciFirmy));
end;

end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1