[Delphi] TGGlite - nowe tokeny

rafal

Były Moderator
Dołączył
Marzec 30, 2005
Posty
392
Pewnie kazdy kto uzywal komponent GGlite zauwazyl ze w momencie wprowadzenia nowych tokenow (kolorowych), funkcja pobierania tychże tokenow przestala funkcjonować. A zatem mala poprawka ktora nalezy wprowadzic aby wsyzstko juz dzialalo poprawnie.

Edytujemy plik : gglite.pas z katalogu /lib
Szukamy funkcji :
Kod:
function TGGLite.GGGenerateToken(var TokenId: string; var TokenVal: TStream):integer;
Zmieniamy cala funkcje badz odpowiedni wiersze na ten wzor :
1. metoda :
Kod:
function TGGLite.GGGenerateToken(var TokenId: string; var TokenVal: TStream):integer;

var

    PostFields:TStrings;

    ResponseMsg:string;

begin



  result:=-1;



  try

    IdHTTP1.ProtocolVersion:=pv1_0;

    IdHTTP1.Host:= 'register.gadu-gadu.pl';

    IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';

    IdHTTP1.Request.UserAgent:= HTTP_USER_AGENT;



    IdHTTP1.Request.Pragma := 'no-cache';



    PostFields:=TStringList.Create;

    ResponseMsg:=IdHTTP1.Post('/appsvc/regtoken.asp',PostFields);

    PostFields.Text:=ResponseMsg;



    TokenId:=PostFields.Strings[1];



   IdHTTP1.ProtocolVersion:=pv1_1;

   IdHTTP1.Get('http://www.gadu-gadu.pl/register/regRndPict.php?tokenid='+TokenId,TokenVal);





    result:=0;



  except

  end;



end;
2. metoda :
zamiast :
Kod:
IdHTTP1.Get('http://www.gadu-gadu.pl/register/regRndPict.php?tokenid='+TokenId,TokenVal);
Nalezy wstawic :
Kod:
IdHTTP1.Get(PostFields.Strings[2]+'?tokenid='+TokenId,TokenVal);

Obie metody roznia sie pomiedzy soba jedynie tym iz w pierwszej jest adres wstawiony na "sztywno" jak to mialo miejsce w poprzednich wersjach GGlite, zas w 2 metodzie adres jest pobierany ze strony rejestracyjnej gadu, co uchroni w przyszlosci autorow programow korzsytajac z gglite, w momencie gdyby ponownie zmienil sie adres z ktorego pobierane sa tokeny. Niech kazdy wstawi odpowiednia funkcje wedle uznania.

Oki teraz przyklad programu pobierajacego nowy token :
Nalezy pamietac ze stream (obrazek, token) nie jest juz jpegiem a gifem, i w przypadku delphi nalezy dodac do uses GIFImage. Ponadto rozmiar sie zmienił , dawniej 60x24, teraz 115x30.
komponent GifImage mozna pobrac stad : http://finn.mobilixnet.dk/delphi/gifimaged7c.zip

Przykladowe zaladowanie tokena do Timage (ze stream'a) :
Kod:
uses gifimage, jpeg, gglite i reszta;

var

tokenid : string;



procedure Tform1.button1click....;

var

stream : tstream;

gif : tgifimage;

begin

image1.picture:=nil;

tokenid:='';

stream := tmemorystream.create;

gg.gggeneratetoken(tokenid, stream);

application.processmessages;

sleep(100);

if stream.size <> 0 then

begin

stream.seek (0, 0);

gif := tgifimage.create;

gif.loadfromstream(stream);

image1.picture.bitmap.assign(gif);

application.processmessages;

gif.free;

stream.free;

end;

end;
W ten sposob mozna pobrac token,nie bede sie jednak rozwodzic nad kazda linia, bo jesli ktos korzystal kiedykolwiek z funkcji pobierania tokena wie co i jak, tymbardziej ze zmienilo sie tylko pobranie gifa zamiast jpeg'a .
Proces rejestracji rowniez sie nie zmienil , wiec nie bede go opisywac :-]
Oczywiscie samo pobranie tokena mozna przeprowadzic bez uzycia komponentu gglite, uzywajac TIdHTTP, nom ale i tak z reguly na pobraniu tokenow korzystanie z ggilte sie nie konczy ;-)
The End
 

Kornik52

Były Moderator
Dołączył
Sierpień 12, 2004
Posty
848
No niestety ja uzywajac Delphi6 nie moge zainstalowac tego komponentu sciaglem taki tyle ze na delphi6 lecz on nie dziala. Probowalem tez otworzyc sciagniety obrazek za pomoca windowsowskiego painta, ale tez nie przynioslo to zadnych rezulatatów.

.. Szkoda.

Edit

Dobra dobra juz dziala xD - jaki jak glupi
<
<
 
Do góry Bottom