![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 19.08.2014
Сообщений: 16
|
![]()
Я не профессиональный программист, просто пытаюсь облегчить себе жизнь на работе, когда занимаюсь различной обработкой (в основном статистической) численной информации. Написал программу, которая из текстового файла, содержащего численную информацию, формирует результат расчета и переводит его в Excel: сортирует, строит гистограммы и проч. Возникла проблема: загрузка (методом копирования) текстового файла осуществляется в Memo, средний размер одного такого файла составляет около 30Мб, при загрузке в Memo информации где-то на 500 мБ дальше копировать в Memo (в exe файл программы) уже не получается. Можно ли это ограничение как-то обойти. Пользуюсь Builder 6 (2002г), на компе установлено 2Гб оперативной памяти.
|
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Можно.
1) Забыть о билдере и написать на VBA Экзела макрос для считки текстовика 2) Выкинуть мемо в пользу TStringList.
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 | |
Пользователь
Регистрация: 19.08.2014
Сообщений: 16
|
![]() Цитата:
1) у меня нет особого опыта работы с макросами, 2) Excel имеет ограничение на кол-во строк и столбцов, а мои несколько скопированных файлов превысят эти ограничения. Их не превышает обработанный результат расчета. 3) Программа в билдере производит много расчетов с которыми возится в Excel как-то не хочется. А по поводу "Выкинуть мемо в пользу TStringList." Поясните пожалуйста. Моя проблема в Memo? Она имеет какое-то ограничение на кол-во строк? На данный момент в Memo у меня влазит больше 1 млн строк, но мне иногда бывает нужно еще больше. Мне почему то кажется что дело тут в памяти. Больше чем примерно 500 (может 512 мБ) не лезет. Последний раз редактировалось Sallivan_Bidl; 09.08.2015 в 17:48. |
|
![]() |
![]() |
![]() |
#4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Я только высказал догадку. Я не видел твоего проекта, я не особо понимаю что значит
Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 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. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 30.06.2015
Сообщений: 353
|
![]()
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
Зачем столько много текста в окно ввода? Разве его весь разом надо отображать? В Memo только новые данные и конкатенировать во внутреннюю строку или лист? Частично свопить порции на диск? Не хотите WM_DROPFILES на окно и просто перетаскивать файлы на окно без копирования? Или просто напрямую читать эти ваши текстовые файлы по очереди с диска? |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 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. |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,371
|
![]()
Возможно стоит подумать о записывании данных в настоящую базу данных.
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 19.08.2014
Сообщений: 16
|
![]()
Я инженер-технолог. Мне даже сложно понять какую лит-ру тут нужно копать. Пока мне хватило 2 курсов универа по основам алгоритмизации и программирования на c++ и инфы из интернета по работе с Ole сервером Excel.
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 13.08.2011
Сообщений: 184
|
![]()
Ну просто не выводить в мемо, и вообще не использовать его для хранения данных.
Я бы сразу открывать файл к примеру fstream читал построчно getline() и тут же бы парсил и переводит набор из своей структуры данных. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача-найти объем оперативной памяти по шестнадцатеричному адресу последнего байта оперативной памяти | 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 |