Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rekomendowane odpowiedzi

Opublikowano

No więc, mam sobie duuuużą tablicę. Jakieś osiem milionów elementów w trzech wymiarach.

 

Gdyby cała była w pamięci komputera - samo zadeklarowanie zajmowałoby ponad 200MB :|

 

Jednak nie ma żadnej potrzeby, aby była cała - w jednej chwili program będzie korzystał tylko z małego jej fragmentu (jakieś tysiąc elementów, czyli mniej niż promil, czyli mniej niż megabajt, czyli w porządku).

 

I tu pojawia się pytanie:

 

W jaki sposób zapisywać tablicę partiami do pliku, a później partiami wczytywać ją z pliku do tymczasowej zadeklarowanej w pamięci?

 

Co do zapisywania partiami:

W czasie użytkowania programu odpowiednie, kilkukilobajtowe części będą pobierały się z internetu - to jestem w stanie zrobić bez problemu.

 

Ale w jaki sposób wczytać fragment pliku NIE wczytując go całego?

 

Wszystkie funkcje z grupy File najpierw otwierają CAŁY plik i przenoszą go do pamięci.

Nie mogę sobie na to pozwolić :|

 

Serdecznie proszę o pomoc, fura plusów dla każdego mądrego! :]

Ta sygnatura jest pusta.

Opublikowano

FileReadLine ( "filehandle/filename" [, line] ) może po kolei , po lini wczytywać i vice versa FileWriteLine , ale to otwieranie jak piiszesz dobija bo całe wczytuje :/

 

a _FileReadToArray ?

 

co do reszty , znaczy sie tablicy giganta to chyba po XXX elementów pobierać , zanalizować, własciwe zapisać i następne pobrać w kolejności XXX itd... tylko znowu to otwieranie całości dobije...

 

właśnie znalazłem temat może coś pomoże z dużym plikiem , wybiera z pliku określone dane i zapisuje w drugim mniejszym : http://www.autoitscript.com/forum/index.php?showtopic=114058&st=0&p=797723&hl=big%20file%20read&fromsearch=1entry797723

i jeszcze jeden też ciekawy do przeczytania http://www.autoitscript.com/forum/index.php?showtopic=112584&st=0&p=788680&hl=big%20file%20read&fromsearch=1entry788680

 

i na koniec wieczorka pomysł poddany przez znajomego przy piwku jak przeczytał o problemie, najlepiej wszystkie dane przenieść albo wczesniej pobierać i od razu zapisywać do bazy danych , SQL autoit obsługuje i raczej spełnia warunki problemu, do tego łatwa edycja danych, nie mówiąc już o dostępie bez potrzeby co chwilowego odczytywania danych w całości ( FileOpen , wrrr... )

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

może jako text (?) ale tą metodą zarżniesz kompa w 10 minut

To jest ukryta treść, proszę

 

przy 4.8 tys elentów jeszcze jakoś sie trzyma.

elementy tablicy rozdzielać jakimiś znakami, w tym przypadku to przecinek, kreska i dwukropek.

i zrobić jakąś prostą funkcje do wyszukiwania

 

To jest ukryta treść, proszę

 

no ale już przy ośmiu milionach to pobór mocy rośnie do 100mb ^_^

 

To jest ukryta treść, proszę

 

 

w "stringach" są funkcje do skracania textu wiec w desperacji można posłużyć się tym i ciąć elementy od przecinka, kreski czy dajmy na to pięćdziesiątego w kolejności dwukropka.

choć jest to prowizorka na maxa

Opublikowano (edytowane)

kolega który pisał o SQL ma racje, z jednym wyjątkiem - można mySQL jeśli baza programu ma być aktualizowana przez Ciebie, ale to wymaga posiadania takowej bazy na serwerze (te darmowe nie są warte zachodu - tak mulą że nie da rady ich używać), chyba że wolisz plik, to wtedy możesz użyć SQLite, ono zapisuje bazę w pliku, a działa ona jak każda inna baza SQL, tylko nie jestem pewien czy to też nie będzie otwierać całego pliku, chociaż baza SQLite na moim starym OTS'ie mająca koło 30 tabel, w dwóch z nich było po ~4000 wpisów do tego część była stale aktualizowana przez graczy zajmowała niecałe 10mb - to już aż tak bardzo nie zamuli kompa.

 

Tylko nie wiem czy Au3 obsługuje SQLite - poszukam i edytuję posta.

 

Pozdrawiam

 

EDIT:

chwila w helpie i mam odpowiedź - Au3 obsługuje SQLite więc nie ma problemu, jak chcesz to na PW ci mogę wyjaśnić używanie baz SQLite.

 

EDIT2:

przeczytałem jeszcze raz pierwszy post i myślę że najlepiej będzie zrobić hybrydę mySQL'a i SQLite - niech program zapisuje części bazy mySQL do swojej lokalnej SQLite. Jakbyś nie wiedziała jak to zrobić to służę pomocą, tutaj lub na PW.

Edytowane przez Maciek134

[TUT] Full Autoit V3 Tutorial

yo po 1 nie kayloger tylko bot który zapamiętuje hasła -_-

stop1.png

Opublikowano

Autoit, tak jak pisze, ma domyślnie wbudowanego udf'a z obsługą SQLite.

 

Co do tego, jak się go używa - przez dwa dni gryzłam klawiaturę, ale teraz już jest dobrze, za pomocą tego stworzyłam, co chciałam. Także za pomoc dziękuje, ale metodą prób i błędów już doszłam do ładu o co chodzi :]

 

Jakby ktoś chciał, to tutaj jest całkiem dobry poradnik, który mi bardzo pomógł:

 

http://macportal.ovh.org/kursmysql/

 

Co prawda jest o MySQL, a nie SQLite, ale ta najbardziej tajemnicza część na początku to zapytania kwerendy, a one są takie same w obu bibliotekach, więc nauczyć się z tego można.

 

A co do hybrydy MySQL i SQLite - pewnie to dużo zachodu, zwłaszcza, że nie ma domyśłnego udf'a z MySql, a że już działa tak jak jest (baza danych na dysku zajmuje około 50MB, ale do pamięci są wczytywne pojedyncze rekordy, więc około 2-3 MB, czyli idealnie tak jak chciałam) więcej nie ma co się z tym cacać :]

Ta sygnatura jest pusta.

Opublikowano

Eeee, no fakt nie ma domyślnego, ale na forum autoit jest udf mySQL - pierwsza pozycja z google. No i może będzie ciut więcej roboty, ale zobacz że wtedy łatwiej ci chociażby zrobić update tej bazy - zmieniasz na serwerze a program sam zmienia to lokalnie. No ale nie będę cie namawiał, jak chcesz w końcu to Twój program ;p

[TUT] Full Autoit V3 Tutorial

yo po 1 nie kayloger tylko bot który zapamiętuje hasła -_-

stop1.png

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • Dodaj nową pozycję...