Procedura o Ustalonej godzinie...

0

mam takie cos

Present := Now;
DecodeTime(Present, Hour, Min, Sek, MSec);
if (Hour = a) and (Min = b) and (Sek = c ) then
ShowMessage('Czas cos zrobic');

a,b,c - zmienne string(teksty z editow). jesli chodzi o wykonanie w okreslonej godzinie to dziala bez problemu. nie wiem natomiast jak zrobic, aby cos sie dzialo troche wczesniej... np 15 minut wczesniej...

Present := Now;
DecodeTime(Present, Hour, Min, Sek, MSec);
if (Hour = a) and (Min = b-15) and (Sek = c ) then
ShowMessage('Za 15 cos sie stanie');

tak jak widac b-15 nie chce dzialac... co z tym zrobic ?

0

moze sproboj tak:

Present := Now;
DecodeTime(Present, Hour, Min, Sek, MSec);
if (Hour = a) and (Min = StrToInt(b)-15) and (Sek = c ) then
ShowMessage('Za 15 cos sie stanie');
0

no tak dziala ;) tylko mam problem, ze np ustawie godzine na 1000 - dam, aby 15 minut wczesniej pokazal sie komunikat... wtedy juz sie nie pokazuje, bo wartosc w minutach jest -10 :(

a powinno sie pokazac o 900...

0

Przekonwertuj czas na sekundy, odejmij określoną liczbę sekund i ponownie przekonwertuj na hhss

0

ok smiga :) tylko jeszcze pytanie jak z zmiennych Word przejsc na Integer ?

0

konwersja z Word na Integer jest dokonywana automatycznie podczas przypisania. Zakres Word w całości mieści się w zakresie Integer, więc nie ma problemu.

0

cos nie moge uwierzyc, poniewaz nie moge na tym robic ani dzialan, ani wyswietlic w formie wiadomosci... musze to jakos przekonwertowac na integer, albo chociaz string...

0

To nie jest kwestia wiary, ale znajomości jasno sprecyzowanych podstaw na temat typów danych. Word to 16-bitowy typ całkowity o zakresie 0..65535, Integer to 32-bitowy typ całkowity i zakresie -2147483648..2147483647. Nie trzeba być programistą żeby zauważyć, że można śmiało zmieścić zakres Worda w Integerze. Co do wyświetlania liczb jako tekst... polecam zapoznanie się z funkcjami modułu Sysutils

0

bardzo ciekawe... bo ja nadal nie potrafie przejsc z Word -> Integer...

Sec:word
b:integer

b:=Sec - nie dziala...

0
sebuschlebus napisał(a)

b:=Sec - nie dziala...

Nie ma prawa nie działać... :>

0

WTF? Kpisz, czy o drogę pytasz? Jak to nie działa?

Zawsze nie lubiłem w Pascalu ścisłej kontroli typów, ale bez jaj, konwersji Word do Integer to nawet w Pascalu wykonywać nie trzeba, rotfl

0

normalnie nie dziala...

mam te forme do czasu

var
liczba:integer;
Present : TDateTime;
Hour, Min, Sek, MSec : Word;
begin
Present := Now;
DecodeTime(Present, Hour, Min, Sek, MSec);

i potem daje

liczba:=Sek

I tak jak mowilem, nie chodziiiii....

0

bardzo precyzyjne określenie problemu: "nie chodzi", albo "nie działa"

0

wyskakuje blad

IS NOT A VALID INTEGER VALUE

0

w jakim momencie to wyskakuje? :>

0

Ten komunikat nie tyczy się word:=integer tylko konwersji int na string (np.) Zgaduję, bo udzielasz tak precyzyjnych informacji, że szok. Poniżej zamieszczam gotowca w myśl słynnego cytatu "kończ waść, wstydu oszczędź".

var
  Czas             : Integer;
  Present          : TDateTime;
  TimeLess         : TDateTime;
  hh, mm, ss, s100 : Word;
begin
 Present := Now;
 DecodeTime(Present, hh, mm, ss, s100);
 czas := (hh*3600)+(mm*60)+ss;

 czas := czas-(900);
 hh := (czas div 3600) mod 24;
 mm := (czas div 60) mod 60;
 ss := czas mod 60;

 TimeLess := EncodeTime(hh, mm, ss, s100);
end;

//@Dopisane: Jak powiesz, że to nie działa to kupię broń i zastrzelę

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