Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 921
от 29.11.2007, 18:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 475, Экспертов: 68
В номере:Вопросов: 5, Ответов: 10


Вопрос № 110701: Привет всем! Подскажите плиз как можно открыть текстовый файл через внешний просмоторщик, который установлен виндоуз по умолчанию для этого типа файлов? З.Ы пользуюсь c++Builder6...
Вопрос № 110727: Здравствуйте! Проблема вот какая. Пишу простенький сокет-сервер, подключаю библиотеку <b>"winsock2.h"</b>, но при компиляции в этой библиотеке выдаются ошибки. Изыскания путём Яндекса и Гугла дали определённый результат - от 65 ошибок в...
Вопрос № 110739: Подскажите почему в результате таких действий получается отрицательное число, ведь должно быть полодительным. И еще один вопрос где можно найти отладчик Под Turbo С++ ...
Вопрос № 110789: в с++borland есть компонента EditMask.Так вот, никак не могу дорубиться что означает символ ! в маске (!(999)000-0000;1;_)?...
Вопрос № 110795: Здравствуйте уважаемые эксперты!Прошу прощение за повторение!Я неделю назад задавал вопрос по задачкам, на что получил ответ, решение этих задач на С++, не могли бы вы написать эти задачки на С! Заранее спасибо! 1.Подсчитать, сколько элементо...

Вопрос № 110.701
Привет всем! Подскажите плиз как можно открыть текстовый файл через внешний просмоторщик, который установлен виндоуз по умолчанию для этого типа файлов?
З.Ы пользуюсь c++Builder6
Отправлен: 23.11.2007, 19:00
Вопрос задал: Endru (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Лясин Александр Владимирович
Здравствуйте, Endru!
Вот пример открытия файла редактором (просмотрщиком) по умолчанию:
Ansistring help_file
ShellExecute(NULL, "open", help_file.c_str(),NULL, NULL, SW_SHOW);

здесь help_file - тот файл - который нужно отрыть.
В C++Builder Help есть подробное описание параметров ф-ии.
Ответ отправил: Лясин Александр Владимирович (статус: 2-ой класс)
Ответ отправлен: 23.11.2007, 20:04
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Еще столько предстоит узнать что голова идет кругом :)

Отвечает: CruelHity
Здравствуйте, Endru!
Самый простой способ это через Api функции:
UINT WinExec(
LPCSTR lpCmdLine,
UINT uCmdShow
);
и
HINSTANCE ShellExecute( HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
и
BOOL ShellExecuteEx( LPSHELLEXECUTEINFO lpExecInfo
);
см в приложение пример и описания!

Приложение:

Ответ отправил: CruelHity (статус: 5-ый класс)
Ответ отправлен: 23.11.2007, 20:31
Оценка за ответ: 5
Комментарий оценки:
Спасибо!


Вопрос № 110.727
Здравствуйте!
Проблема вот какая. Пишу простенький сокет-сервер, подключаю библиотеку "winsock2.h", но при компиляции в этой библиотеке выдаются ошибки. Изыскания путём Яндекса и Гугла дали определённый результат - от 65 ошибок в библиотеке осталась одна. Но с ней справиться никак не могу. Ошибка такая:
c:program filesmicrosoft visual studio 8vcplatformsdkincludewinsock2.h(3791) : error C2371: 'fd_set' : redefinition; different basic types
c:program filesmicrosoft visual studio 8vcplatformsdkincludewinsock2.h(115) : see declaration of 'fd_set'
Библиотека "windows.h" отдельно не подключается. Добавление #pragma comment (lib, "ws2_32.lib") не даёт результата. Других решений проблемы не нашла. На всякий случай, привожу код в приложении.
Буду благодарна за любую помощь!

Приложение:

Отправлен: 23.11.2007, 21:53
Вопрос задала: Verena (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Ross
Здравствуйте, Verena!

Попробуйте подключать хидер так:
#include < winsock2.h > (сложнее всего в ответе было нарисовать фигурные скобки :)
Код в приложении скомпилился нормально (Visual Studio 8, Console Application -> Empty Project)
---------
Доступно только то, что видимо (c) Б. Керниган
Ответ отправил: Ross (статус: Студент)
Ответ отправлен: 24.11.2007, 01:22
Оценка за ответ: 5
Комментарий оценки:
Спасибо за ответ) Правда, это мне и самой приходило в голову, вариант вполне реальный, но, к сожалению, не помог. Впрочем, решение проблемы я нашла, проблема оказалась всё-таки в самой библиотеке - заменила файл и всё заработало.


Вопрос № 110.739
Подскажите почему в результате таких действий получается отрицательное число, ведь должно быть полодительным.
И еще один вопрос где можно найти отладчик Под Turbo С++

Приложение:

Отправлен: 23.11.2007, 23:47
Вопрос задал: Kizlyar (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 34)

Отвечает: CruelHity
Здравствуйте, Kizlyar!
Пропишите или так
long int sum;
или
unsigned ing sum;

Тут просто выходит за пределы int 32767 и -32768
Ответ отправил: CruelHity (статус: 5-ый класс)
Ответ отправлен: 23.11.2007, 23:58
Оценка за ответ: 4
Комментарий оценки:
Прописывал по разномую все равно отрицательное. Изменил на float стало нормально

Отвечает: Гальцов Андрей
Здравствуйте, Kizlyar!

Потому что значение Вашей сумму превышало диапазон знакового int...там что вроде от -32 тысяч (с чем то) до 32тысяч (с чем то)...точно не помню...и поэтому на последних шагах к sum прибавлялся "мусор" и значение получалось не верным...

См. приложение...Нужно сделать Int без знаковым (usigned)...это будет от 0 до 64 тысяч...

Приложение:

---------
"The more you know, the less you need to show"

Ответ отправил: Гальцов Андрей (статус: Практикант)
Ответ отправлен: 24.11.2007, 00:03
Оценка за ответ: 4

Отвечает: Архипов Александр Леонидович
Здравствуйте, Kizlyar!
Не знаю, не знаю, у меня всё нормально сработало... Ответ очень красивый = 38038. Отрицательного не получилось. Отрицательное могла получиться, если бы сумма превысила ранг типа переменной. У меня Borland 2006 и переменная int имеет разрядность -2,147,483,648 до 2,147,483,647 при размере 32-бит. Как у Turbo C++ не знаю, проверьте, может у него ниже ранг для int, тогда надо другой тип переменной использовать.
Ответ отправил: Архипов Александр Леонидович (статус: 10-ый класс)
Ответ отправлен: 24.11.2007, 09:51

Отвечает: Терсков Сергей
Здравствуйте, Kizlyar!
Если вы пишите под Turbo C++, то int у вас 16-ти битный. Соответственно полученное в цикле число превышает лимит - 32767. После переполнения число становится отрицательным, т.к. тип int -знаковый. Выходом может быть использование типа long. Его пределы это - (–2147483648; 2147483647).
Ответ отправил: Терсков Сергей (статус: Студент)
Ответ отправлен: 26.11.2007, 02:56

Отвечает: Sergijj
Здравствуйте, Kizlyar!

Ваша проблема на самом деле просто в выводе значения, точнее в формате вывода.
%i и %d - вывод signed (знаковый) int (диапазон -32768..32767).
Для того, чтобы с помощью printf() вывести unsigned (беззнаковый) int (0..65535) нужно писать не %d, а %u.

Второй вариант решения Вашей проблемы заключается в том, чтобы объявить unsigned long int sum = 0;

Но и тогда нужно не забыть про формат вывода. В этом случае он будет таким: %ul

Приложение:

---------
Стучитесь! И Вас откопают...

Ответ отправил: Sergijj (статус: 10-ый класс)
Ответ отправлен: 26.11.2007, 11:31


Вопрос № 110.789
в с++borland есть компонента EditMask.Так вот, никак не могу дорубиться что означает символ ! в маске (!(999)000-0000;1;_)?
Отправлен: 24.11.2007, 15:22
Вопрос задал: Endru (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Архипов Александр Леонидович
Здравствуйте, Endru!
Если перед маской стоит символ !, то недостающие символы предваряются пробелами, отсутствие символа ! означает,ю что пробелы размещаются в конце.
В Вашем случае этот символ означает, что должно быть введено 10 цифр, если же их будет меньше (без кода города - 7), то пробелы вставятся в скобки, а не в конец строки. Если в Вашу маску ввести 7 (а не 10) цифр, то в свойство Value поля будет введено "( ) 123-4567"
Ответ отправил: Архипов Александр Леонидович (статус: 10-ый класс)
Ответ отправлен: 27.11.2007, 15:31
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо! Я уж думал никто мне не ответит.


Вопрос № 110.795
Здравствуйте уважаемые эксперты!Прошу прощение за повторение!Я неделю назад задавал вопрос по задачкам, на что получил ответ, решение этих задач на С++, не могли бы вы написать эти задачки на С!
Заранее спасибо!
1.Подсчитать, сколько элементов встречается в данном массиве наибольшее число раз.
2.Найти минимум функции Х(в квадрате)-Е(в степени -х) методом дихотомии.
Напомню на языке C(без плюсов))))))
Отправлен: 24.11.2007, 16:14
Вопрос задал: Pimp (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: Boriss
Здравствуйте, Pimp!
Никто не отвечает - вот держи первое задание. Потом в минифорум положу второе

Приложение:

---------
Вывод - то место в тексте, где вы устали думать

Ответ отправил: Boriss (статус: Профессор)
Россия, Саранск
Организация: mte
WWW: Программирование на Паскале
----
Ответ отправлен: 29.11.2007, 16:15


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.64 от 24.11.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное