Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2013, 18:28   #1
Evgun
 
Регистрация: 06.01.2013
Сообщений: 7
Восклицание Ребят! нужно объяснение!)

Есть ТрииВью с 3 родительскими узлами.
там надо сделать сортировку и поиск

Код:
Код:
typedef struct
{
AnsiString Model;
} CAR;
CAR car[5];

AnsiString buf;


void __fastcall TForm1::SearchClick(TObject *Sender)
{
  for (int a=0; a<5; a++)
  {
  car[a].Model=TreeView1->Items->Item[a];  //запись в массив
  }                              

   //сортировка прямым выбором
  for (int a=0; a<5; a++)
  {  CAR tmp = car[a];
     int k = a;

     for (int j=a+1; j<5; j++)
       if(car[j].Model<tmp.Model)
       {
         tmp=car[j];
         k=j;
       }
     car[k]=car[a];
     car[a]=tmp;
  }

    int a;
   for(int i=0; i<5; i++)
     TreeView1->Items->Item[a]=car[i].Model;  //запись в TreeView


     //поиск
      int u;
      buf=Edit3->Text;
      int LinearSearch(car* u);

           for(int a=0; a<5; a++);
            if(u[a].car==Text)
            {
            TreeView1->Items->Item[]->Selected->true;
            }

}
//---------------------------------------------------------------------------
и ошибки:

Последний раз редактировалось ACE Valery; 07.01.2013 в 01:43.
Evgun вне форума Ответить с цитированием
Старый 06.01.2013, 18:39   #2
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Вам же написали. Узел в дереве это TTreeNode, а не сразу строка. Кажись, у него Data должен быть.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 06.01.2013, 19:07   #3
Evgun
 
Регистрация: 06.01.2013
Сообщений: 7
По умолчанию

Ezhik, а куда нужно вписать? После TreeView1 ?
Evgun вне форума Ответить с цитированием
Старый 06.01.2013, 20:04   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Несоответствие типов данных.
Нужно писать так:
Код:
car[a].Model=TreeView1->Items->Strings[a];
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 06.01.2013, 20:32   #5
Evgun
 
Регистрация: 06.01.2013
Сообщений: 7
По умолчанию

изначально так и было написано, но была ошибка такая:
E2316 'Strings' is not a member of 'TTreeNodes'
Evgun вне форума Ответить с цитированием
Старый 06.01.2013, 20:46   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Вот так будет правильно:
Код:
car[a].Model = TreeView1->Items->Item[a]->Text;
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 06.01.2013 в 20:50.
Smitt&Wesson вне форума Ответить с цитированием
Старый 06.01.2013, 21:02   #7
Evgun
 
Регистрация: 06.01.2013
Сообщений: 7
Восклицание

исправил немного код. Народ, гляньте пожалуйста. проверить не могу, т.к. ещё проблемы с указателем)

и, если сможете, по коду скажите, что будет происходить? и будет ли это ЧТО-ТО тем, что надо для программы))))

Код:
typedef struct
        {
           AnsiString Model;
        } CAR;
     CAR car[5];

        AnsiString buf;
        int a;

        void __fastcall TForm1::SearchClick(TObject *Sender)
        {


        for(int b=0; b<5; b++)

            if(b==TreeView1->Items->Count)
                {TreeView1->Select(TreeView1->Items->Item[b]);
                        if (TreeView1->Items->Item[b]->Selected)
                        {
                        car[a].Model=TreeView1->Selected->Text;
                        };
                 }
//ñîðòèðîâêà ïðÿìûì âûáîðîì
  for (int a=0; a<5; a++)
  {  CAR tmp = car[a];
     int k = a;

     for (int j=a+1; j<5; j++)
       if(car[j].Model<tmp.Model)
       {
         tmp=car[j];
         k=j;
       }
     car[k]=car[a];
     car[a]=tmp;
  }

  for (int i=0; i<5; i++)
  if(i==TreeView1->Items->Count)
                {TreeView1->Select(TreeView1->Items->Item[i]);
                        if (TreeView1->Items->Item[i]->Selected)
                        {
                        TreeView1->Selected->Text=car[a].Model;
                        };
                 }
    //Ïîèñê
      int u;
      buf=Edit3->Text;
      int LinearSearch(car* u);

           for(int a=0; a<5; a++);
            if(u[a].car==Text)
            {
            TreeView1->Items->Item[a]->Selected;
            }

}



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 07.01.2013 в 01:16.
Evgun вне форума Ответить с цитированием
Старый 06.01.2013, 21:11   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Оформляйте код нормально. Невозможно-же читать. Кнопочка #.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 06.01.2013, 21:17   #9
Evgun
 
Регистрация: 06.01.2013
Сообщений: 7
По умолчанию

Прошу прощения, я просто ещё не знаю что да как лучше)

Код:
typedef struct
    {
        AnsiString Model;
    }CAR;
     CAR car[5];

     AnsiString buf;
     int a;

        void __fastcall TForm1::SearchClick(TObject *Sender)
        {

      /* for(int b=0; b<5; b++)
            if(b==TreeView1->Items->Count)
             {
              TreeView1->Select(TreeView1->Items->Item[b]);
                if (TreeView1->Items->Item[b]->Selected)
                 {
                  car[a].Model=TreeView1->Selected->Text;
                 };
             } */


    for (int a=0; a<5; a++)
    {
        car[a].Model = TreeView1->Items->Item[a]->Text;  
                                              //запись в массив                                                                                             
    }




        //сортировка прямым выбором
    for (int a=0; a<5; a++)
    {
        CAR tmp = car[a];
        int k = a;

        for (int j=a+1; j<5; j++)
           if(car[j].Model<tmp.Model)
                {
                 tmp=car[j];
                 k=j;
                }
        car[k]=car[a];
        car[a]=tmp;
    }

    for (int i=0; i<5; i++)
          if(i==TreeView1->Items->Count)
                {
                 TreeView1->Select(TreeView1->Items->Item[i]);
                        if (TreeView1->Items->Item[i]->Selected)
                        {
                         TreeView1->Selected->Text=car[a].Model;
                        };
                 }

    /* int a;
    for(int i=0; i<5; i++)
    TreeView1->Selected->Text=car[a].Model;  //запись обратно в TreeView
    */



        //Поиск
    int u;
    buf=Edit3->Text;
    int LinearSearch(car* u);

    for(int a=0; a<5; a++);
        if(u[a].car==Text)
        {
         TreeView1->Items->Item[a]->Selected;
         }
       }

Надеюсь так более прилично выглядит

Осталась ошибка только с указателями

Последний раз редактировалось Evgun; 06.01.2013 в 21:41.
Evgun вне форума Ответить с цитированием
Старый 06.01.2013, 21:23   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Я имел в виду несколько иное оформление. У Вас в скриншоте, текст имеет отступы. Вот это и есть правильное оформление. Скопируйте текст из своего приложения и оформите в виде кода (#). Что-бы не плодить посты, воспользуйтесь кнопочкой "Правка".
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ребят нужно написать программу по листингу на Си Ромео_34 Помощь студентам 6 25.03.2012 21:55
Ребят нужно создать bat файл. не получается... sasapot Помощь студентам 0 14.01.2011 18:24
Нужно объяснение и, по-возможности, написать программу на указатели FrostMaster Помощь студентам 0 26.04.2010 20:53
Нужно объяснение задачки((( Настенька..Блонди Помощь студентам 3 26.02.2009 23:13