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

» FAQ по Borland C++ Builder

Автор: Tantos
Дата сообщения: 24.12.2007 06:46
Andrey32, при создании проекта не надо было ставить галочку "Use VCL" .
Автор: Andrey32
Дата сообщения: 24.12.2007 14:35

Цитата:
Andrey32, при создании проекта не надо было ставить галочку "Use VCL"

При создании проекта я сделал как в книжке "C/C++ и Borland С++ Builder 2006"
Бориса Пахомова.
На странице 10 там написано: "...снимите флажок Use VCL..." Именно так я и поступил.
Лучше скажите, сколько должен весить нормальный консольный экзешник из исходника в несколько строк? И, может быть, подскажете литературу, где внятно описаны настройки Borlanda.
Собственный хелп у него оставляет желать лучшего, у меня в добавок еще студия, там всего намешано
Вообще забавно. Начал изучать язык, и по нему все понятно и синтаксис и парадигма. А основные трудности вызывает именно отсутствие более-менее полной информации по инструментам.
Автор: Tantos
Дата сообщения: 25.12.2007 04:19
1. Project->Options->Directoies/Conditionals, Conditionals defines добавьте _NO_VCL
2. Уберите все #include, которые вы считаете лишними. При компиляции в релиз: Project->Options->Compiler, Release; Project->Options->Linker, убрать Use debug libraries.

Andrey32

Цитата:
Лучше скажите, сколько должен весить нормальный консольный экзешник из исходника в несколько строк?

В зависимости от среды разработки и используемого языка. На асме можно и в несколько
килобайт уложиться.
Автор: yr13
Дата сообщения: 25.12.2007 18:27
Вот есть код на Pascale:

Код:
for i := 1 to n do

for j := 1 to n do

if z[i] > z[j] then

begin

a := z[i];

z[i] := z[j];

z[j]:=a;

end;

j := 1; o := 1;


for i := 1 to n do

if z[i]<l then {если заявка меньше процессорного кванта}

begin

inc(t1); {находим время обработки коротких заявок}

wm1 := z[i] * l * p / (p-1); {среднее сремя простоя процессора}

m1 := m1 + wm1; {находим среднее время ожидания}
{процессора для коротких заявок}
end

else

begin

k[j] := z[i]; {иначе организуем массив к длинных заявок}

inc(j); {считаем число длинных заявок}

end;

o := j-1 ;

i := 1; t2:=0;

repeat

if k[i] > 2*l then {если заявка больше удвоенного}

begin {процессорного кванта}

k[i] := k[i] - 2 * l;

inc(t2);

end

else

begin

if o=0 then break; {если длинных заявок нет}

inc(t2);

wm2 := k[i] * 2 * l * p / (p-1);

m2 := m2 + wm2; {находим среднее время ожидания}
{процессора для длинных заявок }
inc(i);

end;

until (i=o+1);

writeln('сумма длин заявок ', sum);

writeln(' время обработки коротких заявок ',t1);

writeln(' время обработки длинных заявок (двоичным квантом) ',t2);

writeln('среднее время ожидания процессора для коротких заявок ',m1);

writeln('среднее время ожидания процессора для длинных заявок ',m2);

readln;
end.
Автор: vidic777
Дата сообщения: 25.12.2007 22:16

Цитата:
Вот есть код на Pascale


Цитата:
Вопрос - Как мне в Borland C++ написать REPEAT и UNTIL?

Присоединяюсь к вопросу, хотелось бы еще услышать мнения. ИМХО аналог "REPEAT" - циклы "while" или "do while"
Автор: BattleMage
Дата сообщения: 27.12.2007 14:12
Доброго времени суток, у меня возник такой вопрос. Я решил использовать функцию PlaySound для воспроизведения wav файла, но я так понимаю библиотеку WinAPI ещё подключить нужно. Как сделать это? Извините за тривиальный вопрос, но я с ними в первый раз работаю...
Автор: Tantos
Дата сообщения: 28.12.2007 01:53
BattleMage

Код:
#include <mmsystem.h>
Автор: Garrett
Дата сообщения: 28.12.2007 15:28
Как поставить последние бесплатные Тнт конролы (2.3.0) под C++Builder 2007?
Автор: SaTaR
Дата сообщения: 02.01.2008 09:20
Написал программу

Код: //8.14a
#include<stdio.h>
#include<string.h>
#include<alloc.h>
int main()
{ int i,j;
char S[100], N[100], P[100];
puts("put name, surname, patronymic \n");
scanf("%s",S);

//name

for(i=0; S[i]!=' ';i++)
N[i]=S[i];

//patronymic

for(j=0; S[i]!=' ';j++)
P[j]=S[i];
printf("Name %s, patronymic %s \n",N,P);
}
Автор: CBB
Дата сообщения: 02.01.2008 11:10
SaTaR
Ты i и j перепутал во втором цикле
Или забыл i++
Автор: diaz85
Дата сообщения: 07.01.2008 14:30
Добрый день. Возник вопрос: с помощью чего в билдере 6 получить возможность работать с БД (MS SQL) на удаленном компьютере? До этого работал только с парадоксом. а тут как быть?
Автор: inner
Дата сообщения: 07.01.2008 17:32
diaz85
Да хотя бы с помощью ADO.
Автор: diaz85
Дата сообщения: 08.01.2008 14:27
inner
а через бде не получится?
Автор: Garrett
Дата сообщения: 08.01.2008 17:18
diaz85
Забудь про BDE, работай через ADO.
Автор: HellSatan
Дата сообщения: 08.01.2008 21:29
как копировать нормально из TMemo в буфер клавиатуры русский текст путём нажатия кнопки ?
пробовал
Memo1->CopyToClipboard(); и Clipboard()->AsText=Memo1->Text ;
при обоих способах вместо русского языка выходят кракозябры (
Автор: vndovr
Дата сообщения: 08.01.2008 22:22
Здесь что-то по этой теме
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=780
Автор: Garrett
Дата сообщения: 09.01.2008 07:24
HellSatan
Это проблемы WindowsXP и такое наблюдается во многих или всех программах. Для лечения сделай файл cp.reg и запусти его:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
@="c_1251.nls"
"1250"="c_1251.nls"
"1252"="c_1251.nls"
Автор: HellSatan
Дата сообщения: 09.01.2008 09:35
Garrett
у меня в реестре так и стояло но не в этом дело програма будет запускаться не только у меня не факт что на стороннем компе будет доступ к реестру
vndovr
не помогло
мне советовали также обратить внимание на функции AnsiToOem() и AnsiToUtf8() но они тоже к сожелению не дают нормальный русский язык
Автор: Garrett
Дата сообщения: 09.01.2008 10:19
HellSatan
Стояло или не стояло - не знаю. Запусти у себя ЗеБат к примеру. Скопируй из письма русский текст и вставь обратно. Язык до копирования и перед вставкой должен быть при этом переключен на En. Если будут вопросики или другая билеберда, то примени мой рег-файл. затем снова проверь. Если наладится, а оно наладится, то проблем с программой быть не должно.
Если не хочешь возиться с реестром по моему методу -надо создавать настоящие юникодовые строки и копировать в буфер обмена только юникод.
Автор: HellSatan
Дата сообщения: 09.01.2008 13:39
Garrett

Цитата:
Скопируй из письма русский текст и вставь обратно. Язык до копирования и перед вставкой должен быть при этом переключен на En.

не с этим всё в порядке при обычном копировании (выделить текст Ctrl+C а потом Ctrl+V или мышью копировать - вставить) всё работает нормально не работает только по нажатию кнопки в буффер текст копируется а вставляются из буфера кракозябры

Цитата:
Если не хочешь возиться с реестром по моему методу -надо создавать настоящие юникодовые строки и копировать в буфер обмена только юникод.

т.е. так Memo1->Lines->Add(AnsiToUtf8(TEdi1->Text)); ???
Автор: Garrett
Дата сообщения: 09.01.2008 15:12
HellSatan
инициализация буфера обмена
...
подготовка данных wchar_t* hMem
...
HANDLE h = SetClipboardData( CF_UNICODETEXT, hMem );
if ( h == NULL ) {
не получилось
}
CloseClipboard();

подробнее см.МСДН(я специально не привожу весь код)

Для конвертации используй MultiByteToWideChar, хотя может у Борланда это делается как-то по-своему.
Автор: yurich_v
Дата сообщения: 10.01.2008 05:18
Ребята, не подскажете, как зарегистрировать свой новый графический класс в теле модуля, так как это делается в Дельфи:

initialization
TPicture.RegisterFileFormat('abc', 'ABC Image File', TABCImage);
finalization
TPicture.UnregisterGraphicClass(TABCImage);

А то приходится регистрировать при создании и уничтожении формы:

void __fastcall TForm4::FormCreate(TObject *Sender)
{
    TPicture::RegisterFileFormat(0,"abc","abc", __classid(TABCImage));
}

void __fastcall TForm4::FormDestroy(TObject *Sender)
{
    TPicture::UnregisterGraphicClass(0,__classid(TABCImage));
}

Коряво как-то получается
Автор: diaz85
Дата сообщения: 13.01.2008 18:07
А как с помощью ADO записи в таблицу вставить? или проапдейтить необходимые записи? в BDE был SQLUpdate .. а тут что-то пока аналога не нашел..
Автор: Tantos
Дата сообщения: 14.01.2008 03:26
diaz85, вариантов уйма! ADOCommand/ADOQuery и т.п. Можно ADODataSet через Insert/Edit/Post. Для конкретного примера укажи БД, таблицу и ее поля .
Автор: diaz85
Дата сообщения: 14.01.2008 10:18
Tantos
ну вот например банальный пример. есть табличка (напр T1) в ней три varchar поля (F1, F2, F3). Информация для добавления новой запись берется из 3-х Edit-ов (данные вводятся в эдиты пользователем). Такой пример подойдет?
Автор: Tantos
Дата сообщения: 15.01.2008 03:53
diaz85,
раз (ADOCommand - аналогично)

Код:
ADOQuery->SQL->Clear();
ADOQuery->SQL->Add("UPDATE t1 set f1=:f1, f2=:f2, f3=:f3 where id=:id");
ADOQuery->ParamByName("F1")->Value = Edit1->Text;
ADOQuery->ParamByName("F2")->Value = Edit2->Text;
ADOQuery->ParamByName("F3")->Value = Edit3->Text;
ADOQuery->ExecSQL();
Автор: rvsn12
Дата сообщения: 15.01.2008 09:34
Кто-нибудь использовал компонент Advanced Data Export? Проблема в следующем,фильтрую из старой базы dbf ( записей 12млн.) компонентом tdbf и получаю в грид результат,сохраняю при помощи Advanced Data Export полученное в файл dbf на диске командой execute(),файл создается и все в файл записывается,только после этого проц грузиться на 100% и лечиться только снятием приложения. В чем проблема?
Автор: diaz85
Дата сообщения: 15.01.2008 20:56
Tantos

вот спасибо
Автор: diaz85
Дата сообщения: 18.01.2008 18:17
Чувствуется что скоро завалю все тут вопросами)

Вот что то не могу сообразить в чем дело:

есть 2 формы. в хедере одной после описания класса идет описание моих переменных и присвоение им начальных значений. во второй форме объявлены они же, но со спецификацией extern. При определенном событии во второй форме она меняет значения этих переменных. затем я в первой форме проверяю изменились ли значения переменных.... но они остаются первоначальными... присвоенными при инициализации... в чем может быть трабла??
Автор: Garrett
Дата сообщения: 18.01.2008 19:49
diaz85
Лучше общие переменные вынеси в отдельный cpp-файл, а в h-файле объяви их также с extern'ом. Затем в каждую форму подключи этот хэдер.

Страницы: 12345678910111213141516171819202122232425262728

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


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