• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Проблема с Tstringlist

  • Автор темы Dionis
  • Дата начала
D

Dionis

Народ, помогите кто может!
Я уже совсем голову сломал - ни фига не могу врубится что за засада!
Вроде все просто, но вылетает AV!

Короче ситуация такая:

Прог-а выполняется на Windows 2003.
В цикле вызывается функция Function.
Код:
int Function(void)
{
TStringList *Otvet = NULL;

if(!FileExists(FileFor1))
return ERR_FILE_EXT_LOCAL;

Otvet = new TStringList;
Otvet->LoadFromFile(FileFor1);

..... код ......

if(Otvet != NULL) delete Otvet;

};

Так вот вроде все работает нормально, но на третьем файле (постоянно на одном и том же)
при Otvet->LoadFromFile(FileFor1); вылетает AV.
Файл обычный, текстовой...

Пробовал извращаться:
Код:
int Function(void)
{
Otvet = new TStringList;
char *File = NULL;
int len = 0, h = 0;

h = open(FileFor1.c_str(), 0);
len = filelength(h);
close(h);

File = (char *)malloc(len+1);
ifstream infile(FileFor1.c_str(), ios::binary);
infile.read(File, len);
infile.close();
File[len] = '\0';


Otvet->Text = String(File);

..... код ......

if(Otvet != NULL) delete Otvet;
free(File);

};

Однако, при Otvet->Text = String(File); уже на 15-ом (одном и том же файле)
опять вылетает AV.

Мож есть у кого какие мысли?
 
S

shisik

Только что попытался смоделировать вашу ситуацию. В качестве загружаемых файлов использовал файлы проекта
Код:
TSearchRec R;
FindFirst("*.*", faAnyFile, R);
...
И действительно функция спотыкается об Project1.tds на Otvet->LoadFromFile(FileFor1);

Но это лишь с запущенным билдером. Если билдер выключить и запустить программу просто так, то никаких ошибок не выдаёт. Может, у вас такая-же ситуация? Или вы читаете определённые файлы, а не лишь бы какие?
 
D

Dionis

Сообщение ошибки напишите.

Ну там аксесс виалейшн при обращении к определённому адресу...

Или вы читаете определённые файлы, а не лишь бы какие?

Определённые, а не лишь бы какие... Файлы с расширением *.tmp и они в текстовом формате....

Да ладно, забудте...

Я уже решил (после 2-х дней мытарств), что это галюн с StringList. Ведь иначе и не может быть! Решено его уже не использовать....
Он мне нужен был для построчного парсинга.
Сейчас переделал проект - считываю файл в char массив, вырезаю искомые строки и далее их парсю....
Вроде так надёжнее...
Но ПОНМИТЕ!!! ( :unsure: ) подобный галюн с StringList возможен ;)
 
Мы в соцсетях:

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