Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2015, 16:46   #1
Sallivan_Bidl
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 16
По умолчанию Объем оперативной памяти для выполнения exe файла

Я не профессиональный программист, просто пытаюсь облегчить себе жизнь на работе, когда занимаюсь различной обработкой (в основном статистической) численной информации. Написал программу, которая из текстового файла, содержащего численную информацию, формирует результат расчета и переводит его в Excel: сортирует, строит гистограммы и проч. Возникла проблема: загрузка (методом копирования) текстового файла осуществляется в Memo, средний размер одного такого файла составляет около 30Мб, при загрузке в Memo информации где-то на 500 мБ дальше копировать в Memo (в exe файл программы) уже не получается. Можно ли это ограничение как-то обойти. Пользуюсь Builder 6 (2002г), на компе установлено 2Гб оперативной памяти.
Sallivan_Bidl вне форума Ответить с цитированием
Старый 09.08.2015, 17:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Можно.
1) Забыть о билдере и написать на VBA Экзела макрос для считки текстовика
2) Выкинуть мемо в пользу TStringList.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2015, 17:34   #3
Sallivan_Bidl
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Можно.
1) Забыть о билдере и написать на VBA Экзела макрос для считки текстовика
Это мне не поможет, т.к.
1) у меня нет особого опыта работы с макросами,
2) Excel имеет ограничение на кол-во строк и столбцов, а мои несколько скопированных файлов превысят эти ограничения. Их не превышает обработанный результат расчета.
3) Программа в билдере производит много расчетов с которыми возится в Excel как-то не хочется.

А по поводу "Выкинуть мемо в пользу TStringList." Поясните пожалуйста. Моя проблема в Memo? Она имеет какое-то ограничение на кол-во строк? На данный момент в Memo у меня влазит больше 1 млн строк, но мне иногда бывает нужно еще больше. Мне почему то кажется что дело тут в памяти. Больше чем примерно 500 (может 512 мБ) не лезет.

Последний раз редактировалось Sallivan_Bidl; 09.08.2015 в 17:48.
Sallivan_Bidl вне форума Ответить с цитированием
Старый 09.08.2015, 17:59   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я только высказал догадку. Я не видел твоего проекта, я не особо понимаю что значит
Цитата:
где-то на 500 мБ дальше копировать в Memo (в exe файл программы) уже не получается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2015, 18:46   #5
Sallivan_Bidl
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 16
По умолчанию

Не получается скопировать в Memo больше чем примерно 6.500.000 строк (уточнил этот момент). В диспетчере задач память Project1 при этом где-то 500 мБ. Может дело и не в оперативной памяти т.к. в другое окошко Memo2 можно продолжать копировать файлы. Но это так, оно у меня не для этого предназначено, а для вывода сообщений о результатах промежуточной обработки.
StringList может я и попробую. Просто это ведь не окно редактирования текста, а абстрактный список строк. Даже если он и потянет больше строк чем Memo мне придется много менять в программе. Т.к. у меня Memo и в функциях фигурирует (указатель на объект TMemo в функциях). И потом в Memo я могу ctrl-c - ctrl-v много файлов, а как скопировать сразу несколько файлов в StringList я пока не знаю. Но спасибо за совет.

Последний раз редактировалось Sallivan_Bidl; 09.08.2015 в 18:55.
Sallivan_Bidl вне форума Ответить с цитированием
Старый 10.08.2015, 04:35   #6
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
По умолчанию

https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx

Зачем столько много текста в окно ввода? Разве его весь разом надо отображать?
В Memo только новые данные и конкатенировать во внутреннюю строку или лист? Частично свопить порции на диск?
Не хотите WM_DROPFILES на окно и просто перетаскивать файлы на окно без копирования? Или просто напрямую читать эти ваши текстовые файлы по очереди с диска?
ResourceSpace вне форума Ответить с цитированием
Старый 10.08.2015, 20:30   #7
Sallivan_Bidl
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 16
По умолчанию

Наверно последний вариант самый лучший, но у меня не хватает пока знаний как это можно сделать. Моя задача такова: загрузить поочередно так сказать с накоплением информации такое кол-во файлов, которое мне нужно, а затем их обработать. Каждый текстовый файл имеет упрощенно такой вид (точнее этот вид он приобретает после предварительной обработки в программе, до предварительной обработки в нем содержится много лишней не нужной мне инфы):
Параметр: параметр 1 ! параметр 2! ...параметр n !
Измерение 1: значение 1 ! значение 2 !...значение n !
Измерение 2: значение 1 ! значение 2 !...значение n !
...
Измерение m: значение 1 ! значение 2 !...значение n !
Проблема в том, что кол-во параметров может быть несколько сотен, а кол-во замеров несколько сотен тысяч (для суммы файлов) ну и размер такой "сборки" достаточно велик. Я обрабатываю этот массив в Builder - заношу в Memo, обрабатываю с использованием функций работы со строковыми данными - выколупливаю так сказать отдельные ячейки-числа и заношу их в массив, ну а дальше произвожу расчет средних значений по параметрам, ско - короче пром. статистика, расчет данных для гистограмм, информация по кол-ву брака по параметрам.
Все работает, только в Memo не удается скопировать больше примерно 6,5 млн строк. Разом отображать его не обязательно, просто он должен быть весь переведен в массив чисел с которым производятся расчеты. Как все это сделать по другому я не знаю.

Последний раз редактировалось Sallivan_Bidl; 10.08.2015 в 20:40.
Sallivan_Bidl вне форума Ответить с цитированием
Старый 10.08.2015, 21:42   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Возможно стоит подумать о записывании данных в настоящую базу данных.
waleri вне форума Ответить с цитированием
Старый 10.08.2015, 22:07   #9
Sallivan_Bidl
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 16
По умолчанию

Я инженер-технолог. Мне даже сложно понять какую лит-ру тут нужно копать. Пока мне хватило 2 курсов универа по основам алгоритмизации и программирования на c++ и инфы из интернета по работе с Ole сервером Excel.
Sallivan_Bidl вне форума Ответить с цитированием
Старый 14.08.2015, 00:48   #10
Avazart
Форумчанин
 
Аватар для Avazart
 
Регистрация: 13.08.2011
Сообщений: 184
По умолчанию

Ну просто не выводить в мемо, и вообще не использовать его для хранения данных.

Я бы сразу открывать файл к примеру fstream читал построчно getline() и тут же бы парсил и переводит набор из своей структуры данных.
Avazart вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача-найти объем оперативной памяти по шестнадцатеричному адресу последнего байта оперативной памяти Ksana Alex Помощь студентам 4 14.11.2013 15:51
Создание файла в оперативной памяти AndreyK C++ Builder 9 18.04.2012 16:15
Объем оперативной памяти Alexandr555 Win Api 9 07.10.2011 20:09
4 Гб оперативной памяти для vista oridoroga Помощь студентам 0 12.01.2010 00:03
недостаточно оперативной памяти для отображения информации VVlad69 Microsoft Office Access 0 02.04.2009 14:51