16. april 1999 - 00:00Der er
10 kommentarer og 1 løsning
TDateTime
Min "højtelskede" datatype i Delphi; TDateTime volder mig problemer: Hvordan initialiserer man en attribut af denne type? Man kan ikke sætte den til nil. Null duer heller ikke - den compiler ganske vist fint, men det går helt i koks, når man f.eks. prøver at oprette et objekt. At sætte den til 0 er heller ikke en løsning, da man så sætter den til en bestemt dato - og det var jo ikke det, der var meningen. Er der nogen, der kan give et andet forslag?
Hmm, undskyld min formulering, men kommatal og double er desværre det samme i min terminologi - er flydende tal en bedre formulering?
Det oprindelige spørgsmål er, om man kan sætte en TDateTime til en værdi som ikke kan opfattes som en dato - og her må svaret være nej. Men ved f.eks. at sætte den til en værdi som -1, som rdj har forslået, så er det nemmere i sit program at checke om den ikke er "initialiseret" (-1) og reagere på det. I det lys er mit forslag med now ret fjollet... :-)
TDateTime er en double - altså et kommatal. Heltalsdelen angiver antallet af dage siden 30/12-1899, og decimal-værdien angiver en del af døgnets 24 timer. Sættes en TDateTime-variabel til -1.25, svarer det til 29/12/1899 klokken 06:00.
Men jeg kan heller ikke umiddelbart se nogen grund til at initialisere en TDateTime-variabel?
Hmm, jeg tror det er på tide at afvise eller acceptere svaret - så må du jo lige finde ud af hvem som skal have de points - spørgsmålet må siges at være dødt.
Det giver ikke meget mening at sætte den til now - så hellere -1. Derfor afviser jeg svaret! Mht. at initialisere den, så må jeg jo hellere kravle op på barrikaderne og forsvare mig: Jeg synes, det virker pænest at initialisere alle attributter i constructoren, så man er sikker på, hvad de er sat til.
Ha! Nej jeg gør ej - undskyld, men jeg bliver altså nødt til at vende på en tallerken - og du bliver nødt til at komme med noget bedre. At sætte en TDateTime til -1 giver en bestemt dato - og det virker stadig forkert. Om det så er en dato tilbage til yngre stenalder, duer det stadig ikke. Jeg vil enten have et konkret og dokumenteret udsagn om, at det ikke kan lade sig gøre eller noget, der giver det samme som nil ved andre typer.
Det skal nok lykkes mig at ruske godt op i denne Delphi-kategori!!! ;-)
Det kan ikke lade sig gøre at initialisere en TDateTime.
En TDateTime er ikke et objekt, hvorfor det ikke kan sættes nil. Det betyder også, at alle værdier en TDateTime kan sættes til, repræsenterer en dato.
Ligesom man ikke kan initialisere en Double til en værdi, der ikke er et tal, kan man ikke initialisere en TDateTime til en værdi, der ikke er en dato.
Okay - så kan vi vist endelig få lukket dette spørgsmål. Tak for svaret - det virker logisk og rigtigt! :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.