![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
Alkor135 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Я загружаю csv файл в StringGrid следующей процедурой (по нажатию кнопки выбираю файл и гружу в StringGrid):
Но у меня 27 файлов и 27 StringGrid. Сейчас у меня 27 кнопок загрузки. Как упростить, чтобы загрузить 27 файлов кликнув по одной кнопке. Выбирать файлы для загрузки не надо, лучше каждый файл прописать в коде (естественно сохранив соответствие каждому файлу свой StringGrid). Заранее спасибо! |
|||
|
||||
Bose |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 8 Всего: 51 |
Добавь процедуру:
Вызывай её так:
|
||||
|
|||||
Alkor135 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Bose, спасибо.
Что-то я не так делаю, компилятор выдает ошибки: [Error] Main.pas[211]: Undeclared identifier: 'MyLoadGrid' [Error] Main.pas[218]: Undeclared identifier: 'aFileName' [Error] Main.pas(223): Undeclared identifier: 'aGrid' [Error] Main.pas[223]: Missing operator or semicolon [Error] Main.pas[236]: Undeclared identifier: 'MyLoadGrid' [Fatal Error] Pairs_Week.dpr[5]: Could not compile used unit 'Main.pas' Выяснил еще одну жуткую вещь. StringGrid в моем случае использовать нельзя. У меня в каждом csv файле 128 000 строк и 7 полей, а в будущем собираюсь использовать csv файлы с 1 000 000 строк. Так вот, после загрузки около десятка файлов Delphi выдает сообщение о проблемах с памятью. Видимо нужно решать эту задачу не средствами StringGrid, всеравно мне отображение и изменение загруженных файлов не нужно. Я создам новую ветку с вопросом о средствах решения поставленной задачи. |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Ты эту процедуру описал в Form1 ? Видимо, нет! ![]() Ищи, где точку с запятой забыл.
А вот это действительно ###. ![]() -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Alkor135 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Спасибо конечно.
Сейчас для меня более актуально, как загнать 27 csv файлов в БД, чтобы потом с ними работать. |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Не вижу соответствующей темы с твоей стороны... -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Alkor135 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Тема такая: Есть идея сделать программу которая протестирует на исторических данных одну мультивалютную стратегию для FOREX. Есть исторические данные одноминутных баров 27 валютных пар в csv файлах. Вот их и нужно загрузить в БД. Далее берутся данные из БД и расчитываются 14 самых волатильных и самых коррелированых валют, из них формируется портфель. Создается табличка (думаю подойдет табличка StringGrid) в которую записываются текущие данные из БД. По нажатии на кнопочку происходит скачек на определенное (задается пользователем) количество баров вперед. Вобщем изменять данные в БД не нужно, нужно только считывать и обрабатывать (производить вычисления). Сейчас изучаю как с помощью BDE Administrator создать БД, а с помощью Database Desktop создать таблицы в которые буду грузить данные из csv файлов. Далее надо будет написать процедуру загрузки данных из csv в БД. Если кто может подсказать как это сделать, буду очень признателен. |
|||
|
||||
Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 8 Всего: 51 |
Alkor135, может быть, а может и не быть, тут можно воспользоваться компонентом CsvDataset из библиотеки JVCL. Идея компонента в том, что он реализует наследуется от класса TDataset, но работает не с SQL базой данных, а с csv файлами. Соответственно, с ним можно работать как с любым Dataset-ом, и использовать для отображения данных не StringGrid, a любой DbGrid. Хотя, насколько я понял, отображение исторических данных в твоём случае неактуально.
|
|||
|
||||
Alkor135 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Bose, это вероятно для меня пока слишком сложно. Я еще понятия не имею о библиотеках, и где их взять, и как подключать.
Я тут написал парочку процедур, думал, что удастся загнать данные в БД, но компилятор ругается. Вот код, может подскажете где я ошибся.
|
|||
|
||||
Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 8 Всего: 51 |
Во-первых, так: Query1.sql.text:='Insert into AUDCAD (Date, Time, Open, High, Low, Close, Volume) values ('+Cells[0,J]+', '+Cells[1,J]+', '+Cells[2,J]+', '+Cells[3,J]+', '+Cells[4,J]+', '+Cells[5,J]+', '+Cells[6,J]+')';
Во-вторых, как ругается? |
|||
|
||||
Alkor135 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Bose, спасибо переделал.
Компилятор теперь ругается на несовместимые типы: [Error] Main.pas(66): Undeclared identifier: 'Cells' [Error] Main.pas(66): Incompatible types: 'String' and Integer [Error] Main.pas(66): Incompatible types: 'String' and Integer [Error] Main.pas(66): Incompatible types: 'String' and Integer [Error] Main.pas(66): Incompatible types: 'String' and Integer [Error] Main.pas(66): Incompatible types: 'String' and Integer [Error] Main.pasl6S]: Incompatible types [Fatal Error] BD_3.dpr(5): Could not compile used unit 'Main.pas' Правда не понял почему. Ведь в StringGrid строковые данные в созданной таблице вроде тоже ![]() |
|||
|
||||
Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 8 Всего: 51 |
begin .. end надо ещё после with
и после for do
Это сообщение отредактировал(а) Bose - 8.4.2009, 02:27 |
|||
|
||||
Alkor135 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
||||
|
||||
Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 8 Всего: 51 |
нельзя поле называть _date
|
|||
|
||||
Alkor135 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Спасибо! Поменял название полей в таблице и в процедуре:
Ошибка с "Token:_Date" исчезла. Зато появилась ошибка: Project BD_3.exe raised exception class EDBEngineError with message 'Invalid use of keyword. Token:.21, Line Number: Г. Process stopped. Use Step or Run to continue. Это он ругается на дату в первом поле 2008.11.21. А ведь я задавал строковый формат в Database Desktop для 1-го поля (Alpha). Отчего такая ошибка и как с ней справиться? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |