Вопрос № 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?
Отвечает: 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
Ответ отправил: Южанин Д.Ю. (статус: 1-ый класс)
Ответ отправлен: 11.09.2007, 21:50
Отвечает: Delph
Здравствуйте, Mart!
Вместо float x,y,z; лучше использовать double x, y, z; - это даст большую точность при расчётах. Часто уже этого достаточно, чтобы результат выводился точно. Но и методы, предложенные другими экспертами, тоже учитывайте (и применяйте там, где сочтёте оправданным).
--------- Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.
Ответ отправил: Delph (статус: 9-ый класс)
Ответ отправлен: 12.09.2007, 08:33