Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для Famous_47
1 / 1 / 1
Регистрация: 13.11.2015
Сообщений: 59

Ошибка "Неизвестное имя"

18.11.2015, 21:20. Показов 1549. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа после запуска загружает файлы html из интернета, а затем открывает их в CppWebBrowser. Есть несколько разделов (страниц) на форме, переключаются с помощью PageControl. После запуска появляется ошибка "Неизвестное имя" и при выборе другой страницы тоже, но если один раз проклацать все страницы, то больше она не вылазит, а вылазит только если нажать на кнопку обновить (которая снова повторяет процедуру загрузки и от открытия файла). Не могу понять что вызывает ошибку, у меня она не появляется, но у других у кого-то есть, а у кого-то нет. Попробовал на ноутбуке - тоже вижу эту ошибку.

Подозреваю, что это как-то связано с браузером или путями к файлам, однако не смотря на эту ошибку всё функционирует.

Вот подгрузка при старте:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
TFileStream* FN = new TFileStream("news.html", fmCreate | fmOpenWrite);
 try
 {
 HTTPNews->Get("http://myurl/myprog/news.html", FN);
 }
 catch (...)
 {
 NewsErr=1;
 RetryNews->Visible=true; // это кнопка обновить, повторяет процедуру
 }
 delete FN;
 // подгрузить файл стилей
 FN = new TFileStream("styles.css", fmCreate | fmOpenWrite);
 try
 {
 HTTPNews->Get("http://myurl/myprog/styles.css", FN);
 }
 catch (...)
 {
 }
 delete FN;
 News->Hide();
 News->Navigate(WideString(ExtractFilePath(Application->ExeName)+"news.html"));
 News->Show();
Вот переключение страниц:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
void __fastcall TForm1::PageControl1Change(TObject *Sender)
{
 switch( PageControl1->ActivePage->TabIndex)
{
  case 0:
    {
    News->Show(); // это скрытия и показ cppwebbrowser'ов
    Schedule->Hide();
    Homework->Hide();
    Marks->Hide();
    RetrySchedule->Visible=false;
    RetryNews->Visible=true;
    RetryHomework->Visible=false;
    RetryMarks->Visible=false;
    break;
    }
  case 1:
    {
    News->Hide();
    Schedule->Hide();
    Homework->Show();
    Marks->Hide();
    RetrySchedule->Visible=false;
    RetryNews->Visible=false;
    RetryHomework->Visible=true;
    RetryMarks->Visible=false;
    break;
    }
  case 2:
    {
    News->Hide();
    Schedule->Show();
    Homework->Hide();
    Marks->Hide();
    RetrySchedule->Visible=true;
    RetryNews->Visible=false;
    RetryHomework->Visible=false;
    RetryMarks->Visible=false;
    break;}
  case 3:
    {
    News->Hide();
    Schedule->Hide();
    Homework->Hide();
    Marks->Show();
    RetrySchedule->Visible=false;
    RetryNews->Visible=false;
    RetryHomework->Visible=false;
    RetryMarks->Visible=true;
    break;}
}
}
Код кнопки обновления аналогичен коду загрузки.

Добавлено через 2 часа 44 минуты
Может есть возможность просто скрыть такое сообщение с ошибкой? Оно на работу программы не влияет, просто если я по таймеру буду обновлять что-то, то оно у проблемных ПК будет всегда выскакивать
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.11.2015, 21:20
Ответы с готовыми решениями:

Ошибка "Неизвестное имя" при сохранении данных таблицы StringGrid в Excel
При попытке сохранения данных таблицы StringGrid в Excel , появляется сообщение об ошибке - "Неизвестное имя". Код программы:...

Ошибка: "Неизвестное имя"
пытаюсь выполнить код: int...

Неизвестное имя типа
В строке 22 возникает ошибка (unknown type name 'char'). C чем это может быть связано? ...

13
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
18.11.2015, 22:37
Цитата Сообщение от Famous_47 Посмотреть сообщение
Может есть возможность просто скрыть такое сообщение с ошибкой?
Попробуйте, используя компонент ApplicationEvents (событие OnException) выводить сообщения об ошибках, скажем, в StatusBar. Если нормально получится, то можно добавить фильтрацию на конкретное сообщение.
1
 Аватар для Famous_47
1 / 1 / 1
Регистрация: 13.11.2015
Сообщений: 59
19.11.2015, 00:58  [ТС]
Т.е. примерно:

C++
1
2
3
4
5
void __fastcall TForm1::ApplicationEvents1Exception(TObject *Sender,
      Exception *E)
{
StatusBar1->Panels->Items[0]->Text=...;
}
А как именно описать исключение?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
19.11.2015, 09:20
Цитата Сообщение от Famous_47 Посмотреть сообщение
как именно описать исключение?
= E->Message ;
1
 Аватар для Famous_47
1 / 1 / 1
Регистрация: 13.11.2015
Сообщений: 59
19.11.2015, 21:09  [ТС]
nick42, после добавления статус бара и этого кода стал получать ошибку вместо "Неизвестное имя", которая после ее закрытия не влияла на работу, - List index out of bounds (0), и после ее закрытия приложение завершается. Как мне запретить сообщать об ошибке? Она где-то появляется но непонятно почему, нужно, чтобы при этой ошибке она не отображалась, а приложение работало дальше

Добавлено через 5 минут
Прочитал про ошибку - у людей она возникала при загрузке параметра из ini файла, хотя у меня она подгружается только при запуске и не при переключении вкладок.

C++
1
2
Ini=new TIniFile((ExtractFilePath(Application->ExeName)+"options.ini"));
CheckBox1->Checked=Ini->ReadBool("Autostart", "Autostart",0);
Есть у меня такой момент, при чем TIniFile *Ini объявлен глобально, заранее. Может быть в этом причина?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
19.11.2015, 21:23
Судя по этому сообщению...
Цитата Сообщение от Famous_47 Посмотреть сообщение
List index out of bounds (0)
в вашей программе есть некорректное использование индексированного массива (использование элемента массива при пустом массиве; это лечится простым фильтром if()...). Я считаю, что нужно найти это место в программе, а не пытаться затушевать ошибку "примочками".
1
 Аватар для Famous_47
1 / 1 / 1
Регистрация: 13.11.2015
Сообщений: 59
19.11.2015, 21:29  [ТС]
Дело в том, что я не использую массивов, единственное место, в котором я обращаюсь с номерами это в switch. Не могу понять природу ошибки, откуда она идет - появляется при запуске, затем единожды при проходе по вкладкам PageControl а затем при попытке нажатия на кнопку обновить, которая дублирует работу программы во время запуска т.е. подгрузку файлов
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
19.11.2015, 21:42
Цитата Сообщение от Famous_47 Посмотреть сообщение
я не использую массивов, единственное место, в котором я обращаюсь с номерами это в switch
Не знаю. Лень вникать в программу, но PageControl - это уже элемент с индексами (TabSheets), и если закладки в нём создаются динамически - то вот готовый элемент риска... .
1
20.11.2015, 00:10

Не по теме:

Цитата Сообщение от nick42 Посмотреть сообщение
Попробуйте, используя компонент
Путь для начала попробует взять в руки книжку по основам С++ и изучит использование функций, не код а копипаста.

0
 Аватар для Famous_47
1 / 1 / 1
Регистрация: 13.11.2015
Сообщений: 59
20.11.2015, 01:32  [ТС]
nick42, Вообще, есть ли возможность отследить ошибку, допустим по сообщению, которое оно выдает (т.к. на работоспособность оно не влияет) и просто скрыть ее т.к. если я по таймеру делаю обновление, то только на некоторых компьютерах она появляется? причем нет закономерности win7, xp, x86 или x64, а программа и с ошибкой работает номрально. На моем ПК и 50% людей запустивших программу - всё нормально, но у другой половины проблема имеет место быть. На ноутбуке тоже вижу ошибку. Можно скинуть исходник программы? Может будет возможно понять в чем проблема, если она банальна?

Avazart, книга у меня есть, и то, с чем я сталкиваюсь - там не описано. Я, конечно, прошу прощения, что напрягаю людей, но я сам понимаю как важно на начальном этапе иметь советы знающих, преподавателей, ведь изучение языка состоит в том, что с каждой задачей приходится изучать и понмать что-то новое, с каждой написанной программой пополняется запас знаний, возможностей и т.д. Если Вы знаете в чем проблема и просто не имеете желания подсказать, незнающему пока, идиоту, то просто не пишите, пожалуйста.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.11.2015, 07:49
Цитата Сообщение от Famous_47 Посмотреть сообщение
скинуть исходник программы?
Можно, только я ничего не обещаю; если у меня проект не пойдет, то специально что-то устанавливать я не стану.
1
20.11.2015, 12:30

Не по теме:

Цитата Сообщение от Famous_47 Посмотреть сообщение
книга у меня есть, и то, с чем я сталкиваюсь - там не описано.
Ф-ции есть в каждой нормальной книге по С++.
Цитата Сообщение от Famous_47 Посмотреть сообщение
идиоту
Идиотам не помогаю, это ихняя личная проблема, проблема родителей/системы образования.

0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.11.2015, 15:15
Лучший ответ Сообщение было отмечено Famous_47 как решение

Решение

Цитата Сообщение от Avazart Посмотреть сообщение
Идиотам не помогаю, это ихняя личная проблема
Avazart, а вас лично и не просили. Было сказано
Цитата Сообщение от Famous_47 Посмотреть сообщение
просто не пишите, пожалуйста.
Добавлено через 1 час 15 минут
Famous_47, чтобы сообщение "Неизвестное имя" не появлялось, я переделал след. образом: в каждом из 4-х обработчиков OnDocumentComplete ваших браузеров в самом начале__
C++
1
2
3
4
 Variant vDocumenth = News->ControlInterface->Document;
  Variant vObjh = News->OleObject;
  if(vObjh)
    strDocCompatMode = vObjh.OlePropertyGet(
то-есть добавил анализ if(vObjh); strDocCompatMode сделал общей переменной, но необязательно (String strDocCompatMode = ""; ). Дальше все как было.

Добавлено через 3 минуты
Хотя, если убрать обработку в ApplicationEvents, то пишет ошибку.
Поспешил

Добавлено через 2 минуты
П.С. и с файлами в двух местах переделал...
C++
1
2
3
4
FILE *f = fopen((ExtractFilePath(Application->ExeName) + "version.txt").c_str(),"r");
 
  if(f)
  {
чтоб варнинги не выбрасывало.

Добавлено через 36 минут
П.П.С. Ну, в общем, в появлении сообщения виновата строчка vStyle.OlePropertySet("margin-bottom","0px"); в этих четырех обработчиках. Если закомментировать и ее, то сообщение не появляется. Может быть нужно попробовать применить Indy другой версии (их ведь целая куча сейчас; и никакой совместимости).
1
 Аватар для Famous_47
1 / 1 / 1
Регистрация: 13.11.2015
Сообщений: 59
20.11.2015, 15:38  [ТС]
добавил анализ if(vObjh) во все обработчики, объявил String strDocCompatMode = "" глобально (она действительно каждый раз объявлялась) и начал получать ошибки компиляции Could not convert Dispatch into type Boolean.

Но вся проблема действительно крылась именно в этой строке, где просто отступ от нижнего края убрать хотел vStyle.OlePropertySet("margin-bottom","0px"); Сбило с толку, что у одних была проблема, а у других нет. Закомментировал ее и теперь всё отлично! Спасибо огромное!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2015, 15:38
Помогаю со студенческими работами здесь

Ошибка неизвестное имя
В модуле GraphABC не могу сделать так, чтобы картинка начала двигаться , пробовал через drawpicture, но пишет, что неизвестное имя....

Ошибка: Неизвестное имя 'М'
Почему не определяем 'M'? Program cuprum; VAR Q,T1,T2,M:REAL; begin WRITE ('Введите начальную температуру меди ' ); READ...

Ошибка: Неизвестное имя 'textBoxA'
Почему пишет неизвестное имя 'textBoxA'? var q,w:string; qq,r:integer; begin r:=textBoxA.Text; q:=textBox5.Text; ...

Ошибка: неизвестное имя TForm1
Вот у меня код, и у меня выдает ошибку, пишет, что неизвестно имя TForm1. Помогите procedure TForm1.Button1Click(Sender: TObject); type...

Ошибка Неизвестное имя 'ShowMessage'
Unit1.pas(59) : Неизвестное имя 'ShowMessage', вот код Unit Unit1; interface uses System, System.Drawing, System.Windows.Forms; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru