Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Найдите плиз ошибку... Не могу прочесть строку из файла... 
V
    Опции темы
mr.Anderson
Дата 26.3.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Есть файл. Текстовый. В нем написана строчка:
Цитата

WarningMessageText=Это мое сообщение

Задача: прочитать текст после знака равно и вставить его в используемое в программе сообщение. Делаю так.

1. Создаем текстовую переменную.
2. Помещаю все в листбокс1. Затем ищу в нем строку WarningMessageText=.
3. Отрезаем эту строку до знака равно. Помещаем что нашли в переменную.
4. Подставляем переменную в сообщение. Но какого-то фига переменная пуста...

Вот код:
Код

  AnsiString warning_message;
  ListBox->Items->LoadFromFile("system.ini");
  AnsiString config,x;
  for(int z=0;z<=ListBox->Items->Count-1;++z)
  {
   config=ListBox3->Items->Strings[z];
   if(config.Pos("WarningMessageText="))
    warning_message=config.Delete(1,19);
  }
  
  //.....
  
  ShowMessage(warning_message); //Выводится пустое сообщение


Это сообщение отредактировал(а) sim7 - 26.3.2006, 13:29


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
tigger
Дата 26.3.2006, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: 2
Всего: 4



У тебя там разные ListBoxы:
загрузка строк идет в ListBox а config из ListBox3.
Я заменил и у меня все пошло... smile


--------------------
user posted image
PM MAIL   Вверх
Voldemar2004
Дата 26.3.2006, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(sim7 @ 26.3.2006, 13:27 Найти цитируемый пост)
прочитать текст после знака равно
Функция для посимвольного чтения файла - fgetc. Надо только немного переделать этот код.
Код
#include <string.h>
#include <stdio.h>

int main(void)
{
   FILE *stream;
   char string[] = "This is a test";
   char ch;

   /* open a file for update */
   stream = fopen("DUMMY.FIL", "w+");

   /* write a string into the file */
   fwrite(string, strlen(string), 1, stream);

   /* seek to the beginning of the file */
   fseek(stream, 0, SEEK_SET);

   do
   {
      /* read a char from the file */
      ch = fgetc(stream);

      /* display the character */

      putchar(ch);
   } while (ch != EOF);

   fclose(stream);
   return 0;
}


Цитата
Header File

stdio.h

Category

Input/output Routines

Prototype

int fgetc(FILE *stream);

wint_t fgetwc(FILE *stream);

Description

Gets character from stream.

fgetc returns the next character on the named input stream.

Return Value

On success fgetc returns the character read after converting it to an int without sign extension. On end-of-file or error it returns EOF.
Взято из Help'a к C++ Builder 6.

Это сообщение отредактировал(а) Voldemar2004 - 26.3.2006, 16:57


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
mr.Anderson
Дата 27.3.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Нет, ListBox - опечатка. Должно быть ListBox3.
Voldemar2004, я другой вариант использую.

Я уже ничего не понимаю. Привожу ниже более подробный код.

Сначала создаю в директории программы файл SYSTEM.INI и пишу в нем строку
Цитата

WarningMessageText=Это текст сообщения

Затем после подключения (#include) файлов объявляю глобальную переменную:
Код

AnsiString warning_message;

Далее в событии OnCreate главной формы пишу следующее:
Код

 ListBox3->Items->LoadFromFile("system.ini");
 AnsiString config,x;
 for(int z=0;z<=ListBox3->Items->Count-1;++z)
 {
  config=ListBox3->Items->Strings[z];
  if(config.Pos("WarningMessageText="))
   warning_message=config.Delete(1,19);
 }

Затем в событии таймера пишу:
Код

MessageBox(NULL,warning_message.c_str(),"Инфо",MB_ICONINFORMATION);

Однако, выводится пустое сообщение.

Но вот что особенно интересно: если я перепишу все, что в событии OnCreate, в событие OnClick любой кнопки на форме, и при запуске программы сначала нажму на эту кнопку, а затем активирую таймер, то в переменной будет именно то, что мне нужно, т.е. урезанная строчка! А если при запуске программы сначала активировать таймер, то в переменной warning_message почему-то ничего не оказывается! Объясните плиз, почему так происходит!


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
pandrew
Дата 27.3.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(sim7 @ 27.3.2006, 11:14)
Я уже ничего не понимаю.... Объясните плиз, почему так происходит!

Вообще-то для ответа на все почему существует пошаговый отладчик. В твоем случае событие OnCreate не самое подходящее место для загрузки ListBox (он еще не готов). Правильно это делать в конструкторе формы. Там же настраиваешь таймер.
PM MAIL   Вверх
mr.Anderson
Дата 27.3.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Прошу прощения, вопрос отпал. Сделал глупую ошибку в коде. Теперь буду еще лет 10 эту ошибку помнить. smile Неожиданно увидел, что все эти события включены в блок "если файла не существует". smile


--------------------
user posted image

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

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

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

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

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


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

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


 




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


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

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