Из простого С в билдер???
переношу данный текст в:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
void UDB( void );
int main( void )
{
FILE *fil;
fil = fopen( RES_FILE, "w" );
fprintf( fil, " ÂÒÏ \n");
дальше идет код.....бла бла бла ....
theEnd:
;
}
}
fclose( fil );
return 0;
}
void UDB( void )
{
тоже код... бла бла бла
}
}
при компиляции находит ошибки, а именно в строке с main, точнее сразу полсе нее пишет Declaration syntax error... КАК ТАК ПОЛУЧАЕТСЯ?
Есть исходник проги на с, хочу перенести в билдер...
переношу данный текст в:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
void UDB( void );
int main( void )
{
FILE *fil;
fil = fopen( RES_FILE, "w" );
fprintf( fil, " ÂÒÏ \n");
дальше идет код.....бла бла бла ....
theEnd:
;
}
}
fclose( fil );
return 0;
}
void UDB( void )
{
тоже код... бла бла бла
}
}
при компиляции находит ошибки, а именно в строке с main, точнее сразу полсе нее пишет Declaration syntax error... КАК ТАК ПОЛУЧАЕТСЯ?
Проект на Билдере состоит из нескольких файлов. Они называются Unit-ы. В главном юните уже есть процедура main. Так что второй раз ее определять не надо.
void __fastcall TForm1::FormCreate(TObject *Sender) метод объекта класса TForm выполняющийся при создании формы в проекте. Как правило каждая форма находится в отдельном юните. Так что ты попытался весь свой код на С запихнуть и выполнить при создании формы. Кроме того предопределение функций внутри тела функции (метода) не допустимо. Это нужно делать в h файле. Так что void UDB(void) тоже нужно убрать.
И выглядит все должно приблизительно так:
{
//void UDB( void );
//int main( void )
// {
FILE *fil;
fil = fopen( RES_FILE, "w" );
fprintf( fil, " ÂÒÏ \n");
дальше идет код.....бла бла бла ....
theEnd:
;
// }
// }
fclose( fil );
UDB();
return 0;
} //конец метода FormCreate
void UDB( void )
{
тоже код... бла бла бла
}
{
//void UDB( void );
//int main( void )
// {
FILE *fil;
fil = fopen( RES_FILE, "w" );
fprintf( fil, " ÂÒÏ \n");
дальше идет код.....бла бла бла ....
theEnd:
;
// }
// }
fclose( fil );
UDB();
return 0;
} //конец метода FormCreate
void UDB( void )
{
тоже код... бла бла бла
}
Значит получается мне нужно в одном юните, главном... у меня это unit1, написать код main, потом создать второй юнит, туда загнать мой UDB, так получаеца? а что делать с ссыслкой на UDB в мэйне??? на что ее менять?
Значит получается мне нужно в одном юните, главном... у меня это unit1, написать код main, потом создать второй юнит, туда загнать мой UDB, так получаеца? а что делать с ссыслкой на UDB в мэйне??? на что ее менять?
Нет main у тебя создается автоматически, когда ты создаешь проект. А все остальное в т.ч. и Unit1 это уже дальше. Посмотри внимательно в директории с проектом все файлы *.cpp.
Нет main у тебя создается автоматически, когда ты создаешь проект. А все остальное в т.ч. и Unit1 это уже дальше. Посмотри внимательно в директории с проектом все файлы *.cpp.
Извини, но я не до конца понял, куда что писать, то есть так... у меня есть файлы с расширением cpp и h... так вот в файле с расширением h мне надо записать код, что был в фукции main? полсе void __fastcall FormCreate(TObject *Sender);?
и как отделить main от функции UDB? как тогда реализовать связь между UDB и мейн? извини за дурацкие вопросы, но как я уже писал в этих вещах я пока ламер...
void main();
void UDB();
В Unit1.cpp напиши
void TForm1::main()
{
... код
}
void TForm1::UDB()
{
... код
}
можно вызвать main() в FormCreate, но наверно лучше поместить кнопку на форму и взвать main() в OnClick() обработчике.
Извини, но я не до конца понял, куда что писать, то есть так... у меня есть файлы с расширением cpp и h... так вот в файле с расширением h мне надо записать код, что был в фукции main? полсе void __fastcall FormCreate(TObject *Sender);?
и как отделить main от функции UDB? как тогда реализовать связь между UDB и мейн? извини за дурацкие вопросы, но как я уже писал в этих вещах я пока ламер...
Лучше всего для новичка - почитать толковую книгу. Благо сейчас их достаточно. Например:
1) Ч.Калверт, К.Рейсдорф "Borland C++ Builder 5"
2) Джарод Холингвэрт, Дэн Баттерфилд, Боб Сворт, Джэйми Оллсоп "C++Builder 5. Руководство разработчика" в 2-х томах.
Архангельского не рекомендую: этот "писатель" большой мастер переписывать хелп. И только.
Вот, кстати, если не лень качать 15М, то текст второй книги на русском языке: http://anatolix.naumen.ru/Books/BCBDevGuide?v=qwt
Лучше всего для новичка - почитать толковую книгу. Благо сейчас их достаточно. Например:
1) Ч.Калверт, К.Рейсдорф "Borland C++ Builder 5"
2) Джарод Холингвэрт, Дэн Баттерфилд, Боб Сворт, Джэйми Оллсоп "C++Builder 5. Руководство разработчика" в 2-х томах.
Архангельского не рекомендую: этот "писатель" большой мастер переписывать хелп. И только.
Вот, кстати, если не лень качать 15М, то текст второй книги на русском языке: http://anatolix.naumen.ru/Books/BCBDevGuide?v=qwt
Архангельского к сожалению я уже купил:(((((
В Unit1.h в классе TForm1 определи ф-ии
void main();
void UDB();
В Unit1.cpp напиши
void TForm1::main()
{
... код
}
void TForm1::UDB()
{
... код
}
можно вызвать main() в FormCreate, но наверно лучше поместить кнопку на форму и взвать main() в OnClick() обработчике.
Я так сделал, но у меня в UDB есть переменные которые я задаю в функции main и мне пишется ошибка, что необходимо эти переменные задать, где мне их задать, чтобы они были доступны для UDB??? Спасибо всем откликнувшимся!
Архангельского к сожалению я уже купил:(((((
Продай ламеру какому-нибудь :D
Продай ламеру какому-нибудь :D
Оффтоп:
sys33, не обижайся, но по-моему имелосьб в виду другому ламеру:D
Я так сделал, но у меня в UDB есть переменные которые я задаю в функции main и мне пишется ошибка, что необходимо эти переменные задать, где мне их задать, чтобы они были доступны для UDB??? Спасибо всем откликнувшимся!
Задай их глобально. (Вне всех функций)
Спасибо оставь при себе до тех пор, пока не разберешься.
Я так сделал, но у меня в UDB есть переменные которые я задаю в функции main и мне пишется ошибка, что необходимо эти переменные задать, где мне их задать, чтобы они были доступны для UDB??? Спасибо всем откликнувшимся!
Можно глобально, напр. в cpp-модуле перед void TForm1::main().
Или задать их как элементы TForm1. Для этого нужно определить их в .h файле, где определяются ф-ии main() и UDB().
В Unit1.h в классе TForm1 определи ф-ии
void main();
void UDB();
В Unit1.cpp напиши
void TForm1::main()
{
... код
}
void TForm1::UDB()
{
... код
}
можно вызвать main() в FormCreate, но наверно лучше поместить кнопку на форму и взвать main() в OnClick() обработчике.
Я делаю так в unit1.cpp пишу:
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public:
#define RES_FILE "dfh.rez"
#define PI 3.141592654
#define sqr(x) pow((x),2)
#define ABS(x) (x)*((x)<0 ? (-1):1)
double cgm[50];
double f,sl,ri,fir,fi,e,er,v,vr,x,xr,ce,re,r,r0,sp,
h,hf,hl,hd,h0,hb,hbr,hh,hn,b,c,cc,bf,bl,sl3,p,
Y1,Y1F,Y1AF,Y2,Y2F,Y2AF,YDF,YDAF,YD,sk,
Y,Y3,YAF,YF,D,DB08,F08,AF08,DB12,F12,AF12,
U,U1,U2,UF,UAFA,cg;
int j1,j2,j4; // User declarations
void main();
void UDB();
__fastcall TForm1(TComponent* Owner);
};
потом создаю на форме кнопку и для щелчка на ней в unit1.cpp записываю:
void TForm1::main()
{
.....
}
void TForm1::UDB()
{
...
}
выдает ошибку на строке с void TForm1::main()
Identifier 'main' cannot have a type qualifier
Как с этим быть?
потом создаю на форме кнопку и для щелчка на ней в unit1.cpp записываю:
void TForm1::main()
{
.....
}
void TForm1::UDB()
{
...
}
выдает ошибку на строке с void TForm1::main()
Identifier 'main' cannot have a type qualifier
Как с этим быть?
Нужно написать отдельно
void TForm1::main()
{
.....
}
void TForm1::UDB()
{
...
}
а обработчик
void __fastcall TForm1::Button1Click(TObject *Sender)
{
main();
}
COOL!!!!!!!!
Нужно написать отдельно
void TForm1::main()
{
.....
}
void TForm1::UDB()
{
...
}
а обработчик
void __fastcall TForm1::Button1Click(TObject *Sender)
{
main();
}
Да переименуйте вы эту main. Ну незя в С++ две main. Reserved это слово. Назовите mymain и все.
ЗЫ: Если ящик позволяет могу кинуть очень хорошую книгу для начинающих. Называется "Энциклопедия CBuilder".
Да переименуйте вы эту main. Ну незя в С++ две main. Reserved это слово. Назовите mymain и все.
main - это в Dos-e. В Windows WinMain. Если все правильно написать, то код с main работает.
За чем все эти извращения с TForm?
Билдер не позволяет компилировать обычные консольные проги?
Бред какой-то...
Я чего-то не понимаю...
За чем все эти извращения с TForm?
Билдер не позволяет компилировать обычные консольные проги?
Бред какой-то...
Да не консольные. Просто товарищ осваивает СБилдер. И осваивает его методом переноса уже написанных прог на С в среду Билдера, что на самом деле не так уж и просто. От структурного программирования перейти к ООП. Я когда переходил было ощущение, что стою на голове, а потолок внизу.