Mort 29 Odesláno: 7. Březen, 2015 Share Odesláno: 7. Březen, 2015 Je to jednoduchý ini systém, který je jednoduchý na použití a poměrně rychlý, protože data čte a zapisuje pouze jednou. Includ obsahuje následující fce: FileOpen(path[]) Otevře soubor path[] - cesta k souboru return: -1, pokud je již využíváno maximum souboru naráz, jinak vrací n číslo, se kterým se pracuje dál FileWriteString(index, key[], value[]) Zapíše textový řetězec př. Heslo=pawno.cz index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - je to jedinečný klíč, který se používá k zapisování dat např. "Heslo" value[] - hodnota klíče např. "pawno.cz" FileWriteInteger(index, key[], value) Zapíše číslo př. Penize=420 index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - je to jedinečný klíč, který se používá k zapisování dat např. "Penize" value - hodnota klíče např. 420 FileWriteFloat(index, key[], float:value) Zapíše desetinné číslo př. poziceX=420.420 index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - je to jedinečný klíč, který se používá k zapisování dat např. "poziceX" float:value - hodnota klíče např. 420.420 FileWriteBoolean(index, key[], bool:value) Zapíše logickou hodnotu, základně je to nastaveno tak, že pokud je podmínka pravdivá, tak se zapíše jako "ANO", pokud ne tak "NE" př. VIP=ANO index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - je to jedinečný klíč, který se používá k zapisování dat např. "VIP" bool:value - hodnota klíče true/false FileReadString(index, key[], val[]) Přečte textový řetězec a zapíše jej do val[] index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - klíč k hodnotě val[] - sem se hodnota daného klíče zapíše FileReadInteger(index, key[], &val) Získá hodnotu a zapíše jej do val index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - klíč k hodnotě &val - sem se hodnota daného klíče zapíše FileReadFloat(index, key[], &Float:val) Přečte desetinné číslo a zapíše jej do val index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - klíč k hodnotě &Float:val - sem se hodnota daného klíče zapíše FileReadBoolean(index, key[], &bool:value) Přečte textový řetězec a zapíše jej do val[] index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - klíč k hodnotě &bool:value - sem se hodnota daného klíče zapíše FileDelete(path[]) Smaže soubor path[] - cesta k souboru FileRemoveData(index, key[]) Smaže data pomocí klíče (smaže celý řádek) index - číslo, které dostaneme pomocí FileOpen key[] - klíč, který smaže FileClose(index) Zapíše všechny změny a uvolní paměť k dalšímu použití. index - číslo, které dostaneme pomocí FileOpen ---------------------------------------------------------------------------------------------------------------- Příklad použití: new soubor = FileOpen("ahoj.txt"); FileWriteString(soubor, "Pozdrav", "zdravim vsechny"); // zapíšeme string FileWriteInteger(soubor, "Cislo", 420); // zapíšeme číslo FileWriteFloat(soubor, "Cislo_Float", 666.6666); // zapíšeme float FileWriteBoolean(soubor, "Opily", true); // zapíšeme bool FileClose(soubor); // zapíšeme všechny data // soubor bude nyní vypadat takto /* Pozdrav=zdravim vsechny Cislo=420 Cislo_Float=666.6666 Opily=ANO */ // nyni ziskame data do promennych new pozdrav[50], cislo, Float:cislo2, bool:opily; soubor = FileOpen("ahoj.txt"); FileReadString(soubor, "Pozdrav", pozdrav); // v proměnné pozdrav nyní bude "zdravim vsechny" FileReadInteger(soubor, "Cislo", cislo); // v proměnné cislo nyní bude 420 FileReadFloat(soubor, "Cislo_Float", cislo2); // v proměnné cislo2 nyní bude 666.6666 FileReadBoolean(soubor, "Opily", opily); // proměnná opily nyní bude true // ještě zkusíme vymazat řádek FileRemoveData(soubor, "Pozdrav"); // a uložíme FileClose(soubor); // takže nyní v souboru "ahoj.txt" bude: /* Cislo=420 Cislo_Float=666.6666 Opily=ANO */ ------------------------------------------------------------------------------ Pokud soubor nemohl byt vytvoren tak se server vypne. Přidal jsem i definy nahoře v includu, je u nich popisek co dělají takže si je raději přečtěte a kdyby něco nefungovalo, tak zvyšte hodnotu nebo mi napiště. Zkoušel jsem přečíst a načíst 5000 hodnot ze souboru, vyšli mi takové hodnoty oproti dini: [21:23:13] mIni zapis: 3463ms [21:23:17] mIni cteni: 3502ms [21:25:25] dini zapisovani: 128208ms [21:26:12] dini cteni: 47059ms Kdyby někdo chtěl tak se může dát hodnoty i oproti ostatním ini systémům, y_ini je rozhodně lepší ale já než bych se prodral nekonečnými warningy a errory Odkaz na stažení: http://pawno.cz/files/file/427-mini/ Jestli ho někdo použije tak budu rád Díkec, Mort. 2 Link to comment Share on other sites More sharing options...
Om3n 78 Odesláno: 8. Březen, 2015 Share Odesláno: 8. Březen, 2015 Mohl bys to testout i oproti DOF2? Link to comment Share on other sites More sharing options...
Tanga 131 Odesláno: 8. Březen, 2015 Share Odesláno: 8. Březen, 2015 Mohol by si dať kód, ktorým si testoval tú rýchlosť zápisu a čítania? Link to comment Share on other sites More sharing options...
Mort 29 Odesláno: 8. Březen, 2015 Author Share Odesláno: 8. Březen, 2015 Mohol by si dať kód, ktorým si testoval tú rýchlosť zápisu a čítania? Testování rychlosti: new start, end, help, str[5]; fclose(fopen("test-files.ini", io_write)); start = GetTickCount(); new file = FileOpen("test-files.ini"); for(new i = 0; i < 5000; i++) { format(str, 5, "%d", i); FileWriteInteger(file, str, i); } FileClose(file); end = GetTickCount(); printf("mIni zapis: %dms", end - start); start = GetTickCount(); file = FileOpen("test-files.ini"); for(new i = 0; i < 5000; i++) { format(str, 5, "%d", i); FileReadInteger(file, str, help); } FileClose(file); end = GetTickCount(); printf("mIni cteni: %dms", end - start); fremove("test-files.ini"); fclose(fopen("test-files.ini", io_write)); start = GetTickCount(); for(new i = 0; i < 5000; i++) { format(str, 5, "%d", i); dini_IntSet("test-files.ini", str, i); } end = GetTickCount(); printf("dini zapisovani: %dms", end - start); start = GetTickCount(); for(new i = 0; i < 5000; i++) { format(str, 5, "%d", i); help = dini_Int("test-files.ini", str); } end = GetTickCount(); printf("dini cteni: %dms", end - start); Mohl bys to testout i oproti DOF2? Já jsem to taky zkoušel testovat oproti DOF2, ale nevím jestli jsem něco špatně nastavil, ale nikdy se mi do souboru nic nenapsalo. Kdyby jsi měl čas tak to můžeš prubnout. Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 8. Březen, 2015 Administrátor Share Odesláno: 8. Březen, 2015 (upraveno) Výsledky testu DOF2 podle mortova testu : [12:40:47] DOF2 zapisovani: 99ms [12:40:47] DOF2 cteni: 67ms Edited 8. Březen, 2015 by Ewwe Link to comment Share on other sites More sharing options...
VolfikCZ 33 Odesláno: 8. Březen, 2015 Share Odesláno: 8. Březen, 2015 DOF2 hodně rychlé,aspon ty čísla jsou mega rozdílné.. Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 8. Březen, 2015 Administrátor Share Odesláno: 8. Březen, 2015 (upraveno) To je způsobené tím že mini a dof přistupují k nalezení výsledku rozdílně.... mini si načte obsah souboru do bufferu a v tom pak hledá ale dof si do bufferu načte rovnou příslušný řádek... Je to hodně zjednodušené ale zhruba tak to je Navíc copak mini to ještě jde ale podívej se na zápis u dini a u DOF To je teprve rozdíl... Edited 8. Březen, 2015 by Ewwe Link to comment Share on other sites More sharing options...
Om3n 78 Odesláno: 10. Březen, 2015 Share Odesláno: 10. Březen, 2015 "gj new AT" - ohledne bbcode se tady vubec nic od forseho nezmenilo... Link to comment Share on other sites More sharing options...
Om3n 78 Odesláno: 11. Březen, 2015 Share Odesláno: 11. Březen, 2015 me se to teda taky nikdy nestalo me se to teda taky nikdy nestalo me se to teda taky nikdy nestalo me se to teda taky nikdy nestalo me se to teda taky nikdy nestalo me se to teda taky nikdy nestalo me se to teda taky nikdy nestalo. co ja vim. treba mas neco s prohlizecem. Link to comment Share on other sites More sharing options...
The hidden face 77 Odesláno: 11. Březen, 2015 Share Odesláno: 11. Březen, 2015 To asi proto, že dřív bylo "jenom Dini" a lidi si na to zvykli. Dini je i jednoduchý na práci, tak u něj spousty lidí zůstává a nechtějí se naučit nic nového... Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now