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

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


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

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

Выпуск № 850
от 16.09.2007, 22:35

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


Вопрос № 101592: Уважаемые эксперты, помогите разобраться. Builder6. Окошечки. Клик кнопки "Run" на форме создает поток. Функция потока содержит цикл, который выполняется длительное время(~2мин). Кнопка "Close" закрывает программу...
Вопрос № 101613: Здравствуйте эксперты!Вопрос у меня следующий подскажите пожалуйста не ВинАпишную функцию для выставления атрибута файла.Желательно что бы она была и в Linux.Заранее благодарен за ваши ответы....
Вопрос № 101662: Доброго здравия, товарищи эксперты! Помогите, пожалуйста, с одним вопросом. Хочу наколдовать в C++ Builder 6.0 себе простенький редактор кода HTML. Мне нужно, чтобы в текстовом поле просто наглядно отображался HTML-код с разным цветовым...
Вопрос № 101683: Здравсвуйте! Подскажите новичку, пожалуйста. Я пишу простейший обработчик события нажатия кнопки: float x,y,z; x=3.1; y=2.1; z=x+y; Label1->Caption=z; В результате мне на форму выводится число: 5.19999980926514 ...

Вопрос № 101.592
Уважаемые эксперты, помогите разобраться.
Builder6. Окошечки.
Клик кнопки "Run" на форме создает поток.
Функция потока содержит цикл, который выполняется длительное время(~2мин).
Кнопка "Close" закрывает программу без ошибок в любых ситуациях.
Как корректно завершить выполнение программы другими способами (например, пиктограммой в углу окна), если выполнение функции потока еще не завершено?

Приложение:

Отправлен: 11.09.2007, 00:11
Вопрос задал: DeusEx (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Maxim V.G.
Здравствуйте, DeusEx!
Если речь идёт о стандартной пиктограмме закрытия окна, то для коректного завершения программы нужно обработать событие OnClose() главной формы и в обработчике событий вызвать функцию заверщения потока (В вашем случае TerminateThread(h,1)), а в других кнопках закрытия просто вызывать Close().
---------
Жить вредно - от неё умирают
Ответ отправил: Maxim V.G. (статус: 4-ый класс)
Ответ отправлен: 11.09.2007, 00:31
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое Maxim V.G. Заработало! Че-то я сам затупил. Может кто подскажет литературу толковую (или линк) по потокам, мьютексам, семафорам и т.д. В нете об этом очень коротко и мало.


Вопрос № 101.613
Здравствуйте эксперты!Вопрос у меня следующий подскажите пожалуйста не ВинАпишную функцию для выставления атрибута файла.Желательно что бы она была и в Linux.Заранее благодарен за ваши ответы.
Отправлен: 11.09.2007, 09:48
Вопрос задал: Slaer2000 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Sergey A. Wedensky
Здравствуйте, Slaer2000!
Я лично такой функции в стандартных библиотеках не нашел. Не могу утверждать, но подозреваю, что ее и нет. Ведь набор возможных атрибутов файлов зависит от используемой файловой системы, и, соответственно, от платформы. В некоторых библиотеках (типа Qt) это реализовано, но тоже с оговорками - такие-то атрибуты поддерживаются только такими-то платформами.
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 11.09.2007, 10:26
Оценка за ответ: 4
Комментарий оценки:
Спасибо за ответ.

Отвечает: Хватов Сергей
Здравствуйте, Slaer2000!

Такого быть не может. Потому что модели атрибутов файлов совсем разные.

для unix-ов стандартные атрибуты - владелец и группа (это 16-битные беззнаковые номера) с которыми сравниваются владелец и группа процесса работающего с этим файлом, но для каждого из трёх вариантов (мой/моей-группы/чужой) есть по 3 бита определяющие права на чтение запись или запуск (вообще-то это зависит от других параметров) и ещё три флага которые позволяют поднять привилегии (тут тоже есть варианты)
Для каждого типа поддерживаемой фс есть ещё дополнительные атрибуты, но эти - обязательные.

Для виндов общая модель вообще отсутствует, но в fat есть всего 4 флага, из которых боле или менее совместим всего один - readonly. Зато в ntfs есть список доступа который базовая модель unix не поддерживает


Ответ отправил: Хватов Сергей (статус: Студент)
Ответ отправлен: 11.09.2007, 11:42
Оценка за ответ: 5
Комментарий оценки:
Спасибо за столь подробное разьяснение. Часть информации для меня прояснилась. Мне поступило предложение для линукса воспользоваться chmod ,а что нибудь подобное именно для виндовс системы не подскажете?Мне как Вы и сказали нужно для файла выставить ридонли.


Вопрос № 101.662
Доброго здравия, товарищи эксперты!

Помогите, пожалуйста, с одним вопросом.
Хочу наколдовать в C++ Builder 6.0 себе простенький редактор кода HTML. Мне нужно, чтобы в текстовом поле просто наглядно отображался HTML-код с разным цветовым выделением простого текста, тегов и их параметров, была функция автозавершения тегов. Знаю, что можно использовать какой-нибудь Notepad++ или что-нибудь другое для работы с HTML. Но хочу слепить редактор своими руками.
Так вот вопрос, в том, где мне достать компонент, который бы позволял проводить такие манипуляции со шрифтом? Обычные компоненты (TMemo) позволяют изменять шрифт только для всего поля в целом.
И еще, подскажите, может, где-нибудь валяется программный код для выделения синтаксиса HTML?

Спасибо.
Отправлен: 11.09.2007, 15:34
Вопрос задал: Ferruccio Bonipiero (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Sergey A. Wedensky
Здравствуйте, Ferruccio Bonipiero!
Менять форматирование на уровне каждого символа умеет стандартный виндовский RichEdit. В Быдлере он должен быть, кажется на вкладке Win32 в палитре.
А насчет разбора синтаксиса - зачем же Вам готовое? Разве не в этом смысл "слепить своими руками"? Впрочем, можно попробовать XML-парсеры, например.
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 12.09.2007, 10:29


Вопрос № 101.683
Здравсвуйте!
Подскажите новичку, пожалуйста.
Я пишу простейший обработчик события нажатия кнопки:
float x,y,z;
x=3.1;
y=2.1;
z=x+y;
Label1->Caption=z;
В результате мне на форму выводится число: 5.19999980926514
Вопрос: как сделать так чтобы выводилось чилсо 5.2 или число 5.20????
Заранее спасибо за поддержку...
Отправлен: 11.09.2007, 17:46
Вопрос задала: Mart (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Igor_
Здравствуйте, Mart!

Label1->Caption = FloatToStrF(z, ffFixed, 15, 1); - это будет 5.2
Label1->Caption = FloatToStrF(z, ffFixed, 15, 2); - это будет 5.20
Ответ отправил: Igor_ (статус: 3-ий класс)
Ответ отправлен: 11.09.2007, 18:03
Оценка за ответ: 5

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

Для преобразования числа в строку символов используется функция _gcvt_s:
char NumberAsString[32];
double val = 5.2;

_gcvt_s(NumberAsString,32,val,2); //----преобразование с сохранением двух значащих цифр в буфер размером 32
Label1->Caption = NumberAsString;


---------
Доступно только то, что видимо (c) Б. Керниган
Ответ отправил: Ross (статус: Студент)
Ответ отправлен: 11.09.2007, 18:11

Отвечает: Южанин Д.Ю.
Здравствуйте, Mart!
round(10*z)/10 - 5,2
round(100*z)/100 -5,20
Ответ отправил: Южанин Д.Ю. (статус: 1-ый класс)
Ответ отправлен: 11.09.2007, 21:50

Отвечает: Delph
Здравствуйте, Mart!

Вместо float x,y,z; лучше использовать double x, y, z; - это даст большую точность при расчётах. Часто уже этого достаточно, чтобы результат выводился точно. Но и методы, предложенные другими экспертами, тоже учитывайте (и применяйте там, где сочтёте оправданным).
---------
Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.
Ответ отправил: Delph (статус: 9-ый класс)
Ответ отправлен: 12.09.2007, 08:33


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

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

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

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

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


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


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

В избранное