![]() |
|
|
![]()
|
|
| Sash31 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 17.12.2006 Где: г. Электрогорск Репутация: нет Всего: нет |
Подскажите пожалуйста:
Мне необходимо сделать программу поиска по очень большим текстовым файлам (~200МБ). (*.seq) Хочу считывать построчно ( fgets(.....) ) - выдаёт char*. И записывать в Memo1->Lines->Add(.....) - требует TStrings*. Что делать? (Может можно как-то проще?) |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
можно конвертировать
Memo1->Lines->Add(AnsiString(char*)); или AnsiString name; char *c; c=name.c_str(); Добавлено @ 23:56 но в случае с указателем лучше выделить под него необходимое колл-во памяти и копировать полученную строку. т.к через какое-то время в name.c_str(); будет мусор. |
|||
|
||||
| Sash31 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 17.12.2006 Где: г. Электрогорск Репутация: нет Всего: нет |
Спасибо, codelord...
Ещё вопрос: void __fastcall TForm1::Button1Click(TObject *Sender) { FILE *fp; fp = fopen("C:\GBDB\gbbct1.seq","r"); for (i = 0; i < 5000; i++) { buffer1 = ""; fgets(buffer1, 40, fp); Memo1->Lines->Add(AnsiString(buffer1)); } } компилируется, но при нажатии Button1 выводит сообщение об ошибке: Project Project1 raised exception class EAccessViolation with message 'Access violation at address 32665A01 in module 'CC3260MT.DLL'. Read of address F82B5BF8. Process stopped. Use step or run to continue... Пишет так для любых файлов, в том числе маленьких *.txt |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
а в каком месте ты выделяешь память для buffer1 а где у тебя объявления i.
и что такое buffer1=""; если это char. ?
|
|||
|
||||
| Sash31 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 17.12.2006 Где: г. Электрогорск Репутация: нет Всего: нет |
Вот код:
i - в 11-й строке. В таком виде выдаёт ту же ошибку. если я правильно понял, необходимо выделить память под buffer1... я плохо представляю как это делается. кажись buffer1 = (char*) calloc (41, sizeof(char)); так? если да - где это вписать? |
|||
|
||||
| codelord |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
ладно давай решим твою проблему тем не менее на всякий случай скажу что у мемо есть такая чтука
Memo1->Lines->LoadFromFile("C:\\GBDB\\gbbct1.seq"); тут что то я упустил:
конечно должно быть сдвоенные слеши:
|
||||
|
|||||
| Sash31 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 17.12.2006 Где: г. Электрогорск Репутация: нет Всего: нет |
Спасибо огромное, codelord!!!
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |