ďťż

Ładny brzuch

a wiec dzialanie skryptu szybko wam opisze:

skrypt pracuje na dwoch plikach ini [tmem]

tmem dlatego bo pliki sa duze 5 i 7 mb.

pierwszt plik wyglada tak :

[item 7] name=1000 Gold! description=Sell this item and u become 1000gold! class=12 buyprice=10000000 sellprice=10000000 model=11766 classes=07FF races=0FF [item 18] name=Spirit Of The Wind class=0 reqlevel=10 quality=1 buyprice=140 sellprice=35 bonding=1 classes=07FFF model=15748 level=20 races=01FF stackable=5 material=3 spell=16618 0 -1 0 4 120000 [item 19] name=Agamaggan's Agility class=0 reqlevel=10 quality=1 buyprice=140 sellprice=35 bonding=1 classes=07FFF model=15748 level=20 races=01FF stackable=5 material=3 spell=17013 0 -1 0 4 120000 ...

drugi

[loottemplate 3] loot=12998 29 loot=2059 29 loot=12994 29 loot=12996 29 loot=13016 29 loot=890 29 loot=2194 29 loot=12999 29 loot=13012 29 loot=1121 29 loot=2011 29 loot=2236 29 loot=2256 29 loot=3021 29 loot=12990 29 loot=12988 29 loot=2098 29 loot=2800 29 loot=2911 29 loot=12985 29 loot=12989 29 loot=12997 29 loot=13010 29 loot=885 33 loot=1206 31 loot=3740 31 loot=15223 31 loot=15224 31 loot=4708 31 loot=6587 31 loot=4709 31 loot=15269 31 loot=3066 31 loot=6568 31 loot=9794 31 loot=9814 31 loot=3057 31 loot=4706 31 loot=6584 31 loot=9805 31 loot=15230 31 loot=9815 31 loot=15259 31 loot=1210 31 loot=3202 31 loot=9813 31 loot=9792 31 loot=9810 31 loot=3039 31 loot=9801 31 loot=15241 31 loot=3058 31 loot=8186 31 loot=9793 31 loot=4632 0.023 loot=9811 31 loot=9818 31 loot=4998 31 loot=1705 31 loot=4713 31 loot=790 31 loot=6578 31 loot=9806 31 loot=15912 31 loot=6394 31 loot=6567 31 loot=6571 31 loot=6604 31 loot=8183 31 loot=3198 31 loot=11994 31 loot=3045 31 loot=3067 31 loot=9782 31 loot=3647 31 loot=3656 31 loot=6383 31 loot=9795 31 loot=15212 0.012 loot=15249 31 loot=3047 31 loot=3056 31 loot=4715 31 loot=6381 31 loot=6580 31 loot=6593 31 loot=9802 31 loot=5972 31 loot=6586 31 loot=6594 31 loot=9799 31 loot=11039 31 loot=14175 31 loot=3048 31 loot=4661 31 loot=6572 31 loot=12007 31 loot=6375 31 loot=6382 31 loot=6577 31 loot=9803 31 loot=11967 31 loot=12054 31 loot=14172 31 loot=15927 31 loot=2072 31 loot=2882 31 loot=3049 31 loot=3065 31 loot=4292 31 loot=4705 31 loot=4707 31 loot=6569 31 loot=6600 31 loot=6602 31 loot=9796 31 loot=9809 31 loot=10316 31 loot=11982 31 loot=2819 31 loot=4036 31 loot=4294 31 loot=6573 31 loot=6591 31 loot=6595 31 loot=7558 31 loot=9808 31 loot=9817 31 loot=11983 31 loot=2601 31 loot=2883 31 loot=3055 31 loot=3212 31 loot=3608 31 loot=4049 31 loot=4348 31 loot=5543 31 loot=5578 31 loot=6344 31 loot=6390 31 loot=6596 31 loot=9804 31 loot=9816 31 loot=11968 31 loot=3069 31 loot=4350 31 loot=5001 31 loot=6597 31 loot=6608 31 loot=9797 31 loot=9807 31 loot=11038 31 loot=3201 31 loot=3206 31 loot=3864 31 loot=4296 31 loot=4345 31 loot=4347 31 loot=4349 31 loot=4714 31 loot=6391 31 loot=6598 31 loot=9800 31 loot=10424 31 loot=11995 31 loot=2881 31 loot=3612 31 loot=4346 31 loot=4409 31 loot=4410 31 loot=4412 31 loot=4711 31 loot=6347 31 loot=6393 31 loot=6454 31 loot=6601 31 loot=6605 31 loot=6612 31 loot=6613 31 loot=6614 31 loot=6716 31 loot=7091 31 loot=7363 31 loot=7364 31 loot=11081 31 loot=12008 31 loot=2592 23.5008 loot=1129 100.0 loot=6530 13.2622 loot=884 100.0 loot=2589 4.7389 loot=4606 4.5276 loot=4306 4.5145 loot=1205 2.2222 loot=929 1.3038 loot=3385 0.6448 loot=2794 100.0 loot=954 0.2529 loot=3012 0.2299 loot=1712 0.1609 loot=1478 0.1522 loot=6566 0.0307 loot=6579 0.023 loot=2772 0.0219 loot=5576 0.0164 loot=804 0.0153 loot=5575 0.0153 loot=857 0.0142 loot=6588 0.0088 loot=2838 0.0077 loot=5504 0.0044 loot=3369 0.0033 loot=2770 0.0022 loot=2835 0.0022 loot=3394 0.0022 loot=2453 0.0011 loot=3393 0.0011 loot=887 9.5337 loot=5529 9.3388 loot=2765 0.2485 loot=1821 0.2463 loot=1818 0.2397 loot=1824 0.2343 loot=1819 0.2321 loot=2783 0.2222 loot=1820 0.2102 loot=1822 0.2091 loot=1823 0.2091 loot=1778 0.162 loot=1776 0.1598 loot=1775 0.1576 loot=1774 0.1511 loot=1797 0.1478 loot=1800 0.1478 loot=2782 0.1478 loot=3378 0.1478 loot=1777 0.1467 loot=1795 0.1445 loot=1802 0.1445 loot=1798 0.139 loot=2219 0.1379 loot=1799 0.1368 loot=1801 0.1336 loot=2220 0.1325 loot=1772 0.1292 loot=3379 0.1204 loot=1796 0.1128 loot=1749 0.1106 loot=1747 0.1095 loot=1750 0.1084 loot=1752 0.1084 loot=1748 0.1007 loot=1751 0.0996 loot=1753 0.092 loot=1746 0.0854 [loottemplate 6] loot=4536 13.121 loot=159 6.6533 loot=5572 0.1058 loot=805 0.1051 loot=5571 0.1006 loot=4496 0.0887 loot=828 0.0864 loot=2835 0.0112 loot=2770 0.0045 loot=755 29.9996 loot=1377 1.5566 loot=1380 1.5335 loot=1376 1.4761 loot=1378 1.4754 loot=1374 1.4515 loot=3365 1.4359 loot=3363 1.4225 loot=1364 1.3614 loot=1366 1.3487 loot=1368 1.3196 loot=1372 1.2846 loot=1367 1.2772 loot=1369 1.2764 loot=2211 1.2675 loot=1370 1.2526 loot=2210 1.2444 loot=2652 1.1378 loot=2651 1.1065 loot=2653 1.0909 loot=2650 1.026 loot=2654 1.0238 loot=2649 1.0193 loot=2656 0.9806 ....

skrypt dziala tak:

for i:=0 to liczba -1 do begin      progresik.StepIt;      appini.ReadSection(sekcje[i],klucze);           for y:=0 to klucze.count -1 do begin                  iditemu:=appini.ReadString(sekcje[i],klucze[y],'nie maa');                  pozycja:=pos(' ',iditemu);                  iditemu:= copy(iditemu,1,pozycja-1);                  quality:=itemy.ReadString('item '+iditemu,'quality','nie ma');                    if quality='0' then begin                             if greymax.Text <> '' then begin                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+greymin.Text+' '+greymax.Text);                             end;                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+greymin.Text);                             end;                    if quality='1' then begin                             if whitemax.Text <> '' then begin                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+whitemin.Text+' '+whitemax.Text);                             end;                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+whitemin.Text);                             end;                     if quality='2' then begin                             if greenmax.Text <> '' then begin                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+greenmin.Text+' '+greenmax.Text);                             end;                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+greenmin.Text);                             end;                    if quality='3' then begin                             if bluemax.Text <> '' then begin                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+bluemin.Text+' '+bluemax.Text);                             end;                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+bluemin.Text);                             end;                    if quality='4' then begin                             if fioletmax.Text <> '' then begin                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+purplemin.Text+' '+fioletmax.Text);                             end;                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+purplemin.Text);                             end;                     if quality='5' then begin                             if orangemax.Text <> '' then begin                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+orangemin.Text+' '+orangemax.Text);                             end;                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+orangemin.Text);                             end;                    if quality='6' then begin                             if goldmax.Text <> '' then begin                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+goldmin.Text+' '+goldmax.Text);                             end;                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+goldmin.Text);                             end;                    if quality = 'nie ma' then begin                             appini.WriteString(sekcje[i],klucze[y],iditemu+' '+whitemin.Text);                             end;                                                       end;                               end;                                 progresik.Position:=0;                                 appini.UpdateFile;

po krotce :
dla kazdej sekcji drugiego pliku wczytuje jego klucze do petli drugiej i dla kazdego klucza robi tak:
wycina pierwsza wartosc klucza ktora jest liczba ... a ta liczba jest czescia nazwy sekcji pierwszego pliku w ktorym to skrypt szuka wartosci quality i znajdujac ja zapisuje odpowiednia wartosc w pliku drugim jesli ine znajduje zapisuje co innego ... poniewaz wartosc ta nie zawsze wystepuje ... nie wiem czy nie zrobilem jakiegos bledu w ocinaniu stringa ale chyba nie ... albo w przypisywaniu wartosci do dzialan. Skrypt dziala cholernie wolno ... tak jakby cos bylo nie tak jednak. Jakies pomysly ? Pozdrawiam



Co to znaczy "plik tmem"? I co to są za pliki? Twój własny format? Format jakiegoś innego programu? Bo jeśli Twój własny, to mógłbyś spróbować podziałać na rekordach i plikach typowanych.
Po drugie, na Twoim miejscu np. quality odczytywałbym jako ReadInteger() z domyślną wartością -1 zamiast Stringa. To by Ci umożliwiło stosowanie konstrukcji case...of, zamiast wielu if...then.
Poza tym nie widzę tu operacji na dwóch plikach, tylko na jednym, jednocześnie odczytywanym i zapisywanym...

TMemIniFile; oczywiscie tylko napisalem w skrocie - sorry

Po drugie, na Twoim miejscu np. quality odczytywałbym jako ReadInteger() z domyślną wartością -1 zamiast Stringa. To by Ci umożliwiło stosowanie konstrukcji case...of, zamiast wielu if...then. dobry pomysl zaraz to zalacze :)

Poza tym nie widzę tu operacji na dwóch plikach, tylko na jednym, jednocześnie odczytywanym i zapisywanym...

sa dwa pliki jednak nie napisalem gdzie sa skonfigurowane bo sa skonfigurowane globalnie - inne czesci programu czyszcza je sobie i tez ich uzywaja. Zjednego pliczku tylko odczytuje tego stringa quality na drugim pliku odczytuje ID itemu ktory jest w nazwie sekcji pliku z quality ... i na nim zapisuje tez values do kluczy ktore sa takie same zawsze dla kazdej sekcji
Użytkownik lamusek edytował ten post 30 styczeń 2006, 08:14
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •