powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ошибка Out of memory при загрузке файла в TStringList
21 сообщений из 21, страница 1 из 1
Ошибка Out of memory при загрузке файла в TStringList
    #39569295
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Есть следующая ситуация
РС(i7 8Gb Win7 x64 + RAD XE3), приложения можно компилировать только в 32 разр. режиме
- список грузит файл с диска

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Procedure RestorData;
begin
  try
    CS.Enter;
    try
      gStore.LoadFromFile(ExtractFilePath(Application.ExeName)+'Store.txt');
    finally
      CS.Leave;
    end;
  except
    on E:Exception do
    begin
      ShowMessage('RestorDataParams = '+'('+E.Message+')');
    end;
  end;
end;



- при определенных условиях(не всегда) выскакивает ошибка:
First chance exception at $7561C54F. Exception class EOutOfMemory with message 'Out of memory'. Process loader.exe (3736)
в основном ошибка выскакивает при попытке загрузить в список файл размером в 300 мб с числом строк около 3 млн. при запуске программы,
или выгрузить список обратно при выходе из программы.
- список со строками совершенно необходим(стек со списком УРЛ для загрузки), хотя...

Вопросы :
1. вообще эта проблема решаема для TStringList
2. если список не тянет, что еще можно использовать для загрузки-выгрузки милионов строк(до 500 символов в строке) из какого либо хранилища на ЖД
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569296
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

используй СУБД, хотя бы самую простую. Не придется все сразу в память заливать.
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569299
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SG требует память X2, т.е. 600 мб двумя НЕПРЕРЫВНЫМИ кусками. Ессно не всегда они есть..
я не верю, что прямо все эти строки одномоментно нужны
либо воспользуйтесь выгрузкой в самую простую БД
либо сами реализовывайте этот функционал с буфером
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569306
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krapotkin,

SG несовсем понятно что это.
строки нужны все. там идет выборка URL по случайному номеру строки, хотя можно ограничится числом тысяч в сто
типа грузить в список не все три миллиона строк а первые сто тысяч и удалять их из файла

а может использовать паскалевский метод чтения записи в файл, или в глубине списка оно и так используется?

а какая СУБД самая простая, при этом чтоб работала без отказно. СУБД пока вообще никак не использовал
ОРАКЛ не предлагать.
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569311
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair...
строки нужны все. там идет выборка URL по случайному номеру строки, хотя можно ограничится числом тысяч в сто
типа грузить в список не все три миллиона строк а первые сто тысяч и удалять их из файла

а может использовать паскалевский метод чтения записи в файл, или в глубине списка оно и так используется?...
Пьяный, что ли. Поток бреда.

Pcrepair...
а какая СУБД самая простая, при этом чтоб работала без отказно. СУБД пока вообще никак не использовал
ОРАКЛ не предлагать.

Значит, никакая.
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569328
Freedoom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PcrepairВопросы :
1. вообще эта проблема решаема для TStringList
2. если список не тянет, что еще можно использовать для загрузки-выгрузки милионов строк(до 500 символов в строке) из какого либо хранилища на ЖД
.. строки нужны все. там идет выборка URL по случайному номеру строки...

1. Если набор строк постоянный, то преобразовать строки в array[0.500] of char, сделать типированный файл и читать данные непосредственно из файла (seek, read, blockread)
2. C использованием обображение файла в память (filemapping) или другого метода буферизации обработать файл и построить вспомогательный массив со смещением и длиной, а чтение данных осуществлять с использованием этого массива.
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569331
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairстроки нужны все. там идет выборка URL по случайному номеру строки

Для этой задачи все строки не нужны. Одной вполне достаточно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569334
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А помимо всего прочего, XE3 - самая глючная в плане 'Out of memory'.
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569399
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SG имелось в виду StringGrid
а из смысла задачи вам нужно прочитать из файла N-ю строку
а вовсе не все строки
поэтому пользуйтесь TStreamReader. Он умеет читать построчно
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569487
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вообще там несколько списков точнее 5
до 300 мб все списки грузятся в ОЗУ (300+2+8+1)мб
объем памяти растет до 1600 мб, после загрузки падает до 770 мб
но на последнем списке(300 мб) начинается загрузка и тут сбой
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569496
Фотография kloun02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
  sl:=TStringList.Create;
  try
    sl.Capacity:=100500;
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569741
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не, вот так лутше

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
  AssignFile(FileStr,(ExtractFilePath(Application.ExeName)+'StoreOutData.txt'));
  Reset(FileStr);
  while not Eof(FileStr) do
  begin
    ReadLn(FileStr,TextStr);
    gStoreOutData.Add(TextStr);
  end;
  CloseFile(FileStr);



влезло все три млн. строк, а потом еще раз столько же
странно что никто из корефиев об этом даже не вспомнил
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569749
чччДх
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pcrepairне, вот так лутше

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
  AssignFile(FileStr,(ExtractFilePath(Application.ExeName)+'StoreOutData.txt'));
  Reset(FileStr);
  while not Eof(FileStr) do
  begin
    ReadLn(FileStr,TextStr);
    gStoreOutData.Add(TextStr);
  end;
  CloseFile(FileStr);



влезло все три млн. строк, а потом еще раз столько же
странно что никто из корефиев об этом даже не вспомнил
Завтра у тебя будет не три, а десять миллионов. Все равно будешь все заливать в память?
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569755
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
буду, хоть сто мульенов, память моя что хочю то и заливаю, но странно что ты об этом способе ничего не знаешь
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569759
Фотография kloun02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

gStoreOutData - ?
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569761
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да да это тот самый список тстренджлист, который хранит в себе все текстовые строки необходимые для работы
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569762
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairбуду, хоть сто мульенов, память моя что хочю то и заливаю, но странно что ты об этом способе ничего не знаешь
Глупыш, память - не твоя, память - приложения, и она не резиновая.
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569781
Freedoom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pcrepair... странно что никто из корефиев об этом даже не вспомнил
Какой вопрос:
Pcrepair... приложения можно компилировать только в 32 разр. режиме ... Exception class EOutOfMemory with message 'Out of memory' ... строк около 3 млн.
Такие и ответы:
решение пробемы нехватки памяти для 32-х разрядного приложения
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569811
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
14.12.2017 16:23, Pcrepair пишет:

> странно что никто из корефиев об этом даже не вспомнил

Нормальный человек не будет затаскивать в память файл размером в сотни
мегов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569816
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

котофеев.
...
Рейтинг: 0 / 0
Ошибка Out of memory при загрузке файла в TStringList
    #39569840
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim200014.12.2017 16:23, Pcrepair пишет:

> странно что никто из корефиев об этом даже не вспомнил

Нормальный человек не будет затаскивать в память файл размером в сотни
мегов.


да пусть тащит если хочет
меньше конкурентов :)
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ошибка Out of memory при загрузке файла в TStringList
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]