![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Out of memory
pirate © (2006-05-06 16:36:00)Здраствуйте, уважаемые!
Суть проблемы такова:
есть типы:
type TWord=record
wrd:shortString;
descr:AnsiString
end;
type TDict=record
count:longint;
words:array of TWord;
end;
var Dahl:TDict;
.......
в цикле происходит следующее:
Dahl.count:=Dahl.count+1;
SetLength(Dahl.words,Dahl.count);
Dahl.words[Dahl.count-1].wrd:=s2;
Dahl.words[Dahl.count-1].descr:=s3;
.......
Что я хотел сделать:
Я хотел загрузить толковый словарь Даля в переменную Dahl из файла, представляющую собой динамический массив.
.wrd- это само слово
.descr- это его смысловое значение (следует отметить, весьма объемное, иногда достигает ~500 байт)
По обработке ~8400 слов выдается "Access denied...***###$%...Out of memory...&%**&(("
Вот так вот.
TUser (2006-05-08 12:15:00) [1]Все равно в памяти это хранить не нужно.
pirate (2006-05-06 17:09:00) [2]
> вряд ли оно уместится
16.5 MB в текстовом файле.. Вот оно как.
> заполнить массив "Слов" и смещений соответствующей "Статьи"
> в файле, и подчитывать статью динамически
- а это ты тему подсказал! Решение достойное профессионала!
Спасибо!
han_malign (2006-05-06 17:09:00) [3]
> Далев "словобукварь" - серьезное и весьма информационноемкое творение.
http://lib.km.ru/?id=2871
~18Мб
- не вопрос
han_malign (2006-05-06 16:58:00) [4]убери shortString - поднимешь количество раза в 2/3, за счет уменьшения фрагментации...
Но, самое простое, с минимальной фрагментацией - загрузить файл целиком в память(если влезет), проставить #0 в конце "Статей", и заполнить массив PChar-ов (размер которого узнали на этапе проставления нулей)(если хватило места под него) указателями на начало "Слов"... Слова от Статей отделять динамически(для уменьшения использования памяти)...
А лучше, все таки, заполнить массив "Слов" и смещений соответствующей "Статьи" в файле, и подчитывать статью динамически(500 мс максимум - если винчестер подыхает)...
Сергей М. (2006-05-06 16:40:00) [5]
> хотел загрузить толковый словарь Даля
Серьезная заява)
А нафига ?
Можно поинтересоваться ?
Далев "словобукварь" - серьезное и весьма информационноемкое творение. вряд ли оно уместится в два далеко не полных Гб, отведенных для твоего программного творчества под Win32 ..