Szerző Téma: Fájl sorainak lekérdezése  (Megtekintve 3253 alkalommal)

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Fájl sorainak lekérdezése
« Válasz #30 Dátum: 2014. március 25. - 15:37:04 »
0 Show voters
Ha jól értem, akkor a fájl tartalmát az egyenlõség jelek mentén darabolja fel, a string típusú dolgokat (pl. azt, hogy \"a\") kihagyja, majd az integer típusú dolgokat (amely ugye egy szám lesz, pl. az \"a=3\"-nál a 3) a value változóba rakja. Pl. annál, hogy \"a=3\" az = jelek mentén fogja feldarabolni a dolgot, az a betût nem fogja figyelembe venni, és csak a 3-ast tárolja el. Vagy legalábbis valami ilyesmi, de ha nekem nem sikerült, majd más érthetõbben elmagyarázza.

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Fájl sorainak lekérdezése
« Válasz #31 Dátum: 2014. március 25. - 15:40:08 »
0 Show voters
http://forum.sa-mp.com/showthread.php?t=120356
szerintem ezt olvasd végig nagyon sokat tanulhatsz belõle :)
én is innen néztem :) emlékeztem régebbrõl hogy van ilyen lehetõség és utána néztem...
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
Fájl sorainak lekérdezése
« Válasz #32 Dátum: 2014. március 25. - 15:41:29 »
0 Show voters
Aha, vágom, köszi :D . Most már csak az a baj, hogy rájöttem nekem nem fájlból kell kiolvassa, hanem az enumokat kell leolvassa szépen, amit betölt ebbõl a fájlból bejelentkezéskor. Bocsi srácok! :D Csak annyit kérdeznék, hogy egy enum listát hogyan kell leolvasni? :D :D

Fájl sorainak lekérdezése
« Válasz #33 Dátum: 2014. március 25. - 15:46:00 »
0 Show voters
Fájl sorainak beolvasása egy megadott fájlból, és kiíratása konzol ablakban.
 
        
new
File:F = fopen(\"dini.fuck\", io_read),
str[128];
if(F)
{
while(fread(F, str))
{
   print(str);
}
fclose(F);
}

 
Ezt kell úgy módosítani hogy a beolvasott sorokat feldarabolja valamilyen eljárás az = (egyenlõségjel) mentén, majd össze kell fûzzni egy karakterláncba a kapott eredményt amit ki kell íratni dialogba.
Sajnos egy ideje nem szkriptelek és semmi kedvem nincs tesztelgetni de hamar össze dobok valamit.
 
stock
akarmi(playerid, filename[])
{
new
File:F = fopen(filename, io_read), // Fájl megnyitása
str[128], // karakterlánc tárolása
dialogstring[256], // kimeneti, illetve a végeredmény tárolása
name[64], // Jelenleg nincs rá szükség csak az eljáráshoz kell
value[64]; // érték melyeket majd össze kell fûzni a dialogstring-be ha nem nulla persze karakterláncként beolvasva
if(F) // Fájl megnyitásának ellenõrzése
{
while(fread(F, str)) // Addig olvasunk amíg van sor
{
   if(ini_cut(str, name, value)) printf(\"Error. line: %s\", str); // Adat ellenõrzés és darabolás
            else
   {
      if(strval(value) != 0) // Ha nem nulla a value persze átalakítással mivel karakterláncként lett tárolva
      {
         strcat(dialogstring, value); // akkor összefûzés dialogstring változóba
         strcat(dialogstring, \"\\n\"); // új sor jel hozzáadása
      }
   }
}
//print(dialogstring);
fclose(F); // A megnyitott fájl bezárása
ShowPlayerDialog(playerid, 5432, DIALOG_STYLE_MSGBOX, \" \", dialogstring, \"Ok\", \"\"); // Megjelenítés
}
return 1;
}
stock
ini_cut(line[], name[], value[], const delim = \'=\') // author by Zsolesszka
{
new
ch,
pos = 0,
pos2 = 0,
bool:valid = true;
while((ch = line[pos++]) >= \' \')
{
while(line[pos] == \' \') pos++;
if(ch == delim) { valid = false; continue; }
if(valid)
   name[pos - 1] = ch, name[pos] = EOS;
else
   value[pos2++] = ch, value[pos2] = EOS;
}
return valid;
}

 
Persze az ini_cut helyett használhatod a sscanf-et is, vagy bármi mást ami képes feldarabolni neked a beolvasott karakterláncot egy megadott karakter mentén (=).


Edit:
Késõn olvastam a hozzászólást, van rá mód hogy végig futtass egy ciklus utasítással egy enum által tárolt adatokat amit aztán szintén össze tudsz fûzni egy adott karakterláncba melyet megtudsz jeleníteni.
« Utoljára szerkesztve: 2014. március 25. - 15:48:19 írta ɐʞzssǝlosz »

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
Fájl sorainak lekérdezése
« Válasz #34 Dátum: 2014. március 25. - 16:08:49 »
0 Show voters
Inkább hagyom az egészet, nem lehet úgy megcsinálni, hogy majd lehessen is hivatkozni egy bizonyos listitemre, úgy hogy tudod is mi az...

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Fájl sorainak lekérdezése
« Válasz #35 Dátum: 2014. március 25. - 18:41:07 »
0 Show voters
te tudod :) ha ennyire volt fontos :)
én pl saját parancs motort írtam mert nekem egyszerre lehet dialogként és parancsként használni minden funkciót és ott nagyon egyszerûen megoldottam a dinamikus dialog címzést...tanulj tovább és neked is menni fog majd :)
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
Fájl sorainak lekérdezése
« Válasz #36 Dátum: 2014. március 26. - 15:56:22 »
0 Show voters
Igyekszem :D . Egyik barátom szerint át kéne írjam a dinit MySQL-re, mert azzal könnyebb, sõt, jobb a szervernek is. Most azzal próbálkozom.

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Fájl sorainak lekérdezése
« Válasz #37 Dátum: 2014. március 27. - 04:37:55 »
0 Show voters
Idézetet írta: doboka98 date=1395845782\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47353\" data-ipsquote-contentclass=\"forums_Topic
Igyekszem :D . Egyik barátom szerint át kéne írjam a dinit MySQL-re, mert azzal könnyebb, sõt, jobb a szervernek is. Most azzal próbálkozom.
 
hát én pl soha életemben nem használtam dinit :D alap fájl kezelési funkciókkal kezeltem csak fájlokat...dini jobban terhel csak egyszerûbb használni...
Megéri MySQL-ben tárolni az adatokat de attól még használhatsz config fájlokat...
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal