C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

стр.: (3) < [1] 2 3 >
Нужна помощь (Уравновешанных людей) :), Проблемы с примерами в C++ Builder 6
NEOBIR
Отправлено: 20.04.2004, 09:05


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Хочу начать изучать С++
Накачал/купил книг, стоит Builder 6 но примеры, не компилируются, выдают ошибки, или у меня билдер не настроен или в книгаз синтаксис другой, и я никак не могу сообразить в чем дело sad.gif

Подскажите знающие люди что я не так пишу в билдер 6 или какую-нибудь литературу конкрентно для 6 ????

Очень нужно а то замаялся уже бится с ним.
olegenty
Отправлено: 20.04.2004, 09:12


Ветеран

Группа: Модератор
Сообщений: 2412



публикуй неработающий код и сообщения об ошибках. разберёмся smile.gif .
** NEOBIR
Отправлено: 20.04.2004, 09:40


Не зарегистрирован







Вот самый первый приммер, из книги Страустрапа:

#include

main()
{
cout << "Hello, world\n"; }
билдер пишет:

[C++ Error] Unit1.cpp(1): E2046 Bad file name format in include directive
[C++ Error] Unit1.cpp(5): E2451 Undefined symbol 'cout'

я заменил #include на #include
стал писать это:

Build
[Linker Error] Unresolved external '_Form1' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT1.OBJ
[Linker Error] Unresolved external 'TForm1::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT1.OBJ


также не работают примеры из книги "С++ для чайников" Стефан Р. Дэвис.
самый первый пример про температуру:

#include
#include
int main (int nNumberofArgs, char*pszArgs[])

{
int nNCelsius;
cout <<"Input temperature by Celsius: ";
cin>> nNCelsius;

int nNFactor;
nNFactor=212-32;

int nFahrenheit;
nFahrenheit=nNFactor*nNCelsius/100+32;

cout <<"Temperature by Fahrenheit: ";
cout << nFahrenheit;

return 0;
}

пишет тоже самое:

[Linker Error] Unresolved external '_Form1' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT1.OBJ
[Linker Error] Unresolved external 'TForm1::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT1.OBJ


какие будут идеи/соображения?
Gedeon
Отправлено: 20.04.2004, 09:42


Ветеран

Группа: Модератор
Сообщений: 1742



Если надо именно по билдеру, вот перед глазами лежит книга, недавно перелистывал на собрании biggrin.gif , ничего, толковая.
А.Я. Архангельский "Программирование в C++ Builder 5", то что для 5 не пугайся, оно все справедливо и для 6.
NEOBIR
Отправлено: 20.04.2004, 09:47


Дежурный стрелочник

Группа: Участник
Сообщений: 31



ААА хтмыл порезал скобки треугольные

Вот самый первый приммер, из книги Страустрапа(скачана с этого сайта):
CODE

#include

 main()
 {
     cout << "Hello, world\n"; }

билдер пишет:

[C++ Error] Unit1.cpp(1): E2046 Bad file name format in include directive
[C++ Error] Unit1.cpp(5): E2451 Undefined symbol 'cout'

я заменил #include на #include < iostream.h>
стал писать это:

Build
[Linker Error] Unresolved external '_Form1' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT1.OBJ
[Linker Error] Unresolved external 'TForm1::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT1.OBJ


также не работают примеры из книги "С++ для чайников" Стефан Р. Дэвис.
самый первый пример про температуру:
CODE

#include <stdio.h>
#include <iostream.h>
int main (int nNumberofArgs, char*pszArgs[])

{
int nNCelsius;
cout <<"Input temperature by Celsius: ";
cin >> nNCelsius;

int nNFactor;
nNFactor=212-32;

int nFahrenheit;
nFahrenheit=nNFactor*nNCelsius/100+32;

cout <<"Temperature by Fahrenheit: ";
cout << nFahrenheit;

return 0;
}

пишет тоже самое:

[Linker Error] Unresolved external '_Form1' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT1.OBJ
[Linker Error] Unresolved external 'TForm1::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT1.OBJ


какие будут идеи/соображения?

Отредактировано NEOBIR — 20/04/2004, 12:01
NEOBIR
Отправлено: 20.04.2004, 09:50


Дежурный стрелочник

Группа: Участник
Сообщений: 31



QUOTE (Gedeon @ 20/04/2004, 10:44)
Если надо именно по билдеру, вот перед глазами лежит книга, недавно перелистывал на собрании biggrin.gif , ничего, толковая.
А.Я. Архангельский "Программирование в C++ Builder 5", то что для 5 не пугайся, оно все справедливо и для 6.

а можно ли ее найти в электронном варианте, скачать гденить?
а то я далеко от родины wink.gif
Gedeon
Отправлено: 20.04.2004, 10:02


Ветеран

Группа: Модератор
Сообщений: 1742



На счет этой не знаю где, но вот про электронный вариант вспомнил про эту К. Рейсдорф "Освой самостоятельно Borland C++Builder" как раз для начинающих, она и многие другие
тут
Что касается ваших не работающих примеров, то они для консольного приложения, для того чтобы его создать: File->New->Other... и там выбираете ConsoleWizard, в нем с параметрами я думаю разберетесь. И еще просьба разберитесь как пользоваться тэгами CODE, ато совершенно не понятно что вы инклудите.
И еще один небольшой совет, чтобы любоваться своим творчеством, если прога запускается не в фаре(например), то она выполняется и завершается, поэтому
CODE

#include <conio.h> // это включите
........... // тут ваш код
   getch(); // просто остановка, ввод любого символа
   return 0; // выход из программы
olegenty
Отправлено: 20.04.2004, 10:51


Ветеран

Группа: Модератор
Сообщений: 2412



Как и сказал Gedeon — приложение консольное. VCL и Muiltithreaded отключи нафиг, для примеров это не надо...

CODE

#include <conio.h>
#include <iostream.h>

#pragma hdrstop

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

#pragma argsused
int main(int argc, char* argv[])
{
   int nNCelsius;
   cout <<"Input temperature by Celsius: ";
   cin >> nNCelsius;

   int nNFactor;
   nNFactor=212-32;

   int nFahrenheit;
   nFahrenheit=nNFactor*nNCelsius/100+32;

   cout <<"Temperature by Fahrenheit: ";
   cout << nFahrenheit;

   getch();
   return 0;
}
//---------------------------------------------------------------------------


работает именно так, как и положено...
NEOBIR
Отправлено: 20.04.2004, 11:02


Дежурный стрелочник

Группа: Участник
Сообщений: 31



QUOTE (Gedeon @ 20/04/2004, 11:04)
На счет этой не знаю где, но вот про электронный вариант вспомнил про эту К. Рейсдорф "Освой самостоятельно Borland C++Builder" как раз для начинающих, она и многие другие
тут
Что касается ваших не работающих примеров, то они для консольного приложения, для того чтобы его создать: File->New->Other... и там выбираете ConsoleWizard, в нем с параметрами я думаю разберетесь. И еще просьба разберитесь как пользоваться тэгами CODE, ато совершенно не понятно что вы инклудите.
И еще один небольшой совет, чтобы любоваться своим творчеством, если прога запускается не в фаре(например), то она выполняется и завершается, поэтому
CODE

#include <conio.h> // это включите
........... // тут ваш код
getch(); // просто остановка, ввод любого символа
return 0; // выход из программы

спасибо за ссылку, уже скачал.

и скобки сделал
NEOBIR
Отправлено: 20.04.2004, 11:06


Дежурный стрелочник

Группа: Участник
Сообщений: 31



так, а что такое "консольное" это значит не для винды? (вин32)

и откуда взялись эти команды:
CODE

#include <conio.h>
#include <iostream.h>

#pragma hdrstop

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

#pragma argsused


как знать когда их нада прописывать а когда нет?
и где и как настраивать?
olegenty
Отправлено: 20.04.2004, 11:29


Ветеран

Группа: Модератор
Сообщений: 2412



для начала относись к ним, как к данности...

#pragma hdrstop — завершает список кэшируемых хэдеров. специфично для С++ Builder

Консольное не значит "не для винды", а значит, что не имеет главного графического окна. Far, например, чисто под винды, при этом консолен.

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

Кстати, тебе ещё рано читать про Builder, сначала освой сам язык...

P.S. Как же я доволен, что пришлось в ранней молодости начинать с досовского программирования... MODULA2, Pascal, С, С++, ASM, и уже только потом Delphi/С++ Builder/VB/VС++
Gedeon
Отправлено: 20.04.2004, 11:32


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (NEOBIR @ 20/04/2004, 12:08)
так, а что такое "консольное" это значит не для винды? (вин32)

Для винды просто с командной строкой и без окон(их можно и показывать, когда надо), так намного лучше изучать основы языка, не заморачиваясь на интерфейс.
QUOTE

и откуда взялись эти команды:
CODE

#include <conio.h>
#include <iostream.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused

как знать когда их нада прописывать а когда нет?
и где и как настраивать?


Директива #include обрабатывается препроцессором, работа которого сводится к тому, что директива убирается из текста и на ее место заносится копия указанного файла.

Директива #pragma hdrstop указывает препроцессору на конец заголовочных файлов общих для всех модулей.

Директива #pragma argsused запрещает показ С++Warning::Parameter name is never used in function func-name — это так примерное сообщение.

Но вообще лучше читайте книги и хэлп.
olegenty
Отправлено: 20.04.2004, 11:33


Ветеран

Группа: Модератор
Сообщений: 2412



вот ссылка на рекомендованную мной выше книгу:
http://htmlbook.h1.ru/
NEOBIR
Отправлено: 20.04.2004, 11:39


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Хорошо, понял,
всем спасибо, накачал еще книг буду читать.
Если что, сильно не пинайте wink.gif
NEOBIR
Отправлено: 20.04.2004, 11:44


Дежурный стрелочник

Группа: Участник
Сообщений: 31



и еще,
вот вы все говорите что мол рано начинать с билдера итд,
а в чем пробовать примеры(в какой среде) хотяб из тех же книг Страустрапа ????
чтоб не заморачиваться как в билдере на консольные/неконсольные ???
чтоб сразу из книги ввести пример и ненадо был оничего дорабаывать?

Отредактировано NEOBIR — 20/04/2004, 12:54
Gedeon
Отправлено: 20.04.2004, 12:01


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (NEOBIR @ 20/04/2004, 12:46)
и еще,
вот вы все говорите что мол рано начинать с билдера итд,
а в чем пробовать примеры(в какой среде) хотяб из тех же книг Страустрапа ????
чтоб не заморачиваться как в билдере на консольные/неконсольные ???
чтоб сразу из книги ввести пример и ненадо был оничего дорабаывать?

рано начинать с билдера итд — это я так понимаю имелось ввиду не сама среда разработки, а GUI интерфейс к программам(кнопки там и т.д.), это все действительно лучше немного позже, после того, как начнете понимать основы языка(кстати по поводу С++ вспомнил еще одну книгу, которая кстати лучшая из того, что я читал, по крайней мере при первом знакомстве с плюсами: Г. Шилдт "Самоучитель С++" 2 издание). Для изучения примеров пользуйтесь билдэром, по крайней мере привыкнете к самой среде разработки.
olegenty
Отправлено: 20.04.2004, 12:19


Ветеран

Группа: Модератор
Сообщений: 2412



да, я и имел в виду неиспользование GUI.

создавай все приложения консольными без VCL и многопоточности, и всё будет работать, как часы. не забывай совет Gedeon'а — вставляй
CODE

getch();

везде, где хочешь приостановить выполнение программы и полюбоваться результатами своей работы.
NEOBIR
Отправлено: 20.04.2004, 12:50


Дежурный стрелочник

Группа: Участник
Сообщений: 31



тоесть, File->New->Other->ConsoleWizard, там отключить VCL и многопоточность(оставить только галку где консоль), а дальше непосредственно сам код примера, и все будет работать?

Gedeon
Отправлено: 20.04.2004, 13:18


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (NEOBIR @ 20/04/2004, 13:52)
тоесть, File->New->Other->ConsoleWizard, там отключить VCL и многопоточность(оставить только галку где консоль), а дальше непосредственно сам код примера, и все будет работать?

Будет работать, если правильно наберете примеры и сделаете все include, в общем пробуйте, не помню откуда цитата, но: "Лучший способ выучить язык программирования — это писать на нем программы", ну а если что-то конкретное получаться не будет, тогда спрашивайте поможем.
olegenty
Отправлено: 20.04.2004, 13:29


Ветеран

Группа: Модератор
Сообщений: 2412



угу, будет smile.gif
Георгий
Отправлено: 20.04.2004, 20:28


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



на моей памяти это рекорд — 19 сообщений за 2.5 часа!!
Вот, еслибы в юмор такой же поток сообщений был бы...
Doga
Отправлено: 20.04.2004, 20:44


Мастер участка

Группа: Участник
Сообщений: 575



biggrin.gif
olegenty
Отправлено: 21.04.2004, 08:55


Ветеран

Группа: Модератор
Сообщений: 2412



не, и всё равно начинать сразу под виндой, это СТОЛЬКО пропустить... (касаемо базовых знаний архитектуры компа...)
интересно, молодые вообще в курсе, что такое буфер экрана в текстовом режиме? ))))) сколько в нём страниц, как организовывать перерисовку и т.д...
Gedeon
Отправлено: 21.04.2004, 10:37


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (olegenty @ 21/04/2004, 09:57)
не, и всё равно начинать сразу под виндой, это СТОЛЬКО пропустить... (касаемо базовых знаний архитектуры компа...)
интересно, молодые вообще в курсе, что такое буфер экрана в текстовом режиме? ))))) сколько в нём страниц, как организовывать перерисовку и т.д...

А может оно и не надо то? Для этого то и появились высокоуровневые языки, или всем начинать тогда вообще с ассемблера надо?
olegenty
Отправлено: 21.04.2004, 11:04


Ветеран

Группа: Модератор
Сообщений: 2412



при работе с БД можно обойтись, иначе — вопрос... smile.gif
Иван
Отправлено: 21.04.2004, 21:35


Машинист паровоза

Группа: Участник
Сообщений: 207



А чем не подходит для изучения С++, — Turbo C++ 3.0 работает под ДОСом — чистый С++! smile.gif если надо могу инсталяцию выслать.
Согласен с olegenty и Gedeon на счет того что сначала было бы лучше выучить C++.
По себе знаю: сам перешел на Builder после того как начал учить С в универе, спешил писать "проги с кнопками", сколько не понятных строк было в коде ohmy.gif и честно говоря принимал их как говорит olegenty "как данность".
В общем если нужна инсталяция (Turbo C++ 3.0) пишите.
Честно говоря, сам еще учу С++ много чего еще не знаю sad.gif
gauldot
Отправлено: 21.04.2004, 22:28


Ученик-кочегар

Группа: Участник
Сообщений: 22



QUOTE
А чем не подходит для изучения С++, — Turbo C++ 3.0 работает под ДОСом — чистый С++!

Тогда уж лучше Borland C++ 3.11 (а не Turbo) — намного большая функциональность
olegenty
Отправлено: 22.04.2004, 06:38


Ветеран

Группа: Модератор
Сообщений: 2412



вот с Borland С++ 3.11 всё и начиналось... инсталл в архиве на 20 метров...
NEOBIR
Отправлено: 22.04.2004, 16:33


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Ну вот, это опять я cool.gif
опять родился глюк, в книге есть пример показывающий работу некоторых операторов, все вроде работет но результат не совпадает с результатом в книге, в книге он показан в 16тиричнов виде, а у меня почему то нет wink.gif думаю виной всему, эта строка
CODE

cout.setf(ios::hex);

вот полный код примера:
CODE

#include<conio.h>
#pragma hdrstop
#pragma argsused

// BitTest — инициируются две переменные и
//           выводятся результаты выполнения
//           операторов ~,&,|,^

#include<stdio.h>
#include<iostream.h>

int main(int nArg, char*pszArgs[])
{
// установка вывода в шестнадцатеричном виде
cout.setf(ios::hex);
// инициализация двух аргументов
int nArg1= 0x1234;
int nArg2= 0x00ff;

// Выполнение логических операций
// Сначала применяем унарный оператор NOT
cout <<"Arg1           =0x" << nArg1 <<"\n";
cout <<"Arg2           =0x" << nArg2 <<"\n";
cout <<"~nArg1         =0x" << ~nArg1 <<"\n";
cout <<"~nArg2         =0x" << ~nArg2 <<"\n";

// Теперь — бинарные операторы
cout << "nArg1&nArg2=0x"
    << (nArg1&nArg2)
    << "\n";
cout << "nArg1|nArg2=0x"
    << (nArg1|nArg2)
    << "\n";
cout << "nArg1^nArg2=0x"
    << (nArg1^nArg2)
    << "\n";
getch();
return 0;
}

пробовал в турбо 3,0 там ваще ошибку выдает типа:
iostream.h 19: Error directive: Must use C++ for the type iostream

код такой же.

Какие будут соображения???

Кстати мож кто выложит 3,11 илиссылку даст???

NEOBIR
Отправлено: 23.04.2004, 11:14


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Аууууу, ГУРУ !!!
ну что идей не будет ????
стр.: (3) < [1] 2 3 >
Вернуться в Вопросы программирования в C++Builder