Toon posts:

[delphi] tijden vergelijken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb op mijn unit in delphi een listbox gezet met een reeks tijden in, in deze vorm:
12:30:00
13:00:00

daarnaast heb ik een paradox table met een time veld met waarden in dezelfde vorm weggeschreven.

nu moet ik kijken op de datum die geselecteerd is in de combobox groter of kleiner is dan een datum uit de tabel.

het probleem is dat als ik de vergelijking zo opstel :

if strToTime(cmb_time.text) > UnDatabase.dmUsers.gebruikersGebruikersUur then ...

krijg ik incompatible types als fout. nogthans zijn ze bijde tijden.
als ik ze beide omzet naar een string lukt het wel maar dan klopt de vergelijking niet omdat je dan de ascii waarde gaat vergelijken

iemand een idee waar de fout ligt? spijtig dat er geen CompareTime bestaat in delphi

  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
En als je nou zo doet?
if strToTime(cmb_time.text) > strToTime(UnDatabase.dmUsers.gebruikersGebruikersUur) then

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Je kunt natuurlijk je tabel ook aanspreken dmv ADO en dan bij dat betreffende veld een .asTime gebruiken. Dan weet je (ook) zeker dat je een tijd terugkrijgt.

My personal website


Verwijderd

Topicstarter
mag het nie iva ADO, maar ik ga hier even doorprullen, ik zie juist dat hij ergens een lus niet uitvoert, misschien dat hij daardoor altijd de melding geeft dat de tijd niet juist is. I'll be back!!

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Let ook op het volgende: De tijd wordt intern opgeslagen in het gedeelte achter de komma van een float. .0 is 00:00 en .5 is 12:00 enz. Afrondingsfouten hebben als gevolg dat ondanks dat de tijd hetzelfde is, de TTime niet precies dezelfde waarde hoeft te hebben. Maw StrToTime('12:00') hoeft niet hetzelfde te zijn als TTime(0.5). Gebruik een speciale functie om tijden te vergelijken.

We adore chaos because we like to restore order - M.C. Escher


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Het is misschien beter om het om te zetten naar milliseconden en dan pas te vergelijken. Om die afrondingsfouten (if any) te omzeilen kun je dan nog evt afronden naar 1000-tallen (seconden) met RoundEx.

日本!🎌

Pagina: 1