Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Из простого С в билдер???

2.7K
16 декабря 2004 года
sys33
55 / / 16.12.2004
Есть исходник проги на с, хочу перенести в билдер...

переношу данный текст в:

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... КАК ТАК ПОЛУЧАЕТСЯ?
259
16 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by sys33
Есть исходник проги на с, хочу перенести в билдер...

переношу данный текст в:

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 __fastcall TForm1::FormCreate(TObject *Sender)
{
//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 )
{
    тоже код... бла бла бла
}

2.7K
16 декабря 2004 года
sys33
55 / / 16.12.2004
br /> 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 );
UDB();
return 0;
} //конец метода FormCreate

void UDB( void )
{
тоже код... бла бла бла
}


Значит получается мне нужно в одном юните, главном... у меня это unit1, написать код main, потом создать второй юнит, туда загнать мой UDB, так получаеца? а что делать с ссыслкой на UDB в мэйне??? на что ее менять?

259
16 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by sys33

Значит получается мне нужно в одном юните, главном... у меня это unit1, написать код main, потом создать второй юнит, туда загнать мой UDB, так получаеца? а что делать с ссыслкой на UDB в мэйне??? на что ее менять?


Нет main у тебя создается автоматически, когда ты создаешь проект. А все остальное в т.ч. и Unit1 это уже дальше. Посмотри внимательно в директории с проектом все файлы *.cpp.

2.7K
16 декабря 2004 года
sys33
55 / / 16.12.2004
Цитата:
Originally posted by AlexandrVSmirno

Нет main у тебя создается автоматически, когда ты создаешь проект. А все остальное в т.ч. и Unit1 это уже дальше. Посмотри внимательно в директории с проектом все файлы *.cpp.


Извини, но я не до конца понял, куда что писать, то есть так... у меня есть файлы с расширением cpp и h... так вот в файле с расширением h мне надо записать код, что был в фукции main? полсе void __fastcall FormCreate(TObject *Sender);?
и как отделить main от функции UDB? как тогда реализовать связь между UDB и мейн? извини за дурацкие вопросы, но как я уже писал в этих вещах я пока ламер...

368
16 декабря 2004 года
rostyslav
629 / / 13.07.2004
В Unit1.h в классе TForm1 определи ф-ии
void main();
void UDB();

В Unit1.cpp напиши

void TForm1::main()
{
... код
}

void TForm1::UDB()
{
... код
}

можно вызвать main() в FormCreate, но наверно лучше поместить кнопку на форму и взвать main() в OnClick() обработчике.
310
16 декабря 2004 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by sys33

Извини, но я не до конца понял, куда что писать, то есть так... у меня есть файлы с расширением 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

2.7K
16 декабря 2004 года
sys33
55 / / 16.12.2004
Цитата:
Originally posted by fellow

Лучше всего для новичка - почитать толковую книгу. Благо сейчас их достаточно. Например:
1) Ч.Калверт, К.Рейсдорф "Borland C++ Builder 5"
2) Джарод Холингвэрт, Дэн Баттерфилд, Боб Сворт, Джэйми Оллсоп "C++Builder 5. Руководство разработчика" в 2-х томах.

Архангельского не рекомендую: этот "писатель" большой мастер переписывать хелп. И только.

Вот, кстати, если не лень качать 15М, то текст второй книги на русском языке: http://anatolix.naumen.ru/Books/BCBDevGuide?v=qwt


Архангельского к сожалению я уже купил:(((((

2.7K
16 декабря 2004 года
sys33
55 / / 16.12.2004
Цитата:
Originally posted by rostyslav
В Unit1.h в классе TForm1 определи ф-ии
void main();
void UDB();

В Unit1.cpp напиши

void TForm1::main()
{
... код
}

void TForm1::UDB()
{
... код
}

можно вызвать main() в FormCreate, но наверно лучше поместить кнопку на форму и взвать main() в OnClick() обработчике.


Я так сделал, но у меня в UDB есть переменные которые я задаю в функции main и мне пишется ошибка, что необходимо эти переменные задать, где мне их задать, чтобы они были доступны для UDB??? Спасибо всем откликнувшимся!

310
16 декабря 2004 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by sys33

Архангельского к сожалению я уже купил:(((((



Продай ламеру какому-нибудь :D

301
16 декабря 2004 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by fellow

Продай ламеру какому-нибудь :D


Оффтоп:
sys33, не обижайся, но по-моему имелосьб в виду другому ламеру:D

301
16 декабря 2004 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by sys33

Я так сделал, но у меня в UDB есть переменные которые я задаю в функции main и мне пишется ошибка, что необходимо эти переменные задать, где мне их задать, чтобы они были доступны для UDB??? Спасибо всем откликнувшимся!


Задай их глобально. (Вне всех функций)
Спасибо оставь при себе до тех пор, пока не разберешься.

368
16 декабря 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by sys33

Я так сделал, но у меня в UDB есть переменные которые я задаю в функции main и мне пишется ошибка, что необходимо эти переменные задать, где мне их задать, чтобы они были доступны для UDB??? Спасибо всем откликнувшимся!


Можно глобально, напр. в cpp-модуле перед void TForm1::main().

Или задать их как элементы TForm1. Для этого нужно определить их в .h файле, где определяются ф-ии main() и UDB().

2.7K
17 декабря 2004 года
sys33
55 / / 16.12.2004
Цитата:
Originally posted by rostyslav
В 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
Как с этим быть?

368
17 декабря 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by sys33

потом создаю на форме кнопку и для щелчка на ней в 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();
}

246
17 декабря 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:


COOL!!!!!!!!

259
17 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by rostyslav


Нужно написать отдельно
void TForm1::main()
{
.....
}
void TForm1::UDB()
{
...
}

а обработчик

void __fastcall TForm1::Button1Click(TObject *Sender)
{
main();
}



Да переименуйте вы эту main. Ну незя в С++ две main. Reserved это слово. Назовите mymain и все.

ЗЫ: Если ящик позволяет могу кинуть очень хорошую книгу для начинающих. Называется "Энциклопедия CBuilder".

368
17 декабря 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by AlexandrVSmirno


Да переименуйте вы эту main. Ну незя в С++ две main. Reserved это слово. Назовите mymain и все.


main - это в Dos-e. В Windows WinMain. Если все правильно написать, то код с main работает.

3
17 декабря 2004 года
Green
4.8K / / 20.01.2000
Я чего-то не понимаю...
За чем все эти извращения с TForm?
Билдер не позволяет компилировать обычные консольные проги?
Бред какой-то...
259
17 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Green
Я чего-то не понимаю...
За чем все эти извращения с TForm?
Билдер не позволяет компилировать обычные консольные проги?
Бред какой-то...



Да не консольные. Просто товарищ осваивает СБилдер. И осваивает его методом переноса уже написанных прог на С в среду Билдера, что на самом деле не так уж и просто. От структурного программирования перейти к ООП. Я когда переходил было ощущение, что стою на голове, а потолок внизу.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог