Ich habe ein ähnliches Problem was ich einfach nicht in den Griff bekomme, würde mich freuen wenn jemand Rat weiß. Ich will einen Parkautomaten nachbauen, der bei bestimmtem geldeinwurf eine spezielle zeit auf die aktuelle draufrechnet. ich glaube der vergleich funktioniert nicht, denn der teil wo zeiten nicht verglichen werden sollen funktioniert, der andere aber nicht.
Delphi-Quellcode:
function TZeit.endzeit : string;
var differenz, endtime : TDateTime;
ende, frueh, spaet : string [8];
begin
frueh := '09:00:00';
spaet := '19:00:00';
if geld > 0 then
begin
{Falls aktuelle Zeit vor 9 und nach 19 Uhr ist soll bei verschiedenen Geldwerten die jeweilige Zeit auf 9 Uhr draufgerechnet werden}
if ((now < strtotime(frueh)) and (now > strtotime(spaet))) then
begin
if geld = 0.5 then ende := timetostr(strtotime(frueh)+strtotime('00:30:00'));
if geld = 1 then ende := timetostr(strtotime(frueh)+strtotime('01:00:00'));
if geld = 1.5 then ende := timetostr(strtotime(frueh)+strtotime('01:30:00'));
if geld = 2 then ende := timetostr(strtotime(frueh)+strtotime('02:00:00'));
end
else
{Falls die aktuelle Zeit zwischen 9 und 19 uhr liegt soll einfach die entsprechende Zeit draufgerechnet werden --nur dieser teil funktioniert-- }
begin
if geld = 0.5 then ende := timetostr(now+strtotime('00:30:00'));
if geld = 1 then ende := timetostr(now+strtotime('01:00:00'));
if geld = 1.5 then ende := timetostr(now+strtotime('01:30:00'));
if geld = 2 then ende := timetostr(now+strtotime('02:00:00'));
end;
{Falls nun die bezahlte zeit über 19 uhr liegt soll der rest der bezahlten zeit auf 9 uhr des folgetages draufgerechnet werden (datum unwichtig, nur uhrzeit)}
if (strtotime(ende) > strtotime('19:00:00')) then
begin
differenz := strtotime(ende) - now;
endtime := strtotime(frueh) + differenz;
ende := timetostr(endtime);
end;
endzeit := ende;
end;
end;
danke schonmal, exploitbashor