Time now w wątku

0
procedure tWatek.Execute;
   var
string1 : string;
  C : TPoint;
  I : integer;
  HDat, HNow, MDat, MNow, SDat, SNow, MSDat, MSNow : Word;
kataski : boolean;
begin
while True do
 begin
if form1.p10.Text <> '' then form1.p15.Visible:= true;
if form1.p10.Text = '' then form1.p15.Visible:= false;
sleep(50);
   Application.ProcessMessages;
begin
  for I := 0 to form1.ListView1.Items.Count - 1 do
  begin
    ClickData := TClickData(form1.listview1.Items.Item[I].Data);
    DecodeTime(Now, HNow, MNow, SNow, MSNow);
    DecodeTime(ClickData.RunTime, HDat, MDat, SDat, MSDat);
    if (HDat = HNow) and (MDat = MNow) and (SDat = SNow) then
    begin
   form1.webbrowser1.Navigate(form1.wersjajezyczna.text);
form1.timer2.enabled := true;
string1 := form1.webbrowser1.LocationURL;
string1 := AnsiReverseString(string1);
delete(string1, 1, pos('/', string1));
ReverseString(string1);
insert('/game.php?screen=place', string1, length(string1));
form1.webbrowser1.navigate(string1);





    end;

    end;
    end;
end;
end;

Kompiluje się, ale gdy przyjdzie ta godzina która jest w ListViewie to jest błąd, na linicje

    if (HDat = HNow) and (MDat = MNow) and (SDat = SNow) then

Czy błąd, może być dlatego iż clicldate jest osobną klasą?

0

a przeczytałeś ten jebitny komentarz jak tworzyłeś nowy wątek??? Bo widzę, że nie masz żadnego pojęcia o wątkach, jak one działają i jak wpływają na komponenty wizualne. I wyprzedzając twoje prośby/pytania - w necie jest od metra artykułów jak się do wątków w delphi zabrać

0

Po pierwsze, zamiast:
ClickData := TClickData(form1.listview1.Items.Item[I].Data);
DecodeTime(Now, HNow, MNow, SNow, MSNow);
DecodeTime(ClickData.RunTime, HDat, MDat, SDat, MSDat);
if (HDat = HNow) and (MDat = MNow) and (SDat = SNow) then
możesz napisać:
if Trunc(SecsPerDayFrac(TClickData(form1.listview1.Item[I].Data).RunTime))=Trunc(SecsPerDayFrac(Now)) then
można to jeszcze uprościć o ile w .RunTime będzie już zapisano w formie Trunc(SecsPerDay*Frac(Czas)).

Delphi czasami wariuje przy dużej ilości komentarzy i pokazuje nieodpowiedni wiersz błędu.

Może pokaż gdzie i jak podczepiasz ten Item[I].Data ?

Generalnie nie tędy droga, wątek tu jest bez sensu.
Po dodaniu czegoś lub zmianie na tej liście oraz po wywołaniu timera:

  • posortuj zdarzenia,
  • wybierz najbliższe,
  • ustaw timera na to najbliższe zdarzenia.
0

Tak tylko, że używając to w timerze, gdy użyje sleep, będzie mi zamulać.

0
 procedure tWatek.Execute;
   var
string1 : string;
  I : integer;
begin
while True do
 begin
if form1.p10.Text <> '' then form1.p15.Visible:= true;
if form1.p10.Text = '' then form1.p15.Visible:= false;
sleep(50);
begin
  for I := 0 to form1.ListView1.Items.Count - 1 do
  begin


     if Trunc(SecsPerDay*Frac(TClickData(form1.listview1.Items[I].Data).RunTime))=Trunc(SecsPerDay*Frac(Now)) then
    begin
    Synchronize(SetProprties);


end;

    end;
    end;
end;
end;
procedure Twatek.SetProprties;
var
string1 : string;
begin
 sleep(50);
   form1.webbrowser1.Navigate(form1.wersjajezyczna.text);
 stronasciagnieta := false;
form1.timer2.enabled := true;
string1 := form1.webbrowser1.LocationURL;
string1 := AnsiReverseString(string1);
delete(string1, 1, pos('/', string1));
ReverseString(string1);
insert('/game.php?screen=place', string1, length(string1));
form1.webbrowser1.navigate(string1);
end;
procedure loginprocedura;
var
  ovElements : OleVariant;
  i : Integer;
begin
 if stronasciagnieta = true
    then
  begin
        FillForm(form1.WebBrowser1, 'user', form1.login.text);
        FillForm(form1.WebBrowser1, 'password', form1.haslo.text);

        begin
          ovElements := form1.WebBrowser1.OleObject.Document.forms.item(0).elements;
          for i := 0 to (ovElements.Length - 1) do
            if
              (ovElements.item(i).type = 'submit') and
              (ovElements.item(i).Value = 'Login') then
              ovElements.item(i).Click;

      end;

       
       stronasciagnieta := false;
  end;
end;

Gdy wybije godzine wywala bład, na ovElements := form1.webr......

0

Możliwe że przeglądarka jeszcze nie załadowała formy.

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