Witam.
Przeczytałem artykuł http://4programmers.net/Delphi/Artyku%C5%82y/Tablice_asocjacyjne i chciałem ściągnąć plik i zgadnijcie... To bolączka wielu portali, a nie ma nic bardziej wkurzającego jak odnośniki prowadzące do nikąd :-) Jeśli ktoś ma ten plik, prosiłbym o kontakt. Jest też starszy artykuł tego samego autora, ale blibliotaka tamta nie obsługuje tablic wielowymiarowych, na czym mi zależy. Autor nie odpowiada, jest chyba na wakacjach :-)
To jest chyba bug. wyskakuje bład 403...
Szukałem w google i archive.org... ale nic... w internecie chyba już nie znajdzesz.
Nie wiem czy to jest do tego artykułu, ale kiedyś czytałem jakiegoś arta o tablicach asocjacyjnych z 4programmers. Tylko że ja mam chyba wersje 1.1, ale łap, póki co może się przydać:
http://members.lycos.co.uk/serwerek789/AssocArray1.1.zip
P.S. Jeżeli to jest ten artykuł który ja przerabiałem to z góry ostrzegam że te tablice asocjacyjne nie do końca działają tak jak powinny (chyba że wersja 1.4 rozwiązuje ten błąd). W każdym razie mocno testowałem te tablice i oprócz wygodnego szukania za pomocą kluczy typu string nie oferowały one takiej zawrotnej prędkości. Wygenerowałem sobie w pętli 10 tyś rekordów, znalezienie rekordu po środku który miał klucz 'klucz5000' trwało kilka sekund, zupełnie jakby nic nie indexował tylko sekwencyjnie leciał po wszystkich rekordach.
Jako zamiennik od razu polecam to: http://www.torry.net/quicksearchd.php?String=hash&Title=Yes . Pierwsze z góry "Generic Associative Arrays ('Hashes')". TStringHash, TIntegerHash i TObjectHash to prawdziwa petarda. Banalnie proste zastosowanie podobne jak w tym artykule, żadnej instalacji komponentów tylko dodajesz odpowiedni unit do uses. Te tablice działają tak jak powinny, wyszukało mi rekord po kluczu szybciej zanim przycisk z myszy zwolnilem ;). Tylko że tutaj aby dodawać pointery do rekordów bedziesz musiał wykorzystać TIntegerHash i rzutować na integer. Np. przy dodawaniu: IntegerHash.Items['jakisklucz'] := Integer(WskaznikNaTwojRekord); Analogicznie przy przypisywaniu rzutowanie na Pointer();
Dibo1984 napisał(a)
Nie wiem czy to jest do tego artykułu, ale kiedyś czytałem jakiegoś arta o tablicach asocjacyjnych z 4programmers. Tylko że ja mam chyba wersje 1.1, ale łap, póki co może się przydać:
http://members.lycos.co.uk/serwerek789/AssocArray1.1.zipP.S. Jeżeli to jest ten artykuł który ja przerabiałem to z góry ostrzegam że te tablice asocjacyjne nie do końca działają tak jak powinny (chyba że wersja 1.4 rozwiązuje ten błąd). W każdym razie mocno testowałem te tablice i oprócz wygodnego szukania za pomocą kluczy typu string nie oferowały one takiej zawrotnej prędkości. Wygenerowałem sobie w pętli 10 tyś rekordów, znalezienie rekordu po środku który miał klucz 'klucz5000' trwało kilka sekund, zupełnie jakby nic nie indexował tylko sekwencyjnie leciał po wszystkich rekordach.
Jako zamiennik od razu polecam to: http://www.torry.net/quicksearchd.php?String=hash&Title=Yes . Pierwsze z góry "Generic Associative Arrays ('Hashes')". TStringHash, TIntegerHash i TObjectHash to prawdziwa petarda. Banalnie proste zastosowanie podobne jak w tym artykule, żadnej instalacji komponentów tylko dodajesz odpowiedni unit do uses. Te tablice działają tak jak powinny, wyszukało mi rekord po kluczu szybciej zanim przycisk z myszy zwolnilem ;). Tylko że tutaj aby dodawać pointery do rekordów bedziesz musiał wykorzystać TIntegerHash i rzutować na integer. Np. przy dodawaniu: IntegerHash.Items['jakisklucz'] := Integer(WskaznikNaTwojRekord); Analogicznie przy przypisywaniu rzutowanie na Pointer();
Dibo1984, AssocArray1.1.zip to starsza wersja tej biblioteki, którą posiadam i jest ona dostępna na 4programmers. Wymieniona przeze mnie w pierwszym poście obsługuje tablice wielowymiarowe, a ta nie. Nie zależy mi na prędkości działania, a na co najmniej dwóch wymiarach.
Dzięki za pomoc.
Hm? Ja pobrałem ten plik bez problemu.
http://trash.ktos.info/assoca.zip gdybyś dalej nie mógł.
Ktos napisał(a)
Hm? Ja pobrałem ten plik bez problemu.
http://trash.ktos.info/assoca.zip gdybyś dalej nie mógł.
Wiem, że działa, bo poprosiłem Admina o interwencję i naprawił link :-) Nie dziękujta! ;D