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

» FAQ по Borland C++ Builder

Автор: vidic777
Дата сообщения: 30.01.2007 00:19
royt

Цитата:
Существующие библиотеки (если есть исходники) компилируются без вопросов?

Могут быть проблемы (хотя решаемые) те компоненты что пользую я имели поддержку BDS 2006.

Цитата:
Если были затыки - то какого рода?
Если, например, возьмем JVCL 3.20 - то там самостоятельно можно очень долго исходники править...

Мне пришлось от JVCL отказаться и переделать проекты заново (благо они небольшие были и до конца недоделанные). Судя и доки к JVCL 3.0 и патча к ней "JVCL300d9pPatch.zip" эта версия BDS 2006 не поддерживает. Да ИМХО JVCL очень уж громоздкая хотя там и много полезных вещей.
Автор: monsoon
Дата сообщения: 30.01.2007 10:49
royt
Я когда-то перед переходом с BCB5 на BCB6 искал все компоненты для BCB6, используемые в уже созданных проектах под BCB5.
Помню, все равно были проблемы с перекомпиляцией, что естественно - другие пути и т.д.
Чтобы минимизировать время на переделку я вроде делал так: в новую папку копировал юниты, создавал в BCB6 новый проект, удалял из него Unit1, сохранял проект с таким же именем как в BCB5 и добавлял скопированные юниты.
Имхо, если будут использоваться новые возможности тогда, наверно, имеет смысл переходить на BDS 2006.
vidic777
А что в нем улучшено в плане эргономики?
[offtop] Пользуюсь на работе и дома двумя неплохими программами, сделанными в стиле XP, автор которых в справке сообщает, что написаны они им на Delphi 3! [/offtop]
Автор: royt
Дата сообщения: 30.01.2007 12:59
Спасибо всем большое за ответы!
Кстати, JVCL 3.30 по идее уже поддерживает BDS2006.
Автор: IgorXI
Дата сообщения: 22.02.2007 06:50
Подскажите, можно из порождённого потока завершить главный поток и перезапустить его сначала, при этом не завершая процес.
Автор: Garrett
Дата сообщения: 22.02.2007 07:04
IgorXI
Нет.
royt
Я спокойно перешел на TurboC++Explorer, правда, в основном проекте заменил один сторонний компонент на стандартный.
TurboC++ хоть и моргает часто-часто(сплошные перерисовки при отладке), но не падает по пустякам как BCB6.
Опять же бесплатная лицензия на 100 лет не последнеее дело...
Автор: rvsn12
Дата сообщения: 28.02.2007 13:21

Прочитал в книге В. Ермолаева и Т. Сорока C++Builder: книга рецептов о применении шаблонов при динамическом связывании DLL c основным приложением. Данные шаблоны находятся в файле UTILCLS.H, поставляемом с билдером. Авторы расширяют их, включая туда исключения, и высказывают мнение что шаблоны предназначались для внутренних нужд разработчиков билдера. Пробую их использовать(и оригинальные и авторов ), но ничего пока не получается. Простая dll
-
const double ver = 1.1;
extern "C" __declspec(dllexport) double getVer()
{
return ver;
}
Тестовое приложение, если вызывать "просто" то все работает, если через шаблоны то результат 1 вместо1.1, что то с преобразованием типов и указателей, но сам пока не разобрался. Если кто знает подскажите.
void __fastcall TForm1::Button1Click(TObject *Sender)
{

TDll dll(name.c_str());
TDllProc1 <double> getVer( dll, funcName.c_str());
Label1->Caption = static_cast<double>(getVer);

}
Автор: Starik143
Дата сообщения: 02.03.2007 23:07
Скажите, кто-нибудь юзает BDS 2006 под Вистой? Я себе установил, но при запуске вылетает с ошибкой. Вылетает в момент, когда внизу написана строка
Loading assembly Borland.Studio.StarTeam.dll
Я никакие апдейты и хотфиксы не ставил, может какой-то из них исправит ситуацию?
Автор: vidic777
Дата сообщения: 03.03.2007 00:27
Starik143
По данному вопросу писали здесь http://forum.ru-board.com/topic.cgi?forum=35&bm=1&topic=28572#1

Удачи.
Автор: Starik143
Дата сообщения: 03.03.2007 00:38
Скажите, кто-нибудь юзает BDS 2006 под Вистой? Я себе установил, но при запуске вылетает с ошибкой. Вылетает в момент, когда внизу написана строка
Loading assembly Borland.Studio.StarTeam.dll
Я никакие апдейты и хотфиксы не ставил, может какой-то из них исправит ситуацию?
Автор: artiyom
Дата сообщения: 16.03.2007 17:43
У меня Windows XP и компилятор Borland. Возникло затруднение с работой с файлом bcc32.exe из командной строки.
Предположим, компилятор находится по адресу “C:\Documents and Settings\username\Desktop\Borland\BCC55\Bin\bcc32.exe”.
А файл с исходным текстом на C++ находится по адресу “C:\Documents and Settings\username\Desktop\filename”.
Что мне ввести в строку RUN, чтобы указанный файл был скомпилирован?
Автор: royt
Дата сообщения: 19.03.2007 07:57
заключать все длинные имена файлов в кавычки.

а именно:
Код: “C:\Documents and Settings\username\Desktop\Borland\BCC55\Bin\bcc32.exe” “C:\Documents and Settings\username\Desktop\filename.cpp”
Автор: artiyom
Дата сообщения: 19.03.2007 21:25
royt

Цитата:
заключать все длинные имена файлов в кавычки.

Я именно так и делаю.
Я ввел в RUN следующее:

Код: "C:\Documents and Settings\artiyom\Desktop\Borland\BCC55\Bin\bcc32.exe" "C:\Documents and Settings\artiyom\Desktop\Borland\BCC55\Examples\StdLib\icecream.cpp"
Автор: royt
Дата сообщения: 20.03.2007 08:26
artiyom
Прежде всего, запусти нормально консольную сессию (Run... cmd.exe) - чтобы было видно, чего на экран выдается и что происходит.
В запустившейся консоли уже набирай то, что пытался запускать раньше и смотри результат, что там сообщается.

exe-шник не появится, пока у тебя программа не будет правильно скомпилирована. В первую очередь из .cpp файла должен быть получен .obj - смотри, скорее всего даже его нету (если что-то запускаешь неверно или компилятор обнаружил ошибки в программе).

упрости себе жизнь - если есть возможность, лучше размести компилируемые файлы в папке с путями без пробелов, поближе к корневой директории, чтобы из-за пробелов заморочек не было. То же самое касается компилятора, его директории установки (кстати, не дело это, устанавливать программы на рабочем столе, тем более для программиста).

ps. создай где-нибудь отдельный топик и гоу туда, там обсудим, здесь не совсем подходящее место для обсуждаемого вопроса.
Автор: artiyom
Дата сообщения: 20.03.2007 21:20
royt
Я выяснил, проблема вроде была в том, что файлы которы я пытался скомпилировать требовали несколько других файлов для компиляции. Я нашел файл для компиляции которого никаких других файлов не нужно было, и он скомпилировался нормально. Что касается работы с компилятором непосредственно из окна cmd, то ты прав, так действительно комфортнее. Если в дальнейшем с этим будут проблемы то уже создам отдельную тему.

А теперь новый вопрос. Есть ли для этого бесплатного компилятора какой-нибудь графический интерфейс? Или придется ставить весь IDE, чтобы комфортно с ним работать?
Автор: royt
Дата сообщения: 22.03.2007 11:05
возможно сейчас стоит пользоваться уже Turbo C++, он вроде бесплатный. Там есть IDE.
Автор: afiget
Дата сообщения: 22.03.2007 15:52
Всем привет. Я с проблемой.
Есть огромный проект - более 20 млн строк. Часть проекта представляет собой модули для подключения всякой периферии, которые идут в исходниках. Собственно, именно поэтому проект такой огромный.
Проект изначально писали другие люди. Я занимаюсь добавлением новых функций в программу. Добавляю и отлаживаю.
Компиляция такого кол-ва строк занимает кучу времени.
Как можно сократить это время?
Может быть можно как-то модули для внешних устройств в уже скомпилированные файлы пересобрать и подключать уже скомпилированные модули.
Сейчас подключение происходит так:
#include "TModem.h"
#include "TPin.h"
#include "TCryptLib.h"
#include "NETdevice.h"
#include "Device.h"
#include "Shtrih.h"
#include "CPrinter.h"

Что посоветуете?
Автор: OdesitVadim
Дата сообщения: 22.03.2007 16:07
Программные
а) разбить на дллки
б) Перейти на другой компилятор
в) проверить, нет ли там мёртвого кода. зачистить немного. 20 млн - уж слишком - это не ОС?
Софтварные.
а) добавить оперативки
б) поставить более быстрый винт, с большим кешом, рейд массив
в) проц посильней
г) при наличии большого обёма памяти сделать рам диск. И пусть компилятор складывает туда свои временные файлы.
Автор: Tantos
Дата сообщения: 23.03.2007 06:42
1. Поищи по Яндексу "precompiled headers"
2. Что нужно сделать для увеличения скорости компиляции?
3. Компиляция большого проекта
Автор: afiget
Дата сообщения: 23.03.2007 21:51
Спасибо, посмотрю, попробую.

Цитата:
20 млн - уж слишком - это не ОС?

Нет
ПО для торговли. Куча поддерживаемой периферии. Драйвера в исходниках.
Почему так? А не спрашивайте. Ибо ответ знают только те, кто разрабатывал изначально.
Автор: UserX3
Дата сообщения: 25.03.2007 17:58
Хочу использовать TIdCoderMD5 для шифрации инфы (дешифрировать не буду - пароль к локалке). Код Button1Click следующий

Код:
MD5->CodeString(Edit1->Text);
Edit2->Text = MD5->GetCodedData();
Edit3->Text = MD5->CompletedInput();
MD5->Reset();
Автор: royt
Дата сообщения: 26.03.2007 10:08
afiget
Цитата:
Может быть можно как-то модули для внешних устройств в уже скомпилированные файлы пересобрать и подключать уже скомпилированные модули.
Именно так и стоит поступить. Оформить отдельный проект, его назначением сделать создание одинственной или целого набора библиотек (файлы .lib). В состав этого проекта включить редко- или вообще неизменяемяе модули, тогда перекомпилировать его придется только изредка (а может и вообще не придется). Подключать полученный(ые) .lib к главному проекту.

Можно также заранее компилировать вообще только объектные файлы (.obj), и их уже подключать к итоговому проекту (также, как .lib). Но концептуально это менее правильно - объектников наверняка очень много (по количеству .c/.cpp модулей) и поэтому управлять такой сворой .obj-файлов будет непросто (подключать каждый объектник к итоговому проекту, управлять им). Проще объединить их заранее в одну или несколько .lib и потом уже с этими .lib-ами работать.

afiget
Цитата:
#include "TModem.h"
#include "TPin.h"
#include "TCryptLib.h"
#include "NETdevice.h"
#include "Device.h"
#include "Shtrih.h"
#include "CPrinter.h"
Эти все заголовники и ведут к "включению" миллионов строк в компилируемые файлы? Или миллионы строк - всё-таки находятся в .c/.cpp модулях? Если второе - то рецепт описан выше. Если миллионы строк в заголовниках - то стоит исключить ненужные заголовники и/или отредактировать/разбить их содержимое с целью оставить только нужное. В общем, необходимо правильно и оптимально разбить модули проекта на части, распределив "зависимости" между модулями (которые известны только Вам, поэтому более конкретно тут трудно что-то написать).

Да, и если речь о C++Builder 6 - то для ускорения компиляции дополнительно также стоит воспользоваться bcc32pch IDE plugin, легко найти поиском в интернете.
Автор: JohnC
Дата сообщения: 31.03.2007 20:51
На форме есть Edit, при создании формы в него заношу текст большей длинны чем сам Edit, в нем показывается начало текста.
А как сделать, чтоб в Edit`e показывалось окончание строки текста?
Автор: Garrett
Дата сообщения: 31.03.2007 22:01
JohnC
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text = "wqytey eytryewt ew rewytrytew";
Edit1->SelStart = Edit1->Text.Length();
}
Автор: JohnC
Дата сообщения: 01.04.2007 08:20
Garrett
работает, СПС
Автор: RuKamikadze
Дата сообщения: 02.04.2007 13:01
Приветствую всех!

Проблема: создаю поток и загружаю информацию в файл в БИНАРНОМ режиме, потом открываю этот файл с помощью текстового редактора - и вижу НОРМАЛЬНЫЕ символы, а не "закарючки", которые должны быть. Т.е. в файл записывается информация не в бинарном режиме, а в текстовом. Ниже программа:

#include <vcl.h>
#pragma hdrstop
#include <stdlib.h>
#include <fstream.h>
#include <fcntl.h>
#include <bitset.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
short int Array_X[3]={1,2,3};

char *file_nameX = "archive/array_X.txt";
ofstream outFileX;

outFileX.open(file_nameX,ios::binary);
for(int i=0; i<3; i++)
outFileX<<Array_X[i];
outFileX.close();
}
Как сделать так, что бы информация записывалась в бинарном режиме?
Заранее благадрен!
Автор: Garrett
Дата сообщения: 02.04.2007 14:36
RuKamikadze
void __fastcall TForm1::Button1Click(TObject *Sender)
{
short int Array_X[3]={1,2,3};
char *file_nameX = "array_X.txt";
ofstream outFileX;
outFileX.open(file_nameX,ios::binary);
outFileX.write( (char*)Array_X, sizeof(Array_X) );
outFileX.close();
}
Автор: RuKamikadze
Дата сообщения: 02.04.2007 22:35
Спасибо большое Garrett - решил проблему.
Но неужели нельзя обойтись без этих функций read/write и работать с потоками напрямую, как в моем примере?

Цитата:
outFileX<<Array_X[i];

Ведь это намного понятнее и потом, если мне вдруг понадобится прочитать определенное количество бит из бинарного файла, начиная с n-го, тогда что? Ведь здесь уже функция read - не поможет, если я правильно понимаю.
Автор: Garrett
Дата сообщения: 02.04.2007 22:53
RuKamikadze
Я не знаю ни одной функции побитного чтения из файла. Не сталкивался с такими проблемами. При желании на байт всегда можно наложить структуру с нужным тебе кол-вом битов.
Имхо, при использовании "<<" в ofstream всегда будет текст, если ты не переопределишь под себя "<<"...
Автор: RuKamikadze
Дата сообщения: 02.04.2007 23:08
И еще один вопросик к пользователям Borland C++ Builder 6:

Установил на два компьютера один и тот же компонент КомПорта: "XComDrv" ver. 1.0 $rev. 20 March 2002. Создал проект с использованием этого компонента на первом компьютере. При переносе проекта на второй компьютер в процессе компиляции вылезает ошибка в h-файле:
[C++ Error] MathModUnit.h(10): E2209 Unable to open include file 'XComDrv.hpp'
в коде:
#ifndef MathModUnitH
#define MathModUnitH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "XComDrv.hpp"
#include "CSPIN.h"

Кто-нибудь сталкивался с подобной проблемой? Как её решить?
Автор: Garrett
Дата сообщения: 02.04.2007 23:18
RuKamikadze
Исправь в проекте пути к этому компоненту.

Страницы: 12345678910111213141516171819202122232425262728

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


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