Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Delphi] Zapisywanie wygenerowanych już liczb pseudolosowych

03 Wrz 2010 02:08 1707 4
  • Poziom 9  
    Cześć, napisałem program do wysyłania wiadomości na losowe numery Gadu Gadu, można tego używać np. do spamu. Mam jednak mały problem, ponieważ chcę, by mój program logował numery GG do których wiadomość została wysłana.

    Kod:

    Code:
    procedure TForm1.Timer1Timer(Sender: TObject);
    
    var
    r1: integer;
    a: integer;
    begin
    if Timer1.Enabled=True then
    begin
    Edit9.Text:='stan ok';
    Randomize;
    r1:= random(10000000);
    a:= r1;
    SpamGG1.SendMsg(a, Memo3.Text,  Memo3.Text,  Memo3.Text);
    Memo4.Lines.Add(IntToStr(a));
    end;


    A więc, nie mogę sobie poradzić, ponieważ numery zapisane do Memo4 są inne niż te na które wysłano wiadomość. Sprawdziłem to tak, że poczekałem aż ktoś mi odpisze, zapisałem listę numerów Memo4 do pliku tekstowego i wyszukałem numer GG z którego mi odpisano - nie znaleziono.

    Tak więc, jak już wiadomo - generowane są 2 liczby pseudolosowe naraz - jedna jako numer GG, druga jako nic nieznaczący numer dodawany do Memo4, który może ewentualnie służyć do pokazywania oku szybkości wysyłania.

    Proszę o pomoc
  • Moderator Programowanie
    Odpowiedzi musisz poszukać raczej tutaj :
    Code:
    SpamGG1.SendMsg(a,...

    Sprawdź czy ta procedura nie zwraca przypadkiem czegoś w zmiennej a.
    Możesz to sprawdzić chociażby zmieniając
    Code:
    Memo4.Lines.Add(IntToStr(a)); 

    na
    Code:
    Memo4.Lines.Add('Random GG: '+IntToStr(r1)+ ' po wysłaniu : '+IntToStr(a)); 

    Poza tym, problem może wynikać z zastosowania przez Ciebie zmiennej typu integer, a losowane przez ciebie liczby są z zakresu od 0 do 10 milionów... może się mylę, ale typ integer jest w stanie "pomieścić" liczy ze znakiem z zakresu ok. -2 miliony do ok. + 2 miliony...
    Przemyśl co się stanie, gdy wylosujesz liczbę np. 8 000 001 :)
  • Poziom 9  
    Dobra, teraz już wszystko działa miodzio :D
    Dziękuję
  • Poziom 25  
    Po pierwsze wysyłanie spamu jest nie legalne.

    Jeżeli ta procedura Timer1Timer to jest zdarzenie OnTimer dla Timer1 to bezsensownym jest warunek sprawdzający czy Timer1 pracuje. Randomize używa się tylko raz w programie, np. w OnCreate dla formatki. Niepotrzebnie masz dwie zmienne (r1, a) skoro obie mają tą samą wartość. Nie wiem co to jest za komponent SpamGG1 ale jeżeli dla pierwszego argumentu funkcji SendMsg podajemy nr docelowy to niemożliwe jest, aby lista z Memo4 różniła się od numerów do których wiadomości zostały wysłane. To o generowaniu 2ch liczb to kompletna bzdura.

    arnoldziq napisał:
    może się mylę, ale typ integer jest w stanie "pomieścić" liczy ze znakiem z zakresu ok. -2 miliony do ok. + 2 miliony...

    Mylisz się, nie miliony tylko miliardy.
  • Poziom 9  
    To, że zrobiłem program do wysyłania spamu, nie znaczy że go wysyłam. (Dla testów wysyłam "siema, jesteś?") Bawiłem się w robienie programów korzystających z GG.

    Poprawiłem trochę kod, wywaliłem całkiem zmienną a i sprawdzanie czy Timer pracuje.

    edit: jednak mam wrazenie ze po wywaleniu zmiennej "a" wiadomosci do nikogo nie dochodza, bo nikt nie odpisuje ... no nic, dalej testy..