Jarlyk
Помогающий
Offline
|
|
« : 05-06-2004 12:29 » |
|
Я тут начал изучать си++, перешел к уроку, где предлагается создать свою первую прогу на сях. Так вот, у меня ошибки начались прям с первой же строки, вот с этой: #include<iostream.h>
Когда я запустил прогу на проверку на ошибки, то она выдала сообщение: unable to open include file ´iostream´
а потом пошли фаталы по последующим строкам. Типа, не может создать там чего-то в папке TEMP
Что делать?
|
|
|
Записан
|
Бедные маленькие мышки плакали и кололись, но все равно продолжали жрать кактус.
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #1 : 05-06-2004 13:08 » |
|
В Виндовсе дай на поиск библиотеки iostream.h. Запомни тот католог, где Виндовс нашел эту библиотку. Пропиши в настройках компилятора этот каталог. Также просмотри каталог TEMP файлов. И пропиши его. Если он не существует на диске физически. Создай.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Jarlyk
Помогающий
Offline
|
|
« Ответ #2 : 05-06-2004 13:48 » |
|
Спсибо, теперь все заработало. Начал проверять все папки в настройках, оказалось, что прога была настроена на расположение на диске С: А я ее на D: запихнул... Ну и папку отдельно создать пришлось, как ты сказал. Еще раз спасибо!
|
|
|
Записан
|
Бедные маленькие мышки плакали и кололись, но все равно продолжали жрать кактус.
|
|
|
Olegator
|
|
« Ответ #3 : 16-06-2004 23:25 » |
|
Здравствуйте Я только что зарег-ся Скажите пож-та когда начало курсов
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #4 : 17-06-2004 05:34 » |
|
Olegator, Курсы уже идут давненько Придётся догонять Все предыдущие уроки есть сдесь : https://club.shelek.ru/view.php
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Jarlyk
Помогающий
Offline
|
|
« Ответ #5 : 18-06-2004 11:05 » |
|
<b>Люди! У мя проблемя с C++. Поможите, пожалуйста!</b> Короче, у меня bcw.exe не пишет русские буквы, вместо них какие-то иероглифы, но когда запускаю на выполнение, то буквы идут нормальные, но почему-то не выводится на экран буква "Я". Че делать?
|
|
|
Записан
|
Бедные маленькие мышки плакали и кололись, но все равно продолжали жрать кактус.
|
|
|
Jarlyk
Помогающий
Offline
|
|
« Ответ #6 : 18-06-2004 11:32 » |
|
хм... че за фигня? ХТМЛ включен, а тэги не понимает...
|
|
|
Записан
|
Бедные маленькие мышки плакали и кололись, но все равно продолжали жрать кактус.
|
|
|
Oldy
|
|
« Ответ #7 : 18-06-2004 12:58 » |
|
Jarlyk писал, у меня bcw.exe не пишет русские буквы, вместо них какие-то иероглифы Консоль работает с кодировкой CP866, а Windows c WIN1251, поэтому так и получается. Если настроешь Options|Preferences|Editor на Courier Cyr или Aryal Cyr, то в тексте программы будет по русски а при выводе на консоль - "иероглифы". Вывод: Пиши в ВС.ЕХЕ хм... че за фигня? ХТМЛ включен, а тэги не понимает... Теги оформляй в прямоугольных "[]", а не в угловых "<>" скобках.
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
Jarlyk
Помогающий
Offline
|
|
« Ответ #8 : 18-06-2004 15:26 » |
|
Вывод: Пиши в ВС.ЕХЕ
А в bc.exe еще хуже - он вообще на русский не переключается Перепробовал комбинации клавиш: Ctrl+Shift, Alt+Shift и стандартный досовский л.Shift+п.Shift Все равно никакого толку
|
|
|
Записан
|
Бедные маленькие мышки плакали и кололись, но все равно продолжали жрать кактус.
|
|
|
Oldy
|
|
« Ответ #9 : 18-06-2004 15:33 » |
|
Опс... Давай с начала: Что за ОС (WIndows какой?), приведи текст файлов config.sys и autoexec.bat. Может статься, что у тебя этот момент (кодовая страница, и раскладка клавиатуры) не настроен должным образом.
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
Jarlyk
Помогающий
Offline
|
|
« Ответ #10 : 18-06-2004 17:06 » |
|
Нууу... Тогда слушай. Вернее читай : У меня Windows 98 SE Содержимое файла config.sys:DEVICE=C:\WINDOWS\setver.exe device=C:\WINDOWS\COMMAND\display.sys con=(ega,,1) Country=007,866,C:\WINDOWS\COMMAND\country.sys DEVICEHIGH=C:\WINDOWS\COMMAND\DRVSPACE.SYS /MOVE Содержимое файла autoexec.bat:@D:\PROGRA~1\GRISOFT\AVG6\bootup.exe mode con codepage prepare=((866) C:\WINDOWS\COMMAND\ega3.cpi) mode con codepage select=866 keyb sv,,C:\WINDOWS\COMMAND\keyboard.sys
|
|
|
Записан
|
Бедные маленькие мышки плакали и кололись, но все равно продолжали жрать кактус.
|
|
|
Oldy
|
|
« Ответ #11 : 18-06-2004 19:07 » |
|
keyb sv,,C:\WINDOWS\COMMAND\keyboard.sys
keyb ru,,C:\WINDOWS\COMMAND\keybrd3.sys
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
Jarlyk
Помогающий
Offline
|
|
« Ответ #12 : 18-06-2004 20:16 » |
|
Перезагружать не надо? так вообще сделал, запустил сам файл, но русского все равно нет
|
|
|
Записан
|
Бедные маленькие мышки плакали и кололись, но все равно продолжали жрать кактус.
|
|
|
Oldy
|
|
« Ответ #13 : 19-06-2004 04:33 » |
|
Перезагружаться надо. Переключение клавиатуры в режиме DOS: Русская - Right Ctrl+Shift Английская - Left Ctrl+Shift
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
Jarlyk
Помогающий
Offline
|
|
« Ответ #14 : 21-06-2004 08:47 » |
|
Во спасибо!!! Теперь все работает
|
|
|
Записан
|
Бедные маленькие мышки плакали и кололись, но все равно продолжали жрать кактус.
|
|
|
fess_kr
Гость
|
|
« Ответ #15 : 15-08-2004 19:46 » |
|
Кто-нибудь помогите достать хороший учебник по C++Builder или хотя бы подскажите , как переводить типы данных из одного типа в другой. Пример: AnsiString в String; Double в Integer; Char в String; Char в AnsiString; Char в Integer; Char в Double; И конечно наоборот!
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #16 : 16-08-2004 13:46 » |
|
fess_kr, Немедленно читать Help. Types, atoi(), atof()
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
KerLaede
Гость
|
|
« Ответ #17 : 16-08-2004 20:31 » |
|
Кто-нибудь знает как из программы можно было запустить другой *.exe файл :?:
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #18 : 17-08-2004 04:49 » |
|
KerLaede, при помощи функций АПИ CreateProcess() или ShellExecute()
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
KerLaede
Гость
|
|
« Ответ #19 : 17-08-2004 09:36 » |
|
Oldy, спасибо!
|
|
|
Записан
|
|
|
|
KerLaede
Гость
|
|
« Ответ #20 : 17-08-2004 09:42 » |
|
А еще вопросик! Как занести и вытащить текст в программе? FileOpen("...", 1); FileRead(1, &buff, ...); FileWrite(1, &buff, ...); FileClose(1); Вот эти операции что-то не работают! А FileClose(); вообще ошибку выдает.
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #21 : 17-08-2004 10:11 » |
|
FileClose(1); Вот эти операции что-то не работают! А FileClose(); вообще ошибку выдает. Что за еденица присутствует в качестве параметра? По моему там должен быть "Handle" открытого файла.
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
KerLaede
Гость
|
|
« Ответ #22 : 17-08-2004 12:09 » |
|
Что за еденица присутствует в качестве параметра? По моему там должен быть "Handle" открытого файла. Что такое Handle? И что там писать вообще надо, если я пытаюсь открыть файл "D:/temp.txt"?[/quote]
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #23 : 17-08-2004 16:34 » |
|
Эти функции вообще откуда? Что за язык программирования вы используете? Ни в BC++ 3.1 ни в VC++ 6.0 таких функций не нашел.
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #24 : 17-08-2004 18:41 » |
|
Да и на Паскаль как-то не похоже
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
KerLaede
Гость
|
|
« Ответ #25 : 17-08-2004 20:20 » |
|
Это С++Builder 6. Когда консольную программу создаешь эти функции есть и даже никакие файлы с помощью #include потключать не надо!
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #26 : 17-08-2004 21:17 » |
|
KerLaede, я в билдере не работаю - но исходя из "общей теории работы в виндовс", заявляю следующее. 1. Все эти функции вероятно аналоги CreateFile WriteFile ReadFile CloseFile сандартного API. Кстати это и объясняет, что их не надо никаким образом подключать так как они автоматом подключаются вместе с самим API в стандартном создании проекта, я так полагаю. 2. В том виде в котором ты их используешь они работать не будут. 3. HANDLE - некое число чаще 4 байта в длину #define HANDLE DWORD Для работы с этими функцияим адо понять идеологию работы с файлами. Для этого не надо было писать в тему Насчет курсов а надо было создать отдельную, я это счас и сделал. Теперь об идеологии. Открываю любой файл не зависимо от того, в каком языке, в какой оболочке разработки ты открываешь канал, который связывает твою программу с файлом. Это представлено в виде некоторой структуры в системе, из которой однозначно определяет, т.е. полностью уникально идентифицирует для программы сам файл - это HANDLE. HANDLE чаще всего возвращается функцией CreateFile в данном случае видимо FileOpen когда соответствующая свзяка (канал) создаются впервые. Происходит захват файла, после чего работая с файлом , читая записывая данные и закрывая файл ты должен обращаться к файлу не по имени, а именно указывая HANDLE полученный при создании канала, указывая программе какой из каналов на файл использовать. Ведь в программе открывать одновременно можно много файлов. Естественно что FileClose(1) - это полный идиотизм - извини, но что ты таким образом вообще пытаешься закрыть??? HANDLE за номером 1 естественно в твоей программе не существует, вот и вылезает ошибка. Вообще удивитеьно что тебе не выдали ошибки и остальные функции, ведь судя по твоим единичкам в конце каждого из них, HANDLE у тебя точно такой же как и там FileRead(1, &buff, ...); FileWrite(1, &buff, ...); Грустно то, что и вопрос поставлен неверно. И вероятно Help вообще не прочитан, ибо там сказано все настолько прозрачно, что ужас. Лучше всего звучал бы правильный вопрос - поясните как работать с файлами и что такое HANDLE.. Извини, я не хотел тебя обидеть, брюзжу.... Итак дабы вся эта бодяга работала нормально, надо указывать верные параметры. Не думаю, что бы там все так отличалось от классического API, поэтому приведу пример... HANDLE hFile; // тот самый указывает файл. unsigned char buff[] = "Write File"; .. текст для записи. int length; // длина записи - типа скока записать. DWORD Tb; // Скока в натуре записалось - должен в иделе равняться после записи length length = strlen(buff); hFile = CreateFile("file_name", NULL, NULL, NULL, CREATE_ALWAYS,NULL); // Все что я выставил в NULL можно выставлять в нужные значения но в данный момент там проставятся условия по умолчанию от системы, что для единоличной работы с файлом более чем достаточно. CRATE_ALWAYS - параметр сменный и в данный момент означает, что файл с таким именем даже если есть и полный данных будет создан заново и кто не спрятал данные то Майкрософт не виноват. Список возможных параметров вот: CREATE_ALWAYS CREATE_NEW OPEN_ALWAYS OPEN_EXISTING TRUNCATE_EXISTING Описания тут: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/createfile.aspДалее все просто. if (hFile == INVALID_HANDLE_VALUE) {Произошла чудовищная ошибка} else { Файл благополучно открыт стерт захвачен. if (!WriteFile(hFile, &buff, length, &Tb, NULL)) {Опять апшиблись} else{ // Записыали в файл. } if (!ReadFile(hFile,&buff,length,&Tb, NULL) {И снова апшибка} else { // Прочитали из файла... } CloseFile(hFile); // Закроли файл... Вернее не столько файл сколько файл мы освободили, а вот закрывает его система, а мы описатель HANDLE освободили. Хотя в этом примере мы ничерта не прочтем из файла, потому, что еще надо бы выставить указатель перед чтением на начало файла, но это уж ты сам найди, а то так не интересно но все же файл появится и даже запишется } В общем удачи... И еще раз не обижайся на стиль - ничего личного....
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
KerLaede
Гость
|
|
« Ответ #27 : 18-08-2004 09:37 » |
|
Гром когда я пишу CreateFile(); у меня появляется потсказка, но там 7 параметров, а у вас 6 и я путуюсь куда же надо писать CREATE_ALWAYS. И я так и не понял что такое DWORD Tb;, и зачем он нужен?
Почему-то после проверки условия:
if (hFile == INVALID_HANDLE_VALUE) {Произошла чудовищная ошибка}
у меня всегда происходит эта чудовищная ошибка. :?: :!:
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #28 : 18-08-2004 10:14 » |
|
Вот из MSDN: HANDLE CreateFile( LPCTSTR lpFileName, // pointer to name of the file DWORD dwDesiredAccess, // access (read-write) mode DWORD dwShareMode, // share mode LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security attributes DWORD dwCreationDisposition, // how to create DWORD dwFlagsAndAttributes, // file attributes HANDLE hTemplateFile // handle to file with attributes to // copy );
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #29 : 18-08-2004 10:43 » |
|
KerLaede, прости дорогой - но ты издеваешься??? Тебе привели код, тебе привели все что только можно - расписали идеологию и ты не можешь понять, что HOW TO CREATE это и есть параметр который отрабатывает как открывать файл??? А остальное идет в NULL??? DWORD Tb; // Скока в натуре записалось - должен в иделе равняться после записи length
И это тебе непонятно? Т.е. длина которую записать - это понятно, а скока в натуре после чтения записалось непонятно??? как-то странно - т.е. обычно человек заинтересован понять как, а ты явно заинтересован в том, что бы тебе все все сделали, а ты скопировал код - не так не пойдет.... А файл который откывается - должен еще записываться не так "D:/temp.txt", ва вот так "D://temp.txt"
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
KerLaede
Гость
|
|
« Ответ #30 : 18-08-2004 15:26 » |
|
Гром извени просто я не знаю английского языка. Из-за этого я немогу прочитать Help, а в машинном переводчике (Promt) сам неверно знаешь ничего не понятно. Поэтому приходится постоянно спрашивать у знающих. Но за эту информацию спасибо! :!:
|
|
|
Записан
|
|
|
|
Anonymous
Гость
|
|
« Ответ #31 : 18-08-2004 17:12 » |
|
А файл который откывается - должен еще записываться не так "D:/temp.txt", ва вот так "D://temp.txt"
а мне кажется так "D:\\temp.txt"
|
|
|
Записан
|
|
|
|
KerLaede
Гость
|
|
« Ответ #32 : 18-08-2004 20:32 » |
|
Как создавать и загружать динамические библиотеки DLL?
|
|
|
Записан
|
|
|
|
Jonny
Гость
|
|
« Ответ #33 : 24-08-2004 06:45 » |
|
Здраствуйте! Только вчера наткнулся на ваш сайт. Вашы курсы по С это круто. Знаю что сильно отстал, но обещаю быстро догнать. У меня вопрос по второму уроку. Для того чтобы обьект был операндом он должен изменять свои признаки или просто может создавать другой обьект не изменяясь сам?Хорошо а операция X<25. <-зто оператор,а где здесь операнды? Вроде ни Х, ни 25 не изменяются и не создают новый обьект? Помогите разобраться, pls!!!!!
|
|
|
Записан
|
|
|
|
Never
|
|
« Ответ #34 : 24-08-2004 19:58 » |
|
Jonny, Знаю что сильно отстал, но обещаю быстро догнать
Это я к сожалению сильно отстала Уже давно не писала новых уроков. Но кажется более-менее разобралась со своими траблами, бум продолжать. Что касается вопроса: не в том смысл, что что-то изменяется, а в том, что операнды участвуют в операции как (в грамматике есть термин- страдательный объект, т.е. тот, над которым что-то делают) вот здесь скорее этот аспект работает, т.е. операнд, это объект, участвующий в операции В приведенном тобой примере операнды- х и 25. т.к. они участвуют в операции сравнения, т.е. СРАВНИВАЮТСЯ.
|
|
|
Записан
|
не умеете летать- не мучайте метлу!
|
|
|
Антон (LogRus)
|
|
« Ответ #35 : 24-08-2004 20:55 » |
|
Jonny, ты скорее спрашиваешь про перегрузку операторов и конструкторы копирования(я второй урок ничитал такчто извините если не в тему). Кстати советую перефразировать вопрос потому как давольно тяжело понять его суть. так вот можно перегрузить операторы стравнений <, >, == и != bool operator >(classname &rhs, classname &lhs) в этом случае оператор получает ссылку на левую и правую части выражения и возвращает логическое значение какими критерия оператор пользуется при определении результата уже не важно. Далее при декларации класса нужно указать, что оператор дружественен ему в этом случае оператор получит доступ к скрытым свойствам и методам класса. При наличии оператора ты можешь использовать объекты как простые переменные встроенных типов. из объявления оператора ты маг заметить что его операнды это выражения стоящие от него слева и справа. Конструктор копирования необходим для корректного копирования объекта. Например передача объекта функции по значению и операция присваивания. Особенно важен конструктор копирования в случае если объект создаёт для внутренних целей какие-то свои динамические структуры. Пример: class X { int *px; X(int init) {px = new int; *px = init;} ~X() {delete px;} } void print (X x) { printf(“%d\n”*x.px); }
int main() { X x(25); print(x); X y(16); print(x); print(y); return 0; }
Так вот в этот пример будет компилироваться но не будет работать. Причина довольно банальна, но у меня решения подобной проблемы отняло некоторое время. И так тут при первом вызове функции print вызывается конструктор копирования класса по умолчанию который тупо копирует все данные класса в том числе и значение указателя. Далее при выходе из функции вызывается деструктор класса(чего не случилось бы если передавать ссылку на объект) а деструктор возвращает в кучу область памяти на которую указывает px, но в оригинале объекта указатель всё еще указывает на эту область хотя она уже возвращена куче. И при повторном вызове print(x) происходит обращение к «неизвестной» области памяти. Вот еще пример с тем же эффектом: int main() { X x(25); { X tmp=x; } print(x); return 0; }
В этом примере переменная tmp уничтожилась при выходи из области видимости {}. Решается это двумя путями первый передача параметра по ссылке или конструктором копирования. Вот код конструктора копирования для нашего случая(если я не ошибся с объявлением): X (X init) { px = new int; px = *init.px;}
Вот так!
|
|
« Последнее редактирование: 28-11-2007 16:34 от Алексей1153++ »
|
Записан
|
Странно всё это....
|
|
|
Антон (LogRus)
|
|
« Ответ #36 : 24-08-2004 21:02 » |
|
Прочёл второй урок. Кажется я ляпнул лишнего. Большн не буду. Исправлюсь.
|
|
|
Записан
|
Странно всё это....
|
|
|
Jonny
Гость
|
|
« Ответ #37 : 25-08-2004 07:56 » |
|
Спасибо NEVER за легкое и доступное обьяснение.Теперь ясно. Спасибо и LoqRus,но понимание того что Вы ответили надеюсь прийдет позже. Продолжаю нагонять.
|
|
|
Записан
|
|
|
|
Jonny
Гость
|
|
« Ответ #38 : 25-08-2004 10:55 » |
|
Вот прочел урок "Внутренняя форма представления данных в компьютере и недесятичные системы счисления".Очень интересно а есть не позиционные системы счисления? Заранее спасибо.
|
|
|
Записан
|
|
|
|
Never
|
|
« Ответ #39 : 25-08-2004 19:30 » |
|
LogRus, мда! Оторвался ты на всю катушку Jonny писалпонимание того что Вы ответили надеюсь прийдет позже
, до этого мы еще не очень скоро доберемся Но, надеюсь, что доползем... Кстати, это оффтоп, конечно, но у нас тут принято на "ты"... Таки вот мы, блин, демократичные
|
|
« Последнее редактирование: 28-11-2007 16:35 от Алексей1153++ »
|
Записан
|
не умеете летать- не мучайте метлу!
|
|
|
Антон (LogRus)
|
|
« Ответ #40 : 25-08-2004 19:48 » |
|
Never, я не спициально я так почему-то вопрос понял Можешь ответ в урок включить
|
|
|
Записан
|
Странно всё это....
|
|
|
Never
|
|
« Ответ #41 : 26-08-2004 12:06 » |
|
LogRus, обязательно, когда доползу до перегрузки
|
|
|
Записан
|
не умеете летать- не мучайте метлу!
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #42 : 26-08-2004 16:39 » |
|
KerLaede, я бы тебе советовал не спешить.... Кстати Never, вот и вопросик для отдельной статьи.
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
Jonny
Гость
|
|
« Ответ #43 : 26-08-2004 16:58 » |
|
Насчет "Внутренняя форма представления данных в компьютере и недесятичные системы счисления. Часть 4." 12. Фиксированная точка (запятая). Указан недостаток "что для очень больших и очень маленьких чисел представление с фиксированной точкой неудобно. " Но дискретность представляемых значений тоже значительный недостаток. Правильно ли я понял? И есть ли не позиционные системы счисления?
|
|
|
Записан
|
|
|
|
|