Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как считать из этого файла? 
:(
    Опции темы
dumb
Дата 9.5.2007, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



я не слепой, однако. по твоим словам, разделителями в этом файле являются символы табуляции(\t). попробуй теперь скопировать то, что у тебя в первом посте, в файл.
PM MAIL   Вверх
CrasyMen
Дата 9.5.2007, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В *.txt файле разделителялось табами. А на форуме видимо символы табуляции(\t) переделались в пробелы.
Вот файл:


Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  Harddisk.zip 0,91 Kb


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
dumb
Дата 10.5.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



CrasyMen, держи проект-заготовка.

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  hardparm.rar 3,40 Kb
PM MAIL   Вверх
CrasyMen
Дата 10.5.2007, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



dumb,  спасибо огромное!
Вы первый кому я повышу репутацию.


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
Romikgy
Дата 10.5.2007, 17:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Цитата(CrasyMen @  10.5.2007,  16:35 Найти цитируемый пост)
Вы первый кому я повышу репутацию. 

хех .... ибо раньше просто не мог smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
CrasyMen
Дата 23.5.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Мне надо чтобы при нажатии кнопки на одной форме появлялась вторая (которая и выводит содержимое файла в комбобокс и лейблы). Компонента  OpenDialog не надо, потому что известно расположение файла ( data/harddisk.dat ).
Это я уже сделал.
Теперь мне надо еще чтобы в комбобоксе выводились винчестера, год выпуска которых меньше текущего. Тоесть характеристика "год выпуска" (которая есть в файле данных) сравнивалась с глобальной переменной, которая обозначает текущий год. 

dumb, было бы очень хорошо если бы вы переделали свой код, потому что это не приведет к новым вопросам. Можно сделать просто 6 кнопок для назначения текущего года (2000 - 2006).

Это сообщение отредактировал(а) CrasyMen - 23.5.2007, 18:20


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
CrasyMen
Дата 23.5.2007, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Хотя, я сам уже придумал.  только скажите кто-нить как считать часть строчки между первым и вторым символом табуляции (\t).


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
Romikgy
Дата 24.5.2007, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Цитата(CrasyMen @  23.5.2007,  17:38 Найти цитируемый пост)
только скажите кто-нить как считать часть строчки между первым и вторым символом табуляции (\t). 

разбиваем строку по знакам табуляции
Цитата(CrasyMen @  7.5.2007,  23:03 Найти цитируемый пост)
cur_str->Text=StringReplace(file_->Strings[i],"\t","\n",TReplaceFlags()<<rfReplaceAll);

берем подстроку между 1 табом и вторым 
Цитата(CrasyMen @  7.5.2007,  23:03 Найти цитируемый пост)
ListBox2->Items->Add(cur_str->Strings[1]);

 smile 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
CrasyMen
Дата 24.5.2007, 07:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а если cur_str будет типа String а не TStringList, то как?


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
Romikgy
Дата 26.5.2007, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Цитата(CrasyMen @  24.5.2007,  06:04 Найти цитируемый пост)
а если cur_str будет типа String а не TStringList

и на кой? делить сложнее


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
CrasyMen
Дата 17.6.2007, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



есть код, любезно предоставленный dumb'ом:
Код

//---------------------------------------------------------------------------
void __fastcall TFCompSel::Timer1Timer(TObject *Sender)
{
  cboxModel->Clear();
  cboxModelSelect(0);
  if (!fn.IsEmpty())
  {
    datfile = new TStringList();
    try {
      datfile->LoadFromFile(fn);
      for (int i=0; i < datfile->Count; ++i)
      {
        AnsiString s = datfile->Strings[i];
        
        cboxModel->AddItem(s.SubString(1,AnsiPos('\t',s)-1), 0);
      }
    }
    catch (Exception &E)
    {
      ShowMessage("Error " + E.Message + " while read file " + fn);
    }
  }
   Timer1->Enabled = false;

}
//---------------------------------------------------------------------------
void __fastcall TFCompSel::cboxModelSelect(TObject *Sender)
{
    Button1->Enabled = true;
    int i;
    TStringList *cur_str = new TStringList();
    try {
        cur_str->Text = StringReplace(datfile->Strings[cboxModel->ItemIndex],"\t","\n",TReplaceFlags()<<rfReplaceAll);
      for (int j=1; j < 11; ++j)
      {
        TLabel *pl = dynamic_cast<TLabel*>(FindComponent("lbl_Prm"+IntToStr(j)));
        if (pl) pl->Caption =  j < cur_str->Count ? cur_str->Strings[j] : AnsiString("");
      }
    }
    catch (Exception &E)
    {
      ShowMessage("Error " + E.Message + " while parse line: " + datfile->Strings[i]);
    }
    delete cur_str;

    TSearchRec a;
    if ( FindFirst("images\\" + cboxModel->Text + ".jpg", faAnyFile, a ) == 0 )
        Image1->Picture->LoadFromFile("images\\" + cboxModel->Text + ".jpg");
    else Image1->Picture->LoadFromFile("images\\None.jpg");
}

как сделать чтобы в cboxModel добавлялись только те строчки, в которых после первого символа табуляции (\t) следует "2000"?


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
dumb
Дата 19.6.2007, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Цитата(CrasyMen @  17.6.2007,  17:14 Найти цитируемый пост)
как сделать чтобы в cboxModel добавлялись только те строчки, в которых после первого символа табуляции (\t) следует "2000"? 


Код

...
        AnsiString s = datfile->Strings[i];
        int pos = AnsiPos('\t',s);
        if (s.SubString(pos+1,4) == "2000")
          cboxModel->AddItem(s.SubString(1,pos-1), 0);
...


а вообще, если тебе нужен результат, а само программирование не "уперлось"(ибо вещи, о которых ты спрашиваешь в течение довольно длительного времени, являются элементарнейшими), то стоит создавать тему в "Центре помощи" с просьбой о модификации существующего кода.

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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