Вопрос № 58398: Здравствуйте!
Подскажите пожалуйста сайты где можно посмотреть интересные примеры классов...тока начал их осваивать...хотелось бы рассмотреть несколько интресных примеров, чтобы дальше было легче в их написании...
Заранее спасибо!...Вопрос № 58448: Добрый вечер всем!
Есть возможность взяться за проект, посвящённый реализации алгоритма задачи коммивояжора. От программы требуется не только удобный интерфейс и скорость работы, но и способность к расширению, а именно модульность. Был предложен ...Вопрос № 58454: Здравствуйте!
У меня такой вопрос: не могу освободить память из-под динамического массива структур. При запуске именно в месте удаления выдаётся ошибка следующего содержания: "Heap corruption detected: after Normal block (#182) at 0x0035550...
Вопрос № 58.398
Здравствуйте!
Подскажите пожалуйста сайты где можно посмотреть интересные примеры классов...тока начал их осваивать...хотелось бы рассмотреть несколько интресных примеров, чтобы дальше было легче в их написании...
Заранее спасибо!
Отправлен: 10.10.2006, 15:08
Вопрос задал: Минус (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Torsten
Здравствуйте, Минус!
www.codeproject.com
www.codeguru.com
Для Visual C++/MFC.
--------- #define MAGIC_NUMBER 0xdeface
Ответ отправил: Torsten (статус: 1-ый класс)
Ответ отправлен: 10.10.2006, 15:40
Вопрос № 58.448
Добрый вечер всем!
Есть возможность взяться за проект, посвящённый реализации алгоритма задачи коммивояжора. От программы требуется не только удобный интерфейс и скорость работы, но и способность к расширению, а именно модульность. Был предложен Delphi как среда разработки, но я лучше разбираюсь в Си++, и потому выбрал BCB для большей совместимости с Delphi библиотеками, написанными в будущем. Подскажите пожалуйста мне в следующих моментах:
1. как стоит правильно организовать общие для библотек данные. Я так понимаю, что есть некоторые массивы (ну для этой задачи необходимые) и алгоритмы, которые разными способами по ним "пробегают" так вот, стоит ли мне использовать стандартную библиотеку классов STL и поддерживается ли она в дельфи.
2. если нет, то выходит придётся пользоваться типичными массивами int** или лучше организовать свой класс и вывести его в DLLку и чтобы новые алгоритмы, просто наросто её использовали в своих целях.
3. посоветуйте идею вот этой модульности, во первых, какие модификатроы перед функциями и/или переменными или классами стоит использовать, чтобы в дальнейшем можно было писать библиотеки и на BCB и на Delhi. Стоит ли пользоваться экспортируемыми переменными, или правильнее только функциями и результатом (проблема в том, что зачастую результатом является путь, или точнее вектор или матрица).
4. подскажите пожалуйста, как организуется принцип как в миранде, а именно: я понимаю, что прога должна пробегать по каталогу с целью loadlibrary, но вот как мне загнать их к себе в общее меню, типа "алгоритмы" и в них будут выведены внутренние названия ну и возможно содержащие подменю. Может быть как ресурс TMainMenu в каждой биб. стоит создавать?!
Скажите пожалуйста также, как мне всё это можно унифицировать, неужели должна быть функция, которая везде имеет один. имя и набор параметров и звучит она что-то вроде "Посчитать(....)" я боюсь для разных алгоритмов разные исх. данные могут потребоваться. Вот и с выводом данных тоже немного неясно: это наверняка некорректно заставлять программистов создавать в библиотеках свои формы, на которых всё будет выводиться по своему, от этого нверняка библиотеки распухать будут.
5. И простите интересует меня понятие, чтобы в дальнейшем корректно спрашивать - всё, что я деляю, это называется SDK для некоторого приложения?! Посоветуйте ссылки, где о библиотеках можно побольше почитать, т.к. существующие у меня примеры отражают идеологию библиотек вскользь...
Спасибо заранее,
Vest
Отправлен: 10.10.2006, 22:04
Вопрос задал: Vest (статус: 3-ий класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Sergey A. Wedensky
Здравствуйте, Vest!
1. В Delphi STL, конечно, не поддерживается. Это сугубо "сишные" библиотеки.
2. Организовать свой набор классов, с которыми и будут оперировать библиотеки (или даже экспортировать классы, уналедованные от них с переопределенными виртуальными функциями) - идея хорошая. Только боюсь, не возникло бы проблем с Delphi.
3. Главное, чтобы модель вызова была одинакова. Можно использовать __pascal. Насчет переменных - они, собственно, могут быть и массивами, векторами или матрицами...
4. Если создавать ресурс, то скорее popup menu, которое можно добавлять в свое меню "Алгоритмы". А оно уже может состоять из одного пункта, или из нескольких, или иметь подменю... Можно в каждом модуле потребовать наличия функции перечисления находящихся в нем алгоритмов с их названиями и пр.
Мне кажется, лучше сразу продумать возможные наборы входных и выходных данных - задача-то не слишком широка. Тогда и проблемы вывода результатов снимаются - выводить будет, конечно, Ваше приложение, всегда в одном стиле и пр. Ну а если все-же необходимо, можно узнавать у модуля типы и количество параметров, вручную их в стек засовывать... Но что в этих параметрах передавать-то Вы как узнаете?
5. SDK - это Software Development Kit, т.е. набор средств для разработки ПО. Мне кажется, Вы делаете несколько другое, а именно, приложение с возможностью расширения, т.е. написания встраиваемых модулей сторонними производителями.
О динамических библиотеках можете почитать, например,
http://www.rtfm.4hack.com/books.php?id1=8&id2=1&id3=13
Удачи!
Ответ отправил: Sergey A. Wedensky (статус: 4-ый класс)
Ответ отправлен: 11.10.2006, 10:30
Вопрос № 58.454
Здравствуйте!
У меня такой вопрос: не могу освободить память из-под динамического массива структур. При запуске именно в месте удаления выдаётся ошибка следующего содержания: "Heap corruption detected: after Normal block (#182) at 0x00355500 CRT detected that the application wrote to memory after end of heap buffer." Работает одинакого и при malloc/free, и при new/delete. Подскажите что-нибудь, пожалуйста!
Приложение:
Отправлен: 10.10.2006, 22:34
Вопрос задала: Verena (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Хватов Сергей
Здравствуйте, Verena!
Причина обычная - вы нагадили в динамическую память: записали за границей выделенного вам блока. Вот здесь (фрагмент в приложении) вы получили массив из ks-1 элемента и тут же заполнили ks элементов (от 0 до ks-1)
Дальше я не смотрел, так что возможно что есть и ещё места.
Приложение:
Ответ отправил: Хватов Сергей (статус: 6-ой класс)
Ответ отправлен: 10.10.2006, 23:02