Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перенос структурного проекта в ООП, как из функции сделать метод? 
:(
    Опции темы
knopka
Дата 5.7.2008, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 17.1.2006
Где: Россия: Петербург

Репутация: нет
Всего: 1



Есть проект построенный по принципу структурного программирования
Пытаюсь построить его с использованием объектов.
Есть рабочая функция читающая имена файлов в текущей папке и 
выводящая их в Memo используется TStringList принимающий имена файлов, 
хочу сделать эту функцию методом моего класса 
Код

class TState

делаю следующее:
Код

TState::TState() {
           TStringList *fN = new TStringList; // в fN должны храниться имена найденных файлов
}
TState::~TState()
{
       delete fN;
}

не могу указать тип поля fN в описании class TState всё время ошибка
если TStringList *fN = new TStringList пишу не в конструкторе а в описании класса
тоже ошибка.  То есть TStringList не воспринимает вообще, хотя на TSearchRec
не возмущается.
Скажите пожалуйста как и где описать  fN. Что я делаю не правильно. И как это нужно делать

Добавлено через 14 минут и 24 секунды
исходная функция такая
Код

void ListFiles(AnsiString path, TStrings* List,AnsiString fMask )
{
 TSearchRec sr;
if (FindFirst(path+"*.*", faAnyFile, sr) == 0)
{
 do
 {
 if (sr.Attr & faDirectory)
  {
  if (sr.Name!=".")
  if (sr.Name!="..")   {
     ListFiles(path+sr.Name+"\\",List,fMask);
     }
  }
  else
   {
   AnsiString Ext=ExtractFileExt(sr.Name).UpperCase();  
   AnsiString fName= ExtractFileName(sr.Name);
   if (MatchesMask(fName,fMask))
   if (Ext==".TXT")      
     {
           fN->Add(sr.Name);           // добавляем файлы в список
     } 
   }
 }
 while (FindNext(sr) == 0);
 FindClose(sr);
}
Application->ProcessMessages();
}

хочу чтобы метод, в классе, возвращал указатель на список найденных файлов 

PM MAIL ICQ   Вверх
jonie
Дата 5.7.2008, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



1) сколько смотрел в функцию, так и не понял как она работает (да и работает ли вообще).
переданный указатель List никогда не используется в ней.
Цитата

если TStringList *fN = new TStringList пишу не в конструкторе а в описании класса
тоже ошибка
если речь об подобном
Код

class A{ int some=132; };
то такое будет работать только для статических членов (и то с оговорками).

вероятно вам надо нечто вроде:
Код

void ListFiles(AnsiString, TStrings*,AnsiString);  //чтобы увидели мы ее (аналогично воткнуть iinclude-ом h файл)

class A {
 TStringList *fN;
public:
 A() { fn = new TStringList(); }
 ~A() { delete fn; }
 void ListFiles() {
    ::ListFiles("somepath", fn, "somemask");  //ваша функция глобальная
  }
};

впрочем, ничто не мешает обернть функцию в namespace чтобы "не мешалась"..


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
knopka
Дата 6.7.2008, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 17.1.2006
Где: Россия: Петербург

Репутация: нет
Всего: 1



to jonie
Код

class A {
 TStringList *fN;

пишет ошибку Type name expectid
тоже самое и на тип AnsiString
а в функции действительно убрал лишее должно быть так
Код

List->Add(path+sr.Name);  //добавляем имя файла в List
fN->Add(sr.Name);           // добавляем файлы в список


Добавлено через 13 минут и 25 секунд
Цитата

//чтобы увидели мы ее (аналогично воткнуть iinclude-ом h файл)

какой h файл?
PM MAIL ICQ   Вверх
jonie
Дата 6.7.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



knopka а ты h файлы-то подключил, чтобы компилятор у тебя видел эти типы?
Код

#include <vcl.h>
#pragma hdrstop

class A
{
TStringList *fN;
};

без особых проблем компилируется и работает.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
knopka
Дата 6.7.2008, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 17.1.2006
Где: Россия: Петербург

Репутация: нет
Всего: 1



to jonie 
спасибо за 
Код

#include <vcl.h>

как я сам не допёр, торможу наверно
PM MAIL ICQ   Вверх
knopka
Дата 6.7.2008, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 17.1.2006
Где: Россия: Петербург

Репутация: нет
Всего: 1



Всё стало хорошо но теперь
не узнаёт MatchesMask
Код

if (MatchesMask(fName,fMask))

какой .h добавить?
PM MAIL ICQ   Вверх
jonie
Дата 6.7.2008, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



а где у тебя та функция опередена объявлена, тот и включай


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.