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

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


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

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

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

Выпуск № 1092
от 30.08.2008, 20:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 434, Экспертов: 30
В номере:Вопросов: 4, Ответов: 6

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 142133: Здравствуйте эксперты, после выполнения программы через goto надо опять начать программу при нажатии определенной клавиши на Паскале это выглядело бы наверно так: readkey(s); if s="q" then goto na4alo; end. как это все реализ...
Вопрос № 142198: Здравствуйте! У меня возникла проблема, как защитить программу. Надо сделать так чтобы программа не работала на другом компьютере если её скопировали. Я придумал такое решение задачи: <i> При запуске программа проверяет наличие определённого файла...
Вопрос № 142218: Возможно ли организовать автозагрузку для консольной программки, написанной на Си? Какие способы? ...
Вопрос № 142232: Какую максимальную дату можно установить в качестве системного времени в DOS с помощью Си? ...

Вопрос № 142.133
Здравствуйте эксперты, после выполнения программы через goto надо опять начать программу при нажатии определенной клавиши
на Паскале это выглядело бы наверно так:
readkey(s);
if s="q" then goto na4alo;
end.
как это все реализовать на Си
как описывать и пользоваться метками, и есть какой-нить аналог readkey?
Отправлен: 24.08.2008, 21:34
Вопрос задал: Tribak (статус: 10-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Boriss
Здравствуйте, Tribak!
В приложении аналог Вашего паскалевского кода, но, честное слово, не используйте метки. Это плохой стиль программирования, используется только в школьном Васике и в ассемблере

Приложение:

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

Ответ отправил: Boriss (статус: Профессор)
Россия, Саранск
Организация: Мордовский госуниверситет, Саранск, Факультет Электронной Техники
WWW: Программирование на Паскале
----
Ответ отправлен: 24.08.2008, 22:00
Оценка за ответ: 5

Отвечает: Dr_Andrew
Здравствуйте, Tribak!
goto обусловливает безусловный переход во время выполнения программы в то место, которое обозначено меткой. Синтаксис метки Имя_метки - двоеточие - фигурные скобки, внутри которых содержатся операторы. Основное отличие метки от функций (помимо синтаксиса):
1. Функция объявляется и вызывается в любом месте программы (объявляться может как вне, так и внутри главной функции main), в то время как метка - только в пределах главной функции main.
2. Операторы метки выполняются последовательно, один за другим, также как и прочие операторы программы, просто при использовании goto (переходе к метке) выполнение программы начинается заново с этого места.
Пример использования goto (на C++) см. в приложении.
Для считывания единичного символа в C++ используется объект cin, в чистом Си - функция getchar()

Приложение:

Ответ отправил: Dr_Andrew (статус: Студент)
Ответ отправлен: 25.08.2008, 07:56
Оценка за ответ: 5


Вопрос № 142.198
Здравствуйте! У меня возникла проблема, как защитить программу. Надо сделать так чтобы программа не работала на другом компьютере если её скопировали. Я придумал такое решение задачи:
При запуске программа проверяет наличие определённого файла в папке, но не в папке с установленной программой а в какой-нибудь другой папке, например в папке WINDOWS и если файл существует, то программа запускается, а если файл не обнаружен, то запускается определённое окно или выдаётся сообщение и приложение завершается. Проблемма в том что я не знаю как проверить наличие файла в папке в С++Builder. Подскажите пожайлуста как решить данную проблему. Заранее благодарю.
Отправлен: 25.08.2008, 14:59
Вопрос задал: Грибанов Фёдор (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sergey A. Wedensky
Здравствуйте, Грибанов Фёдор!

Проверить, существует ли файл проще всего, попытавшись его открыть. Для этого можно воспользоваться функцией API CreatFile.
Строго говоря, так Вы проверите, можно ли в данный момент открыть файл. Если, например, файл существует, но уже открыт другим процессом без права совместного использования, открыть его не удастся. В случае, если файл открыть не удалось, можно анализировать код ошибки, возвращаемый функцией GetLastError() - так можно разобраться, нет ли действительно файла или проблема в другом.

Приложение:

Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 25.08.2008, 15:35
Оценка за ответ: 5
Комментарий оценки:
Благодарю за ответ на мой вопрс

Отвечает: Aristos
Здравствуйте, Грибанов Фёдор!

Кроме открытия файла, также можно проверить атрибуты файла. Функция проверки в приложении.
Проверка происходит следующим образом:
1) запрашиваем атрибуты файла
2) если была возвращены некорректные атрибуты, то проверяем последнюю ошибку
2.1) если нарушение доступа к файлу - то файл существует, возвращаем true
2.2) если другая ошибка, то возвращаем false
3) если атрибуты корректны, то проверяем признак дирректории
3.1) если не директория, то возвращаем true
3.2) если дирректория, то возвращаем false (проверяем все-таки файл)

С небольшим изменением (== NULL на != NULL) получаем функцию проверки существования дирректории.

Приложение:

---------
нет ничего невозможного

Ответ отправил: Aristos (статус: 7-ой класс)
Ответ отправлен: 26.08.2008, 12:01
Оценка за ответ: 5
Комментарий оценки:
Благодарю за ответ на мой вопрос и за советы.


Вопрос № 142.218
Возможно ли организовать автозагрузку для консольной программки, написанной на Си?
Какие способы?
Отправлен: 25.08.2008, 16:59
Вопрос задал: Warobushek (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Sergey A. Wedensky
Здравствуйте, Warobushek!

Автозагрузку можно организовать для любой программки. Вопрос, правда, не по C/C++...
Один из вариантов - добавить в реестр строковый параметр в раздел
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run.
имя параметра - любое, значение - путь к исполняемому файлу.
Если нужна автозагрузка только для определенных пользователей, HKLM заменяется, соответственно, разделами для конкретных пользователей (или HKEY_CURRENT_USER для пользователя текущего сеанса).
Есть еще и пункт "Автозагрузка" в меню Пуск...
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 25.08.2008, 17:08
Оценка за ответ: 5


Вопрос № 142.232
Какую максимальную дату можно установить в качестве системного времени в DOS с помощью Си?
Отправлен: 25.08.2008, 19:58
Вопрос задал: Warobushek (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Терсков Сергей
Здравствуйте, Warobushek!

Функция для установки даты в BC++ 3.1 выглядит следующим образом

Код:
void setdate(struct date *datep);


Параметром служит указатель на объект структуры date. Вот ее описание:

Код:
struct date {
int da_year; /* current year */
char da_day; /* day of the month */
char da_mon; /* month (1 = Jan) */
};

Единственное ограничение здесь - это тип данных используемых для поля года, т.е. int (причем знаковый). Его максимальное значение - 32767. Т.е. макс имальная дата которую вы сможете задать - это 31 декабря 32767 года.
Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 26.08.2008, 03:10


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.1 beta(win) от 11.08.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное