if ... then ...

0

kurna mam głupi problem bo nie wiem co się dzieje!
zacznijmy więc od tego, że mam rekord:

TUserSetting = record
      name,
      username,
      password,
      host: string;
      messages: smallint;
    end;

zmienne globalne:

var
    users: array of TUserSetting;
    loop: smallint = 0;
    odebrane: smallint; 

mam timer, w którym jest pętla. ma ona ort! użytkowników i robić swoje:

var
  ...
  i: smallint;
begin
if InternetConnect then
begin
  try
    for i := loop to high(users) do
    begin
      loop := i;
      ...

        odebrane := poczta.CheckMessages;

        if (odebrane > 0) and (odebrane > users[loop].messages) then  // tu chyba jest coś nie tak
        begin
          main.Show;
          ...
          users[loop].messages := odebrane;
          odebrane := 0;
          ...
    end;
    loop := 0;
  except
    ...
  end;
end
else
  MessageBeep(5000);

i problem w tym, że ma mi wyskakiwać okienko jak 'odebrane' jest większe niż zero (czyli coś odebrało, a dokładniej poczte) i jeśli użytkownik ma przypisane w polu odebranych (messages) mniej niż jest wiadomości odebranych. i za przeproszeniem g**no... za każdym razem mi wyskakuje okienko, tak jakby nic nie zostało przypisane do pola 'messages'.
Pomożcie! ;-(

0

Przede wszystkim sprawdź czy w oglole coś odbiera.. a jak tak - to jechane jakimś logiem czy czymś podobnym.

0

odbiera, za pierwszym razem ma wyskoczyc forma, a pozniej juz nie, a wyskakuje zawsze

0

Wg tego kodu okno wyskoczy tyle razy ile jest elementow tablicy, a tak w ogole to po co ci te loop? i zamiast 0 'bezpieczniejsze' jest Low(users).

//Chodzilo mi o zmienna loop, po kija wprowadzac niepotrzebne rzeczy, jak masz juz i [glowa] . I dalej nie widze twojego problemu, jak chcesz raz co cykl timera to daj po Show Exit i juz

0

zakładam tak, że timer co okreslony czas (np. 10s) sprawdza poczte wszystkich użytkowników (dlatego ta pętla). no i ma sie wyswietlic okienko jak jest nowa poczta dla danego uzytkownika, ale za pierwszym razem, czyli po nastepnych dziesięcu s. jak bedzie ta sama, to nie wyswietli formy, chyba ze bedą nowe wiadomości. a mi za każdym razem wyświetla to okienko, tak jakby nie chciało zapisać do rekordu ile ma odebranych wiadomości dany użytkownik.

0

Wrzucasz kowałek kodu i chcesz aby ktoś odwalił za ciebie brudną robotę? Logi albo pan debug powinny Ci wystarczyć. Co jakiś czas ktoś wrzuca długi kawał codu i marzy. ten jest krótki ale to co. Umiejętność znajdowania błędów jest tak samo ważna jak kodowanie, które w znacznej części to żmudne wystukiwanie kitu, sprawdzeń i jescze raz kitu żeby ładnie wyglądło. Życzę powodzenia w poszukiwaniach bug'a :p

// Nie bądź taki dowcipny (LX ??)... forum słuzy do tego, żeby wrzucać kawałki kodów. Jeśli nie chcesz nie czytaj. Ludomir izi, olać lolków [mf]

0

powiem ci "Anonim" <ort>że byś</ort> sie walił na h... myślisz ort!, że ja nic nad tym nie myślałem? mylisz się, robiłem doswiadczenia jakie wartośi mi za każdym razem wychodzą i nic! ale nie będe sie twoją głupią opinią przejmował, bo sie z nią nie zgadzam:

  1. <ort>mÓj</ort> kod wcale nie jest długi
  2. są komentarze
  3. jest to szkielet procedury a nie cały program
  4. nie chce aby mi ktoś zrobił program, tylko popatrzył czy nie ma jakiś nieścisłości

No dobra. a teraz do rzeczy.już żem przeanalizował i <ort>doSZEDŁem</ort> do tego, że po prostu tyle ile jest użytkowników [for i := loop to high(users)] tyle razy mi sprawdza danego użytkownika i za każdym razem mi wyskakuje moje okienko. póxniej znowu pętlą sprawdza nastepnego, uzytkownika. nie wiem czemu sie tak dzieje. dodam że teraz robię to w wątku, może lepiej mi wyjdzie.

0

nie wiem o co w tym chodzi, ale zrobiłem tak, i działa [hurra] :

if (loop mod 2) = 0 then continue;

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