Brug af AI afslører de svagheder, virksomheder allerede har opbygget gennem års cloud-transformation, nye SaaS-løsninger og fragmenterede sikkerhedssystemer.
Nu har jeg ikke lige delphi her, men bliver Time så ikke noget i stilen med 0.21 (alså et komma tal)
TTime er antallet af dage siden en bestemt dato( jeg mener det er ca 1/1-1900). Prøv at kikke i hjælpe filen under TDateTime. Prøv at kikke om der ikke er en funktion der decodetime/incodetime.
Fordi Time er en DateTime skal koonz enten bruge StrtoDateTime for at få det til at virke, eller lade Time være en TTime. Og eftersom det kun er tidspunktet koonz sætter vil det være mere naturligt at bruge en TTime.
Jo, Date, Time og DateTime er altid et decimaltal, nemlig antallet af dage, timer, minutter, sekunder og millesekundr siden d. 30.12.1899, med dage som hele tal og timer, minuttere og sekunder som decimalerne.
Og du behøver ikke decode-/encodetime. StrtoTime/StrtoDate/StrtoDatetime er decode og omvendt er det encode.
Når man sætter en datetime = kl. 10.00 er det altså kl. 10.00 d. 30.12.1899 og det er ganske rigtigt et kommatal med 0,etellerandet.
Så det koonz skal gøre er at bruge time enten med timetostr(time) eller proppe det ind i en double og så kigge på decimalerne.
MEN, MEN, MEN der er et helt andet problem vi begge lige har overset:
Date, Time og Now er interne Delphi værdier man kan bruge til f.eks.:
..Caption := 'Kl. er nu '+timetostr(time); eller ..Caption := *Det er idag d. '+datostr(date);
og endeligt
..caption := *Dato og klokkeslet er: '+datetimetostr(now);
Så Koonz: Du skal kalde din var noget andet end time, fordi time er en indbygget variabel der altid viser den nuværende tid.
Kay SJensen jeg skal lige afprøve, jeg trode delphi gav en fejl af en eller anden slag hvis jeg brugte et "resevret" ord, men jeg kan godt se problemet
procedure TfrmMain.pAutomail; var DayOfMonth,Tempstring, Nowtime: string; SPos : Integer;
begin TempString := DateToStr(now); DayOfMonth := Copy(TempString,1,2); {dag i måned hentes} NowTime := TimeToStr(Now); if (chkMonth.Checked = True) and (strToInt(cmbMonthDay.Text) = StrToInt(DayOfMonth)) then Begin if (StrToTime(edtMonthTime.Text) > StrToTime(NowTime)) and (vMonthSent = false) then begin vMonthSent := True; end; end else vMonthSent := False; end;
Problemet opstår i at Konveteringen StrToTime(edtMonthTime.Text) altid bliver 0 måske også StrToTime(NowTime)
For det første ville jeg bruge DecodeDate proceduren til at finde månedes nummeret, da den nok er mere sikker.
Så ser det ud til at dit dato format er sat op til amerikansk (mmddyy) i forhold til den danske (europæiske) (ddmmyy), siden du henter de to første karakterer som måneds nr.
Hvis man forsøger at lave en konvertering af et forkert format vil der opstå en exception. Du har måske en try - except der fanger den fejl?
Hjælper det at indføje følgende linie i starten af din function: ShortTimeFormat := 'hh:mm'; så du tvinger Delphi til at bruge det format.
Hvis jeg prøver den kode du vise i dit spørgsmål virker det udemærket.
Hvis man laver programmer der kan/skal køre på windows platforme der bruger en anden dato og tids format end her i Danmark, risikerer man at løbe ind i problemmer hvis man bruger tidskonverteringroutiner til/fra string.
Hlj -> Tak for hjælpen, du gav lige de vise sten ;)
Det er nu dagen i måneden jeg piller ud, men jeg kan godt se ideen med at bruge decode, selvom programmet "kun" skal køre på danske maskiner, kan datoen jo godt være sat op til engelsk. Jeg viste ikke en sådan procedure fantes, men man skal jo lære så længe...
Du får points - det må være OK, eftersom det var dig der gav det sidste skub, men også tak til Jensen og Snorga fo hjælpen
Jeg takker også og du har ret i, at jeg i farten overså at det jo egentlig er dagen i måneden du skal bruge.
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.