NEOBIR |
Отправлено: 20.04.2004, 09:05 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 31
|
Хочу начать изучать С++
Накачал/купил книг, стоит Builder 6 но примеры, не компилируются, выдают ошибки, или у меня билдер не настроен или в книгаз синтаксис другой, и я никак не могу сообразить в чем дело
Подскажите знающие люди что я не так пишу в билдер 6 или какую-нибудь литературу конкрентно для 6 ????
Очень нужно а то замаялся уже бится с ним. |
|
olegenty |
Отправлено: 20.04.2004, 09:12 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
публикуй неработающий код и сообщения об ошибках. разберёмся .
|
|
** 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
|
Если надо именно по билдеру, вот перед глазами лежит книга, недавно перелистывал на собрании , ничего, толковая.
А.Я. Архангельский "Программирование в 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) | Если надо именно по билдеру, вот перед глазами лежит книга, недавно перелистывал на собрании , ничего, толковая.
А.Я. Архангельский "Программирование в C++ Builder 5", то что для 5 не пугайся, оно все справедливо и для 6. |
а можно ли ее найти в электронном варианте, скачать гденить?
а то я далеко от родины |
|
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
|
Хорошо, понял,
всем спасибо, накачал еще книг буду читать.
Если что, сильно не пинайте |
|
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'а — вставляй
везде, где хочешь приостановить выполнение программы и полюбоваться результатами своей работы.
|
|
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
|
угу, будет
|
|
Георгий |
Отправлено: 20.04.2004, 20:28 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
на моей памяти это рекорд — 19 сообщений за 2.5 часа!!
Вот, еслибы в юмор такой же поток сообщений был бы... |
|
Doga |
Отправлено: 20.04.2004, 20:44 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
|
|
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
|
при работе с БД можно обойтись, иначе — вопрос...
|
|
Иван |
Отправлено: 21.04.2004, 21:35 |
|
Машинист паровоза
Группа: Участник
Сообщений: 207
|
А чем не подходит для изучения С++, — Turbo C++ 3.0 работает под ДОСом — чистый С++! если надо могу инсталяцию выслать.
Согласен с olegenty и Gedeon на счет того что сначала было бы лучше выучить C++.
По себе знаю: сам перешел на Builder после того как начал учить С в универе, спешил писать "проги с кнопками", сколько не понятных строк было в коде и честно говоря принимал их как говорит olegenty "как данность".
В общем если нужна инсталяция (Turbo C++ 3.0) пишите.
Честно говоря, сам еще учу С++ много чего еще не знаю
|
|
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
|
Ну вот, это опять я
опять родился глюк, в книге есть пример показывающий работу некоторых операторов, все вроде работет но результат не совпадает с результатом в книге, в книге он показан в 16тиричнов виде, а у меня почему то нет думаю виной всему, эта строка
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
|
Аууууу, ГУРУ !!!
ну что идей не будет ???? |
|