Jump to content
GSForum - Segélyvonal

Perl - Pack függvény


Geree Nice

Recommended Posts

Geree Nice

Hello!

 

Szükségem lenne egy függvényre, a Perlben használatos Pack-re. Sajnos csak Delphiben tudok programozni, és nem találtam meg az itteni megfelelõjét, ha van egyáltalán. Keresgettem, hogy mi ez pontosan, hogy megírjam magamnak Delphiben, de nem nagyon lett tiszta a dolog "hogyan"-ja.

 

Egy leírást találtam róla, de nem nagyon áll össze a kép ezzel sem: http://perldoc.perl.org/functions/pack.html

 

Valaki esetleg nem tudná megmondani, hogyan tudom áthozni ezt a függvényt Delphibe, mutatni esetleg egy Delphi-s parancsot, ami ezt helyettesíti, esetleg megírni a függvényt Delphi alá? :(

 

Bármiféle reakciót szívesen fogadok, köszönöm az esetleges segítséget elõre is : Geree

Link to comment
Share on other sites

Calyd

Jó lenne, ha leírnád, hogy mire szolgál ez a függvény. Úgy olvasom, hogy szövegek összefűzésére. Erre használhatod a "+" operátort is, de a Concat függvény is.

Link to comment
Share on other sites

Geree Nice

Egy MMORPG játék szerverével szeretnék kommunikálni, és néhány packet tartalmazza a függvényt. Nem tudom sajna mit csinál. Egy Perlben írt bot program forrásából olvasgattam 1-2 dolgot, azt tudom, mit kell tennem, ahhoz, hogy elérjem a szervernél amit akarok ;) Csak a megvalósítás bajos. Írok 1 példát.

 

$msg = pack("C*", 0x9f, 0x00, 0x12, 0x00, 0x00) .

pack("S*", $ID) .

pack("C*", 0x20, 0x60, 0xfb, 0x12, 0x00, 0x1c) .

$targetID;

 

Ezt a stringet össze tudnám rakni, mert a targetID-t és az ID-t ismerem, megvan a pack paramétere is. Csak maga a függvény hiányzik.

 

Rosszul magyarázok, de remélem azért érthető volt :D

Link to comment
Share on other sites

Calyd

Ha konkatenálni akarsz, akkor arra ott a Concat. Én úgy értelmezem, hogy ezt szeretnéd csinálni.

Link to comment
Share on other sites

arpsoft

Ez olyan, mint a C-ben az sprintf. Delphi-ben pedig Format-nak hívják. Nem teljesen egyezik a pack-al (kevesebbet tud), de használható.

Link to comment
Share on other sites

Geree Nice

Átrágom a Formatot, remélem jó lesz. Köszi ;)

 

1 kérdés még:

Perl : pack("C*", 0x9f, 0x00, 0x12, 0x00, 0x00)

Delphiben hogy kell meghívni a Formatot, hogy ugyanezt adja vissza? Próbálkoztam pár dologgal, de nem sok sikerélményem volt.

Link to comment
Share on other sites

Calyd

Nézd meg a helpet. Szerintem nagyon jól használható. Általában konkrét példát is ad a használatra.

Link to comment
Share on other sites

arpsoft

A Perl-ben a string-ek nem nullával lezártak?

Link to comment
Share on other sites

Geree Nice

De, szerintem igen.

Link to comment
Share on other sites

arpsoft

Akkor mi értelme van a Perl kódodnak?

Link to comment
Share on other sites

Geree Nice

Bevallom, hogy nem tudom, pontosan hogy mûködik a dolog, emiatt is írtam ide a kérdésem. Az az egy biztos, hogy ez a parancs így mûködõképes és helyes, mivel egy tökéletesen funkcionáló program forráskódjából másoltam ki.

 

Sikeresen belevágtam ismét valamibe, ami túl magas nekem :)

Link to comment
Share on other sites

arpsoft

Nos, csatlakoznom kell Calyd-hoz. Egyszerûbb lene egyszerûen a hexadecimális kódokkal megadott karaktereket és a stringeket konkatenálni, azaz egymás után fûzni.

Persze egyáltalán nem lesz értlemes a szöveg, maximum valamilyen adat-kommunikációhoz lehetne használni.

Link to comment
Share on other sites

Geree Nice

Próbáltam én már mindent, egyik se ment :D Talán kicsit mély vízre eveztem... Szórakozom vele még kicsit, aztán ha megy megy, ha nem, hát feladom. Mindenesetre köszi a segítséget, valamivel mindenképp elõrébb vagyok.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...