Dziwny bład gglite??

0

Witam.A więc robiłem se wczoraj programik,który wykorzystuje komponent GGlite.Dokańczałem go dzisiaj rano i wszytsko było ok.Zrobiłem se godzine przerwy ,dakej chce dokończy a tu gdy chce skompilowac projekt nagle wyskakuje mi blad op tresci:

Project xxx.exe raised exception class EInTOverlov with message 'Integer overlow'. Process Stoped, Use Step To continue.???

I zatrzymuje sie na 671 linijce kodu gglite.pas o tresci : ' y := y + x;' .

0

Podaje funkcje w której wystepuje blad :

function gg_login_hash(haslo: string; klucz: int):int;
var
  x, y, z, i :Integer;

  begin

    y := klucz;
    x := 0;

    for i := 1 to length(haslo) do
    begin
      x := (x and $ffffff00) or ord(haslo[i]);
      y := y xor x;
      y := y + x;   <<-----------------TU WYSTĘPUJE BŁAD-----------------------
      x := x shl 8;
      y := y xor x;
      x := x shl 8;
      y := y - x;
      x := x shl 8;
      y := y xor x;

      z := y and $1F;
      y := (y shl z ) or (y shr (32-z));
    end;

    result :=y;
  end;

begin

  result:=-1;

  try

  {$IFDEF TIMEBOMB}

  if (YearOf(Now)<>2003) and
    ((YearOf(Now)=2004) and (MonthOf(Now)>3)) then exit;

  {$ENDIF}


  if FSSL then IdTCPClient1.IOHandler := IdSSLIOHandlerSocket1
  else IdTCPClient1.IOHandler := nil;

  if not IdTCPClient1.Connected then
  begin
    with IdTCPClient1 do
    begin

      //Connect
      Host := FHost;
      Port := FPort;
      Connect(CONNECT_TIMEOUT);

      //Header
      GetMem(pointer_pakiet,sizeof(TGG_Header));
      ReadBuffer(pointer_pakiet^,sizeof(TGG_Header));
      pakiet_header := PGG_Header(pointer_pakiet);

      if (pakiet_header^._type = DEF_GG_WELCOME)
        and (pakiet_header^._length = sizeof(TGG_Welcome)) then
      begin

        FreeMem(pointer_pakiet);

        //Welcome
        GetMem(pointer_pakiet,sizeof(TGG_Welcome));

        ReadBuffer(pointer_pakiet^,sizeof(TGG_Welcome));
        pakiet_welcome := PGG_Welcome(pointer_pakiet);

        hash:=pakiet_welcome^._seed;

        FreeMem(pointer_pakiet);


        //Login header
        GetMem(pointer_pakiet,sizeof(TGG_Header));
        pakiet_header := PGG_Header(pointer_pakiet);
        pakiet_header^._type:=DEF_GG_LOGIN;
        pakiet_header^._length:=sizeof(TGG_Login);

        WriteBuffer(pakiet_header^,sizeof(TGG_Header));

        FreeMem(pointer_pakiet);

        //Login
        GetMem(pointer_pakiet,sizeof(TGG_Login));
        pakiet_login := PGG_Login(pointer_pakiet);
        pakiet_login^._uin:=FLogin;
        pakiet_login^._hash:=gg_login_hash(FPassword,hash);

        pakiet_login^._status :=$14; //NIEWIDOCZNY

        pakiet_login^._version:=$21;   //GG_HAS_AUDIO_MASK 0x40000000 v6.0

        pakiet_login^._image_size:=FMaxImageSize; //$14;		//
 	      pakiet_login^._unknown2:= $be;		//

 	      //pakiet_login^._local_ip:= $1901a8c0;		//
 	      //pakiet_login^._local_port:= $060e;		//

        WriteBuffer(pakiet_login^, sizeof(TGG_Login));

        FreeMem(pointer_pakiet);


        GetMem(pointer_pakiet,sizeof(TGG_Header));

        ReadBuffer(pointer_pakiet^,sizeof(TGG_Header));
        pakiet_header := PGG_Header(pointer_pakiet);


        if pakiet_header^._type=DEF_GG_LOGIN_OK then
        begin
          FreeMem(pointer_pakiet);

          //List empty header
          GetMem(pointer_pakiet,sizeof(TGG_Header));
          pakiet_header := PGG_Header(pointer_pakiet);
          pakiet_header^._type:=DEF_GG_LIST_EMPTY;
          pakiet_header^._length:=0;
          WriteBuffer(pakiet_header^,sizeof(TGG_Header));
          FreeMem(pointer_pakiet);


          RecvThread.Resume;

          Timer.Enabled:=true;

          result:=0;

        end
        else
        begin
          FreeMem(pointer_pakiet);
          result:=1;
        end;


      end else result:=1;

  end; //with

  end;
  
  except
      on E:Exception do result:=1;
  end;

end;
0

Hmm... Wygląda, jakby Integer zrobił się za mały. Trochę dziwne, że wpłynęła na to godzinna przerwa. Może źle podajesz jakieś dane?
P.S. Czy mi się wydaje, czy GGLite nie był ostatnio aktualizowany i może nie działać? Czy to dotyczyło jakiegoś innego komponentu do GG?

0

Mi sie wydaje ze ta godzinna przerwa to zadnego wplywu nie ma, <ort>po prostu</ort> nagle po jakims czasie samz siebie przestal dzialac.<ort>w ogóle</ort> dziwna sprawa.Ale mialem jeszcze raz sytuacje ze niedawno jeszcze raz mi znowu zadzialalo i znowu nie dziala, ale ort! widze ze raczej nie zadziala.Probowalem nas nowo instalowac Delphi,ale nic nie pomogło.

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