Kako najefkasnije odrediti string size

Započeo TarikBrt, Mart 24, 2020, 18:34:38 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 3 gostiju pregledaju ovu temu.

Jedan kratki tutorial o korištenju memorije i određivanju dužine stringa. Često se desi da najčešće početnici lupaju random brojeve za dužinu stringa neznajući da 1 ćelija uzima 4 bajta što i nije toliki problem ukoliko imate neku manju skriptu. Međutim ukoliko jednog dana postignete određeni uspijeh i ne zatvorite svoj server za 7 dana morat ćete da zadovoljite potrebe igrača i blagovremeno odradite određene update. Naravno vremenom će skripta biti sve veća i ruka će vas sve više bolit dok skrolate kroz skriptu , a memorije će biti sve manje. Zato pogledajte kako jednostavno i efikasno koristiti dragocijenu memoriju.
[pawn]
   static const str[] = "UPDATE `gps` SET `gIme` = '%e' WHERE `gID` = %d";
   new query[sizeof(str) + 12 + 3];
   mysql_format(Database, query, sizeof(query), str , GI[id][gIme], GI[id][gID]);
[/pawn]

Sada idemo liniju po liniju. :)

[pawn]static const str[] = "UPDATE `gps` SET `gIme` = '%s' WHERE `gID` = %d"; [/pawn]

Ukoliko ste početnik vjerovatno vam je odma za oko zapalo ovo static i const međutim to nije teško za shvatiti.
Static - označava da je varijabla dostupna jedino unutar ovog fajla i da je praktički nemoguće iskoristiti unutar drugog fajla (npr. include)
Const - ikao većina vas zna ali eto opet da pojasnim. Const označava da je varijabla konstanta i da se neće mijenjati nikako ( najčešće slučajno )
U ovom stringu nismo odredili tačnu veličinu što znači da će dužina biti tačno onoliko koliko karaktera ima + \0

[pawn]new query[sizeof(str) + 12 + 2];[/pawn]


Ovdje deklarišemo novu varijablu po imenu query i njen tip je string. I dajemo joj duzinu od velicine prije definisanog "str" stringa + 12 što predstavlja maximalan broj karaktera varijable gIme + 3 što predstavlja dužinu gID-a. Važno je reći da dužina stringa mora biti konstanta i zato smo ranije deklarisanu varijablu "str" deklarisali kao konstantu. I s ovim smo najefikasnije iskoristili našu memoriju.

[pawn]mysql_format(Database, query, sizeof(query), str , GI[id][gIme], GI[id][gID]);[/pawn]

I ovdje smo jednostavno iskoristili string. Ovo je ujedno i primjer kako formatirati novi string. Nadam se da vam je ovo makar malo pomoglo i da vam je jasno. Potrudio sam se da što jednostavnije pojasnim i da ne komplikujem više nego što je potrebno.



Citat: over poslato April 08, 2020, 18:26:18 POSLE PODNE
Posoji 100 efikasnijih nacina, ali okej.
Jedini efikasnijih nacina je dodati -2 za svaki parametar i koristiti character counter i tako odrediti tacnu duzinu. Zaista bih volio cuti ostalih 98  :)

Ili jednostavno koristiti dinamicne stringove.
[Include] > Optidraw
[Include] > Model-Sizes-SQL

Fino objasnjeno pohvale  ;)
AKO ZNAS ZA BOGA I ZA GLAVU ZIVU NE BRANI MI DOKTORE RAKIJU I PIVU

Citat: algorhitmically poslato April 08, 2020, 20:23:51 POSLE PODNE
Ili jednostavno koristiti dinamicne stringove.
Da, hvala na savjetu. Svakako da je efikasnije jer je plugin, jos efikasnije bi bilo pakovanje stringova ali kao sto naslov kaze radi se samo o odredjivanju duzine stringa kroz sam "vanilla" pawno.

Svaki malo bolji code editor ima ugradjenu opciju u sebi za racunanje ukupnog broja selektovanih karaktera.
Ne vidim potrebu pisanja ovoga.

Citat: Terza Lazarevic poslato April 08, 2020, 22:11:18 POSLE PODNE
Svaki malo bolji code editor ima ugradjenu opciju u sebi za racunanje ukupnog broja selektovanih karaktera.
Ne vidim potrebu pisanja ovoga.
5% ljudi na ovom forumu koriste IDE , a 95% obicni pawno editor tako da ne vidim potrebu za tvojim komentarom. Cilj mog posta je da pojasnim ljudima kako efikasno odrediti duzinu stringa, a ne koji IDE da koriste. :)

Dzaba njima ovaj tutorijal kad pojedini "skripteri" ne znaju koristiti. Cast izuzecima, ima na ovom forumu i dobrih skriptera.Tebi hvala sto si odvojio vrijeme za ovaj tut. moze nekom pomoci.


Github: Momenzi
Pikaboot: Website

Citat: M Ө M Σ N Z I poslato April 08, 2020, 22:36:26 POSLE PODNE
Dzaba njima ovaj tutorijal kad pojedini "skripteri" ne znaju koristiti. Cast izuzecima, ima na ovom forumu i dobrih skriptera.Tebi hvala sto si odvojio vrijeme za ovaj tut. moze nekom pomoci.
Nekome ko je usao da nauci nesto sigurno hoce za razliku od onih koji su dosli da prosipaju muda sa offtopic komentarima.

Citat: TarikBrt poslato April 08, 2020, 22:39:30 POSLE PODNE
Nekome ko je usao da nauci nesto sigurno hoce za razliku od onih koji su dosli da prosipaju muda sa offtopic komentarima.
Slazem se s tobom, ali nemoj se opet svadjati, ako imate nesto zavrsite privatno da vas moderatori ne bi dzaba kaznjavali i tjt


Github: Momenzi
Pikaboot: Website

Citat: TarikBrt poslato April 08, 2020, 22:27:16 POSLE PODNE
5% ljudi na ovom forumu koriste IDE , a 95% obicni pawno editor tako da ne vidim potrebu za tvojim komentarom. Cilj mog posta je da pojasnim ljudima kako efikasno odrediti duzinu stringa, a ne koji IDE da koriste. :)
Polako, precice na ST3, VSC etc za nekih 20 godina ;)