Mam pytanko zrobiłem w stringgrid bazę i ma ona 1048560 wierszy i 33 kolumny kiedy ładuje całą bazę wyskakuje mi błąd pamięci toutofmemory. Mam pytanko czy pamięć do stringgrida jest gdzieś ustawiana jaką ma przydzielić na dane?
wierszekolumnyrozmiar pola w bajtach/1024/1024/1024
Przyjmując, że średnio rozmiar pola to około 50 bajtów, otrzymujemy:
10485603350/1024/1024/1024 ~ 1.6 GB danych.
To o wiele za dużo.
piter2004 napisał(a)
zrobiłem w stringgrid bazę i ma ona 1048560 wierszy i 33 kolumny
A tyle się mówi, że kontrokli nie służą do gromadzenia danych, a do ich wyświetlania;
Jeśli nie musisz to nie ładuj wszystkich od razu do kontrolki, tylko podziel sobie na małe party (np. po 100
czy 200
wpisów/wierszy), które można pokazać w kontrolce; Do tego dorób przyciski do przewijania stron i wszystko będzie działać o wiele szybciej, a przy okazji kontrolka będzie zużywać małą ilość pamięci;
Tak przy okazji - gdybym był użytkownikiem tej aplikacji, to nie wyobrażam sobie komfortu przewijania tak długiej listy (ScroolBar byłby bardzo mały, za to skok bardzo duży); Według mnie nie ma w ogóle sensu ładować całej listy - lepiej dać możliwość przeglądania małych porcji;
Patryk27 napisał(a)
10485603350/1024/1024/1024 ~ 1.6 GB danych.
@piter2004 - ile trwa (w minutach) załadowanie całej bazy do pamięci? Tak z ciekawości pytam.
kto normalny ogarnie ponad MILION wierszy??? Przecież to jest fizycznie niemożliwe, żeby je przejrzeć. A i szukanie czegoś w takiej ilości danych to koszmar. Najpierw należy jak najbardziej zawęzić ilość danych do pokazania (np. czasowo) a dopiero potem pokazać userowi dane. Jak będzie chciał inne to sobie wczyta inne
Reasumując. Czy da się ustawić żeby jedna komórka miała 1 bajt?
bo takie dane tam przechowuje
A ile trwa załadowanie bazy trochę koło minuty lub 2
piter2004 napisał(a)
Czy da się ustawić żeby jedna komórka miała 1 bajt?
Tak, musiałbyś mieć w każdej komórce dokładnie jeden znak;
Czy da się ustawić żeby jedna komórka miała 1 bajt?
Napisz własny komponent.
VirtualTreeView - opis tego komponentu jest na 4p radzi sobie z dużą ilością rekordów bo działa nieco inaczej niż stringgrid
@szopenfx - wszystko fajnie, ale to nie zmienia faktu, że program nadal będzie pożerał mnóstwo pamięci, oraz żaden normalny człowiek nie ogarnie listy z ponad milionem wierszy;
Rozwiązaniem jest podział listy na małe porcje i ich przedstawianie na krótkiej liście + możliwość przewijania stron;
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.