Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» FAQ по Borland C++ Builder

Автор: RDV1984
Дата сообщения: 08.12.2005 10:37
Возник вот такой вопрос есть компонент Memo1 вводим в него текст.
Так же есть кнопка нужно чтобы при нажатии на нее каждый символ текста сталл отдельной картинкой и все эти картинки вывелись как будто это одна целая.
Автор: Woland13
Дата сообщения: 29.12.2005 20:23
Три года не программировал на С++, решил вспомнить, в связи с этим вопросы:
- Какая версия Builder'а на данный момент оптимальна (пользуюсь 6.0)
- Как сделать вывод на форму изображений формата jpg, с возможностью их перерисовки, то есть, чтобы можно в процессе выполнения программы, вырисовывать новые, затирать старые. ImageList позволяет хранить только bmp и ico, просто Image у меня не получилось заменить изображение (делал через LoadFromFile), точнее получилось, но опять же загружать можно только bmp или ico. Формат bmp - не удовлетворяет большим размером, благодаря нему небольшая (по коду) программа стала весить более 5.5 Mb...
Автор: ShIvADeSt
Дата сообщения: 30.12.2005 01:13
Woland13

Цитата:
Как сделать вывод на форму изображений формата jpg

Использую RxLib она позволяет расширить возможности, дав возможность загружать также джепеги.

RDV1984

Цитата:
Так же есть кнопка нужно чтобы при нажатии на нее каждый символ текста сталл отдельной картинкой и все эти картинки вывелись как будто это одна целая.

Как вариант, создаешь картинку со всеми нарисованными буквами, а потом при нажатии на кнопку просто ставишь в соответсвие букве ее позицию в картинке и рисуешь, второй вариант. Второй вариант каптурить содержимое формы в картинку и искать по координатам буквы очень трудоемок.
Автор: Woland13
Дата сообщения: 30.12.2005 13:26
ShIvADeST, скачал я RxLib v2.75 c Torry, а что теперь с этим счастьем делать не понимаю, подскажи... Да, там, кстати, было два пакета на выбор один около 3 метров, другой где-то 700КБ, я скачал меньший, не прогадал ли я?..

Всех С Наступающим Новым Годом!!!
Автор: vlesun
Дата сообщения: 30.12.2005 19:37
Ни какой RxLib не нужен. Есть стандартный TJPEGImage, им и пользуйся. Его хватит за глаза.
TJPEGImage можно преобразовать в TBitmap с помощью метода Assign.
Автор: Woland13
Дата сообщения: 01.01.2006 21:43
vlesun, спасибо, я разобрался со всем, а RxLib у меня так и не получилось установить, постоянно ошибки выдает...
Автор: Woland13
Дата сообщения: 06.01.2006 01:25
Есть вопрос - что лучше (перспективнее, удобнее,..) OpenGL или DirectX и есть ли в нете хорошие учебники по этой тематике?..
Автор: EZH
Дата сообщения: 06.01.2006 05:33
Woland13
OpenGL vs. Direct3D
http://www.computerra.ru/hitech/244024/
Автор: Woland13
Дата сообщения: 06.01.2006 17:35
EZH
Знаю, читал, но мне просто хотелось знать мнение человека, который реально работал с чем-нибудь из этого. Из статьи я понял, что пока предпочтительно DirectX, по крайней мере до тех пор пока не выйдет новая версия OpenGL. А как насчет учебников?
Автор: Kadavr
Дата сообщения: 18.01.2006 12:36
Главный Новогодний Подарок для пользователей BCB 5, 6

Спустя 5 лет с момента выхода BCB 6 появилось "счастье BCB программиста" - IDE Compiler Speed Fix. Этот твик не только ускоряет работу IDE компилятора в 2-15 раз (в зависимости от проекта), но делает code complete в BCB сравнимым по удобству с Delphi! При использовании же Bcc32Pch с интегрированным IDE Compiler Speed Fix скорость компиляции возрастает ещё больше!!! OpenSource. Must Have, вообщем. Остаётся только недоумевать, почему эти очевидные вещи реализованы Borland только в BDS 2006. Домашняя страничка Bcc32Pch (со старой 2.55 версией). Новая стабильная Bcc32Pch 2.6 с интегрированным Speed Fix.

Владельцам многоядерных/многопроцессорных систем может понравится Twine - распаралеливает процесс компиляции тем самым значительно его ускоряя. Может использоваться совместно с Bcc32Pch.
Автор: vlesun
Дата сообщения: 18.01.2006 14:33
Провел эксперимент.
C++Bulder 5. Полная компиляция проекта (сразу после запуска билдера) заняла 970 сек. Повторная (сразу после первой) 608 сек.
Bcc32Pch 2.6. Компилируется быстро, но в конце компиляции билдер вылетает с ошибкой. Пришлось перейти к версии 2.55.
Bcc32Pch 2.55. Полная компиляция проекта (сразу после запуска билдера) заняла примерно 35 сек. Повторная (сразу после первой) примерно 25 сек. Примерно, потому что при использовании Bcc32Pch время компиляции, почему-то не показывается.
Вообще-то скорость впечетляет. Если будет работать стабильно, можно пользоваться.
Автор: Kadavr
Дата сообщения: 18.01.2006 15:09
Новая версия bcc32pch 2.6dev3.

vlesun
У меня в BCB 6 пока багов не вылезло.
Автор: Denchik
Дата сообщения: 18.01.2006 16:21
тоже тестил на пятерке

Цитата:
Bcc32Pch 2.6. Компилируется быстро, но в конце компиляции билдер вылетает с ошибкой.

подтверждаю, кроме того, иногда валится Buider при ребилдах проекта. Еще, что неприятно, когда открываешь группу проектов, так он открывает в редакторе главные формы всех проектов группы. А вот скорость компиляции конечно впечатляет!

с 2.55 откомпилить не получилось, ругался, что не может открыть либу из проекта
Автор: spike
Дата сообщения: 18.01.2006 17:19
у меня BCB 6 upd 4
никаких проблем, кроме: не показывается в заголовки билдера время компиляции

и ещё вопрос возник:
иногда Билдер подвисает так конкретно
после патча подвисает также, но на меньшее время, при этом в заловоке пробегают, как я успел рассмотреть, h файлы которые включены то ли только в этой форме, то ли во весь проект
можно это как отключить и вообще для чего это ?
Автор: Kadavr
Дата сообщения: 19.01.2006 10:36
spike
Это Code Insight`s. Отключается в настройках редактора. При его работе просматриваются/разбираются все #include текущего c/cpp/hpp/h и формируется подсказка/выпадающий список. До установки Bcc32Pch я их отключал, а сейчас ими уже стало можно пользоваться.
Автор: royt
Дата сообщения: 27.01.2006 14:46
Кто уже юзал C++ Builder в Borland Developer Studio 2006 и может подсказать: научился ли он наконец линковать .dll от Visual C++ 6.0, экспортирующие классы? Т.е. не просто функции, и не .NET-классы - а именно "старые" библиотеки (совместимые с Visual C++ 6), содержащие классы.

Еще на всякий случай поясняю, о чем речь: допустим есть какая-то .dll-ка, она экспортирует функции. Если она "создана" на Visual C++ и с ней идет файл .lib (библиотека импорта), то для использования этой .dll в проекте на C++ Builder имеющийся .lib (как он уже есть) - обычно не канал, но можно было создать новый .lib, в формате понимаемом Borland C++ (делается это с помощью утилиты implib).

Если же в библиотеке (.dll) находятся не просто функции, а классы (т.е. конечно тоже функции, но теперь задекорированные еще хитрее) - то создать библиотеку импорта уже никак не удастся, т.к. в этом случае во-первых по одной инфе из таблиц экспорта .dll невозможно получить всю инфу для получения .lib для классов, во-вторых есть другие проблемы (не буду вдаваться в подробности - просто немного по-разному устроено обращение к членам классов у BC++ и VC++). Поэтому в случае классов выход один - писать обертку. Так вот, интересует - может Borland все-таки научился линковаться с .lib-ами от VC++ 6 (работать с его классами), или хотя бы какие-то утилитки присовокупил?...

ps. Интересует именно то, что описываю - линковка на автомате (или "полу-автомате" - лишь процесс был хоть как-то автоматизирован, а не ручками приходилось что-то писать), а не способы обхода ситуации с помощью оберток и тому подобного. (Имеется библиотека с классами, имеющими большой набор членов-функций, которая притом часто обновляется - поэтому "обертку" использовать очень неудобно).
Автор: mln141
Дата сообщения: 07.02.2006 11:04
Возникла следующая проблема. Надо прдключить к программе Паскалевский файл. Добавляю его в проект, но при компиляции BCB 6 ругается, что не может найти файл System.pas. Подключение последнего или прописывание пути к нему не помогает.
Помогите плз.
Автор: Woland13
Дата сообщения: 10.02.2006 17:44
Borland отказывается от развития Dephi и C++...

_http://www.computerra.ru/news/251439/
Автор: Kadavr
Дата сообщения: 17.02.2006 14:51
royt
Нет. Такого не появилось, и вряд ли появится - для этого RTTI должен быть полностью совместимым с MS-овским.
Автор: spike
Дата сообщения: 01.03.2006 15:31
надо распаковывать rar архивы
как это делать ?
Автор: EZH
Дата сообщения: 01.03.2006 17:12
spike
Проще всего вызвать консольную версию UnRar с нужными ключами (идес вместе с WinRar).
Автор: Kott
Дата сообщения: 01.03.2006 18:32
так же не сложно использовать unrar.dll
Во первых включить файл unrar.h.
Во вторых - прочесть readme.
Вот пример функции, которая распаковывает или тестирует архив - в зависимости от mode.


Цитата:
:
//Запись логов
void LogEvents(const String &message){
String tmpmessage = DateTimeToStr(Now())+"\t"+message;
Word Year, Month, Day;
TDateTime Current = Now();
DecodeDate(Current,Year,Month,Day);
TVarRec arg[3] = {2,Month,Day};
String M = Format("%2.2d",&arg[1],0);
String D = Format("%2.2d",&arg[2],0);//buffer;
String LogFile = "message"+IntToStr(Year)+M+D+".log";
ofstream file(LogFile.c_str(),ios::app);
file << tmpmessage.c_str()<<"\n";
file.close();
}
//Собствено распаковка
void ExtractArchive(char *ArcName,int Mode)
{
HANDLE hArcData;
int RHCode,PFCode;
char CmtBuf[16384];
struct RARHeaderData HeaderData;
struct RAROpenArchiveDataEx OpenArchiveData;

//Инициализируем память под структуру
memset(&OpenArchiveData,0,sizeof(OpenArchiveData));
//Заполняем структуру

OpenArchiveData.ArcName=ArcName;
OpenArchiveData.CmtBuf=CmtBuf;
OpenArchiveData.CmtBufSize=sizeof(CmtBuf);

//Что делаем - распаковываем или тестируем
//Собственно можно передавать непосредственно //флаг - не помню уже почему была выбрано так

if(Mode == 0)
OpenArchiveData.OpenMode=RAR_EXTRACT;
else OpenArchiveData.OpenMode=RAR_TEST;
hArcData=RAROpenArchiveEx(&OpenArchiveData);

if (OpenArchiveData.OpenResult!=0)
{
LogEvents("Error open archive "+ (AnsiString)ArcName);
return;
}


HeaderData.CmtBuf=NULL;
String Temp;
while ((RHCode=RARReadHeader(hArcData,&HeaderData))==0)
{
//TmpDir - строка которая содержит путь - куда распаковывать.
//Должна быть объявлена и инициализирована ранее

Temp = TmpDir+ExtractFileName(HeaderData.FileName);
PFCode=RARProcessFile(hArcData,RAR_EXTRACT,TmpDir.c_str(),Temp.c_str());
if (PFCode==0){
LogEvents("The file "+ (AnsiString)HeaderData.FileName + " is extracted success");
}
else
{
LogEvents("The file "+ (AnsiString)HeaderData.FileName + " is extracted failed");
}
}

if (RHCode==ERAR_BAD_DATA)
LogEvents("Error archive data "+(AnsiString)ArcName);

RARCloseArchive(hArcData);
}
Автор: spike
Дата сообщения: 02.03.2006 09:37
Kott
а где взять unrar.dll и unrar.h ?

Добавлено:
у меня есть, но для версии rar 2
а сейчас уже 3 версия архиватора
Автор: Kadavr
Дата сообщения: 02.03.2006 09:58
spike На оф сайте - www.rarlab.com
Автор: spike
Дата сообщения: 06.03.2006 15:08
млин
при подключении dll-ки unrar через lib файл
ошибка

Код: [ILINK32] Error: 'D:\!MYPROJECTS\UNRAR\GUI\UNRAR.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
Автор: tomegadeth
Дата сообщения: 06.03.2006 15:19
spike попробуй создать свою либу

Цитата:
implib.exe -c -f unrar.lib unrar.dll
Автор: Kott
Дата сообщения: 06.03.2006 15:44
Если используешь либ-файл - его обязательно необходимо перековертировать. Используй coff2omf - или грузи динамически.
Автор: spike
Дата сообщения: 06.03.2006 16:13
tomegadeth
сенькс, заработало
Автор: Pigmeich
Дата сообщения: 10.03.2006 12:57
Доброго время суток всем.
Столкнулся со следующей проблеммой:
Файлы откомпилированные билдером не хотят запускатся без доступа к некоторым библиотекам, причём если сравнивать с дельфи, то программа занимающая на дельфи 300-400 кб, на билдере вместе с библиотеками занимает около 2Мб.
Потому вопросы:
1. Есть ли способ заставить включать библиотеки (vcl60.bpl например) в исполняемые файлы?
2. Можно ли довести размер файлов до дельфийских 300-400 Мб?
Автор: dyr farot
Дата сообщения: 10.03.2006 14:27
1. на закладке свойств линкера убери галку "use dynamic RTL"
на закладке пакетов -- убери галку с runtime пакетов.
2. до 300х сотен метров простыми методами не доведеш. разве-что пойти по пути дяди нортона и нулями добивать. только смысл?..

Страницы: 12345678910111213141516171819202122232425262728

Предыдущая тема: ms exchange


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.