Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ошибка Out of memory при загрузке файла в TStringList / 21 сообщений из 21, страница 1 из 1
13.12.2017, 23:10
    #39569295
Pcrepair
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Out of memory при загрузке файла в TStringList
Добрый день. Есть следующая ситуация
РС(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
13.12.2017, 23:17
    #39569296
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Out of memory при загрузке файла в TStringList
Pcrepair,

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

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

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

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

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

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

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

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

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

Код: 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
14.12.2017, 16:29
    #39569749
чччДх
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Out of memory при загрузке файла в TStringList
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
14.12.2017, 16:34
    #39569755
Pcrepair
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Out of memory при загрузке файла в TStringList
буду, хоть сто мульенов, память моя что хочю то и заливаю, но странно что ты об этом способе ничего не знаешь
...
Рейтинг: 0 / 0
14.12.2017, 16:37
    #39569759
kloun02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Out of memory при загрузке файла в TStringList
Pcrepair,

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

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

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

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

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

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


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


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