Поиск:

Ответ в темуСоздание новой темы Создание опроса
> мб косяк билдера? 
:(
    Опции темы
GolIy
Дата 1.11.2006, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!
имхо указатель объявлённый 
Код

extern PACKAGE TForm1 *Form1;

в хидере и
Код

TForm1 *Form1;

в cpp один и тот же. Просто екстерн в данном случае юзается для экспорта VCL объектов. Но, тогда как объяснить следующее:
1. Создаём обычный прожект. Делаем New Form.
2. Добавляем 
Код

#include "Unit2.h" 

в Unit1.cpp и
Код

#include "Unit1.h" 
 
в Unit2.cpp соответственно.
3. Далее делаем к примеру так 
Unit1.cpp
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Form2->Show();
}
//---------------------------------------------------------------------------

Unit2.cpp
Код

  Form1->Width += 10; // неважно как именно,  обращаемся к первой форме

4. А вот здесь прикол, меняем в Unit2.cpp
вместо
Код

#include "Unit1.h"

на 
Код

#include "Unit1.сpp"

хоть это и не логчно, инклюдить спп, но компилятор хавает. Таким образом обращаемся к не екстерновскому указателю..  теперь, смотрим результат - при обращении к указателю прога падает. Теперь если поменять обратно с ".cpp" на ".h" билдер загибается...
По крайней мере у меня падает, проверял на двух машинах. Builder 6.0 Build 10.166.

Хотелось бы узнать ващзи соображения на этот счёт...
PM MAIL   Вверх
Vyacheslav
Дата 1.11.2006, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Что значит "загибается" ?

Добавлено @ 18:58 
И соображения насчет чего: падене программы и  загибания билдера?


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
GolIy
Дата 1.11.2006, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ррррр... такую мессагу откатал а залогиниться забыл, по кнопке "Назад" мемо очитилось smile((
ладна пофик, тада в кратце - 
Код

Что значит "загибается" ?

я подробно описал шаги, что зделать чтобы он "загнулся"... можете сами глянуть... это минутная операция smile

на 4 шаге вылезает варнинг линка:
[Linker Warning] Public symbol '_Form1' defined in both module C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ and C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\UNIT2.OBJ
Ну, терь я понял в чём ошибка smile
Но всё равно, когда меняешь после этого в нормальную форму ".cpp" -> ".h" билдер жётско падает, это баг иде...
PM MAIL   Вверх
Vyacheslav
Дата 2.11.2006, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вы подробно описали шаги, как добиться того, что бы  код в программе обращался к неициализированному указателю. С этим все понятно smile.Непонятно, назначение подобных экспериментов, но это уже Ваше дело.
Меня интересует, что значит "загибается" , "падает" IDE. По логике, ему глубоко наплевать,   что Вы поменяли 
Код

#include "Unit1.h"

на
Код

#include "Unit1.сpp"

и обратно. 
Во всяком случае я повторил Ваш эксперимент и с IDE у меня все нормально


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
FFFFFFF7
Дата 2.11.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



GolIy,  можно подключать и С++ и хеад-файлы. Попробуйте код *.аш переписать в новый *.црр. Подключите его - все будет ОК. Расширение файла значения не имеет.
На счет палений - это не баг ИДЕ. это, извините, кривые руки. Ни чего.. С опытом всё приходит.=))) Удалите после изменения 
Цитата(GolIy @  1.11.2006,  21:01 Найти цитируемый пост)
Но всё равно, когда меняешь после этого в нормальную форму ".cpp" -> ".h" билдер жётско падает, это баг иде...

удалите *.ОБЖ-файлы. Хотя они заново создаются, но все-равно удалите и компильте заново.
--------------------
Да помоги кодеру, а значит - ближнему своему!
PM MAIL   Вверх
GolIy
Дата 3.11.2006, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Непонятно, назначение подобных экспериментов, но это уже Ваше дело.

Вы правы, практического применения никакого. Просто я случайно на это наткнулся, и хочу показать всем что иде при этих действиях падает. 

Цитата

Во всяком случае я повторил Ваш эксперимент и с IDE у меня все нормально 

хм, странно. Я проверил на трёх машинах. Может отличен билд? И в вашем этот баг фиксен...

Цитата

Расширение файла значения не имеет.

Спасибо, а то я то дурак не знал smile

Цитата

удалите *.ОБЖ-файлы

без разницы, всё равно баг вылезает...

Цитата

На счет палений - это не баг ИДЕ. это, извините, кривые руки.

А я говорю - баг. И руки в данном случае руки кривые не у меня.

Вот несколько нюансов, какие я заметил:
При смене с цпп обратно на хидер, т.е. перед тем как появлиться баг, если убить все обжы баг вылезает, но если поменять настройки иде такие как убрать/включить кодегуард, или поменять с релиза на дебаг или наоборот баг не появляется.
Ещё нюанс, код второго модуля должен быть в точности как ниже - 
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h" // именно эту строку мы меняем в цпп, компилим, меняем обратно, компилим - должен быть баг )

//---------------------------------------------------------------------------
#pragma package(smart_init)

#pragma resource "*.dfm"

TForm2 *Form2;


//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)
{
  Form1->Show();  
}
//---------------------------------------------------------------------------

Если строку #include "Unit1.h" поместить ниже #pragma package(smart_init) бага не будет...

Вообщем ладна, тема в принципе ни о чём.. можно на этом закончить расуждения... но если у кого то с таким же билдом и при таких же действиях бага не будет, я только одно смогу сказать - мистика smile

P.S. Vyacheslav, вы всё спрашиваете что значит загибается: сначала такая хрень, как при сработанном ассерте потом любимое окно Отправлять/Не отправлять причём если тыркать Не отправлять оно будет появляться сново и снова и тут тока три кнопки в помощь smile

PM MAIL   Вверх
Vyacheslav
Дата 3.11.2006, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Все равно непонятно. Есть программа, есть Builder(тоже программа). Ваша программа падает. Это понятно. А Builder когда падает? Когда Вы пытаетесь собрать программу, когда пытаетесь запустить на выполнение из Builder или просто в момент редактирования кода?
Что Вы запускали, когда пытались построить приложение Make или Build?
Хотелось бы и получить текст ошибки, выдаваемой при этом.

Ну и последнее. Builder как и любая программа имеет ошибки. Я сам несколько ошибок отрепортил Borland'у и часть из них получили  весьма высокий рейтинг. Но те ошибки были получены в результате работы, а не в результате непонятных экспериментов.  Так что увлекаться поиском багов подобным образом не стоит. 






--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Teran
Дата 3.11.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(GolIy @  3.11.2006,  08:12 Найти цитируемый пост)
но если поменять настройки иде такие как убрать/включить кодегуард, или поменять с релиза на дебаг или наоборот баг не появляется.

При изменении таких настроек автоматически удаляюстя все *.obj файлы и сам exe
попробуй проделать такоеже вручную и запустить заново


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
GolIy
Дата 3.11.2006, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



сначала окно с мессагой
Assertion failed: 0, file C:\src\ilink\modmap.c, line 177
затем
Abnormal program termination

Если это был Run то ещё вылезет отправлять/не отправлять...

По Build бага нет, по Make есть.

Баг вылезает именно на том моменте когда должно появиться Make done. Но оно не появляется, а вылазят окна что описал выше....

Насчёт вашего последнего абзаца, я абсолютно с вами согласен, за исключением того, что  
Цитата

Но те ошибки были получены в результате работы, 

Я тоже её получил в результате работы, у меня не было такого желания - найти баг smile нафик мне они нужны... эксперименты эти... 
Вообщем я жалею, что вообще создал тему, тем более что ни у кого больше не возникает такого... Видать я не так тыркаю ф9 smile


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

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

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

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

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


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

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


 




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


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

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