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

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


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

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

Выпуск № 731
от 06.05.2007, 16:05

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


Вопрос № 84839: Здравствуйте Пишу dll на builder 6. Подскажите, как секцию данных сделать разделяемой? Примеров для VC в инете куча, а для Builder нет(...
Вопрос № 84910: добрый день. возникла такая проблема: есть массив из 10 элементов(0..9) Нужно переставить четные элементы вперед а остальные назад. тоесть сделать порядок элементов таким 0 2 4 6 8 1 3 5 7 9. спасибо....
Вопрос № 84931: Мир вам, уважаемые эксперты! Мой вопрос связан не с Си, а с Developer Studio, но надеюсь, вы сможете мне помочь... Допустим, имеется программа main.c, в которой применяется функция func (все имена вымышлены, все совпадения случайны :) ). Имее...
Вопрос № 84956: Пишу в C++Builder6. Есть функция в которую передается хэндл окна h_wnd и далее создается форма, родителем которой является указанное окно. В делфи это делается так: Form1:=TForm1.CreateParented(h_wnd); А как сделать подобное в C++Builder6...

Вопрос № 84.839
Здравствуйте
Пишу dll на builder 6. Подскажите, как секцию данных сделать разделяемой? Примеров для VC в инете куча, а для Builder нет(
Отправлен: 30.04.2007, 16:08
Вопрос задал: Sov (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: kool
Здравствуйте, Sov!
Нужно добавить в проект *.def
файл следующего содержания: см. прил.
вместо моих параметров подставляй свои.
Удачи!

Приложение:

---------
I am.

Ответ отправил: kool (статус: Студент)
Ответ отправлен: 30.04.2007, 17:19
Оценка за ответ: 5
Комментарий оценки:
Спасибо


Вопрос № 84.910
добрый день. возникла такая проблема: есть массив из 10 элементов(0..9) Нужно переставить четные элементы вперед а остальные назад. тоесть сделать порядок элементов таким 0 2 4 6 8 1 3 5 7 9.
спасибо.
Отправлен: 01.05.2007, 08:49
Вопрос задал: Biggle (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: John Paramol
Здравствуйте, Biggle!
Код в приложении. В цикле от начального элемента до предпоследнего ищем четный элемент, расположенный за нечетным, и ,если находим, переставляем их местами и увеличиваем счетчик перестановок. Все это дело в бесконечном цикле, пока счетчик перестановок не равен нулю.
Удачи!

Приложение:

---------
1=2, at values 1 large enough

Ответ отправил: John Paramol (статус: 7-ой класс)
Ответ отправлен: 01.05.2007, 23:47

Отвечает: Терсков Сергей
Здравствуйте, Biggle!
Вот STL-ный вариант с использованием доп. массивов.

Приложение:

Ответ отправил: Терсков Сергей (статус: 8-ой класс)
Ответ отправлен: 02.05.2007, 03:51


Вопрос № 84.931
Мир вам, уважаемые эксперты!
Мой вопрос связан не с Си, а с Developer Studio, но надеюсь, вы сможете мне помочь...
Допустим, имеется программа main.c, в которой применяется функция func (все имена вымышлены, все совпадения случайны :) ). Имеется также дцать вариантов этой функции, прописанных в файлах a.c, b.c, c.c, ...
Разумеется, если я их все сразу кидаю в проект он не линкуется. Мне же нужно получить дцать программ a.exe, b.exe, c.exe , ... , в которых к main.c прилинкованы соответствующие версии функции. Можно ли это как-нибудь автоматизировать?
С уважением, Лука.
Отправлен: 01.05.2007, 11:57
Вопрос задал: Лука (статус: 9-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Unreal2004
Здравствуйте, Лука!
Я такую штуку делал по CB6.0 следующим образом - создавал группу проектов, соответственно каждый проект называется A B C D ..., или даже могут называться одинаково, только в опция& #1093; проектов надо пути разные прописать.
В каждом проекте одни и те же основные файлы, а вот дополнительно включаются нужные файлы cpp. И опции проектов могут быть разные (тогда по ifdef можно даже прототипы и вызовы 76;елать в зависимости от контекста).
Тогда получаются файлы A.exe B.exe и т.д. нужного типа.
Есть правда проблема - перед окончательной сборкой надо тщательно проверять, чтобы у всех проектов опции были одинаковые.

Вот такой рецепт я использую для себя.
Слышал о возможности создания пакетных файлов, но ИМХО это гимор.

Ответ отправил: Unreal2004 (статус: 2-ой класс)
Ответ отправлен: 01.05.2007, 13:14
Оценка за ответ: 5
Комментарий оценки:
Проблемма в том, что при внесении изменения в main.c придется открывать персонально каждый проект и линковать его. Именно этого я и хотел избежать.
Тем не менее, спасибо за совет.

Отвечает: kool
Здравствуйте, Лука!
Можно использовать командный файл и
вызывать в нем компиляцию и линковку нужных файлов.
Удачи!
---------
I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 01.05.2007, 16:35
Оценка за ответ: 5
Комментарий оценки:
Похоже, так и придется делать.
Но я надеялся, что в DS есть какой-нибудь аналог makefile...


Вопрос № 84.956
Пишу в C++Builder6. Есть функция в которую передается хэндл окна h_wnd и далее создается форма, родителем которой является указанное окно.
В делфи это делается так:
Form1:=TForm1.CreateParented(h_wnd);
А как сделать подобное в C++Builder6?
Отправлен: 01.05.2007, 13:57
Вопрос задал: Diver (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Lomer
Здравствуйте, Diver!
Воспользуйтесь WINAPI функцией SetParent

::SetParent(Form1->Handle, hwnd);
^ ^
хэндл дочернего окна хэндл нового родителя

При необходимости поставьте в TForm1::FormPaint Form1->Repaint()

Ответ отправил: Lomer (статус: 4-ый класс)
Ответ отправлен: 01.05.2007, 16:34

Отвечает: John Paramol
Здравствуйте, Diver!

Средствами VCL это это можно сделать как минимум 2 способами:
1)
TForm1 *F = (TForm1*)CreateParentedControl(TForm1::ClassType(),Handle);
F->Show();
2)
В классе TForm есть конструктор, принимающий в кач. параметра дескриптор родительского окна.
Но по умолчанию в классе TForm1 он не объявлен. Если в классе TForm1 в разделе public вставить конструктор такого вида:
__fastcall TForm1(HWND ParentWindow):TForm(ParentWindow) { }
То можно создавать экземпляр формы так:
TForm1 *F = new TForm1(Handle);
F->Show();

Второй способ в конечном счете работает по принципу первого.
Но, ф-ия CreateParentedControl должна применяться для родительских окон, НЕ являющихся окнами, создаваемыми библиотекой VCL. Иначе, возникают проблемы в деструкторе объектов.
---------
1=2, at values 1 large enough
Ответ отправил: John Paramol (статус: 7-ой класс)
Ответ отправлен: 02.05.2007, 09:15


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 (beta) от 02.05.2007
Яндекс Rambler's Top100

В избранное