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

» FAQ по Borland C++ Builder

Автор: Tantos
Дата сообщения: 01.11.2010 03:28
gislegend
В поисковиках забанили? Нарезка и склейка файлов
Автор: gislegend
Дата сообщения: 02.11.2010 11:37
Tantos
спасибо большое очень помог!
Автор: asi81
Дата сообщения: 02.11.2010 13:58
Добрый день!
Давно мучаюсь со след. проблемой. При написаниии кода использую символ Tab для отступа строк, при это если я нажимаю Enter билдер заполняет следуюшую строку пробелами, количество которых = количество табов в пред. строке * количество пробелов в табе. Из-за этого при открытии файла в другом редакторе все съезжает, так как "количество пробелов в табе" в разных редакторах может отличаться. Кто-нибудь знает как можно сделать так, чтобы билдер заполнял новую строку Tabами, а не пробелами?
Автор: monsoon
Дата сообщения: 07.11.2010 01:17
Нужно сделать, чтобы срабатывала гиперссылка в RichEdit.
Если RichEdit располагается сразу на форме, код такой:


Код: // Unit1.cpp
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
unsigned mask = SendMessage(RichEdit1->Handle, EM_GETEVENTMASK, 0, 0);
SendMessage(RichEdit1->Handle, EM_SETEVENTMASK, 0, mask | ENM_LINK);
SendMessage(RichEdit1->Handle, EM_AUTOURLDETECT, true, 0);
RichEdit1->Text = "Компьютерный форум Ru.Board (http://forum.ru-board.com)";

void __fastcall TForm1::WndProc(Messages::TMessage &Message)
{
if (Message.Msg == WM_NOTIFY)
{
if (((LPNMHDR)Message.LParam)->code == EN_LINK)
{
ENLINK* p = (ENLINK *)Message.LParam;
if (p->msg == WM_LBUTTONDOWN)
{
SendMessage(RichEdit1->Handle, EM_EXSETSEL, 0, (LPARAM)&(p->chrg));
ShellExecute(Handle, "open", RichEdit1->SelText.c_str(),0, 0, SW_SHOWNORMAL);
}
}
}
TForm::WndProc(Message);
}


// Unit1.h
void __fastcall TForm1::WndProc(Messages::TMessage &Message);
Автор: Basur
Дата сообщения: 07.11.2010 19:42
Объясните пожайлуста идиоту как добавить свой класс (*.h и *.cpp файлы), а то никак понять не могу, в ClassExplorer есть New Field, new method, а как новый класс добавить?
Builder 6
Автор: Garrett
Дата сообщения: 07.11.2010 20:26
Basur
Добавьте к проекту cpp- и h-файлы вашего класса. Он появится в ClassExplorer'е.
Автор: Djorik208
Дата сообщения: 11.11.2010 10:23
Помогите пожалуйста,завал с КП. Нужно написать программу в билдере,чтобы из 3 точек на карте выбиралась та,которая имеет самое большое значение по высоте. И как задать эти точки?
Автор: gislegend
Дата сообщения: 23.11.2010 21:43
помогите прокоментируйте код

код:
bool PokeBlock(int from_fl, int to_fl, long unsigned int from_pos, long unsigned int size)
{
int segs = size / lit_size;

if(segs>0)
{
for(int i=0; i<segs-1; i++)
{
void* mem;
if((mem=malloc(lit_size))==NULL)
{
MessageBox(0, "Нехватает памяти!","окно",MB_OK);
return false;
}
else
{
FileSeek(from_fl,int(from_pos + i*lit_size),0);
FileRead(from_fl, mem, lit_size);
FileWrite(to_fl, mem, lit_size);
free(mem);
}
}
}

if(segs==0 || (segs-1)*lit_size < size)
{

long unsigned int t_size=0;
t_size = size-((segs==0)?0(segs-1)*lit_size));
void* mem;
if((mem=malloc(int(t_size)))==NULL)
{
MessageBox(0, "Нехватает памяти!","окно",MB_OK);
return false;
}
else
{
FileSeek(from_fl,int(from_pos + ((segs==0)?0(segs-1)*lit_size))),0);
FileRead(from_fl, mem, t_size);
FileWrite(to_fl, mem, t_size);
free(mem);
}
}

return true;
}
вместо смайликов :
Автор: Basur
Дата сообщения: 24.11.2010 12:21
Имеем:

Цитата:

TMemoryStream *MS = new TMemoryStream;
...
MS->Position = 0;
MS->SaveToFile("C:\\1.txt");
char * tmp = new char[MS->Size];
MS->ReadBuffer((void *)tmp,MS->Size);
AnsiString str = String(tmp);

В файл сохраняет правильное содержимое (то что я пишу в MS).
А вот в str еще несколько лишних символов в конце.

Как из TMemoryStream получить AnsiString?
Автор: Abs62
Дата сообщения: 24.11.2010 18:12
Basur

Код: char * tmp = new char[MS->Size+1];
MS->ReadBuffer((void *)tmp,MS->Size);
tmp[MS->Size]=0;
AnsiString str = String(tmp);
Автор: ruslrusl
Дата сообщения: 02.12.2010 20:33
Как передать переменную между формами??
объявляю в первом Unit1
int a;
Проделываю всякие процедуры, в результате чего a=некое число

во втором Unit2 пишу
extern int a;
Так вот, по идее, a должно равняться некому числу, но a всегда выводиться нулем. Так в чем косяк?? Почему не работает extern??
Автор: Garrett
Дата сообщения: 03.12.2010 18:53
ruslrusl
надо в первом Unit1
public int a;

А в форме 2
frm1.a = 3;

либо передовать через конструктор формы.
Автор: MedvedevDM
Дата сообщения: 09.12.2010 21:25
Кто подскажет, как включить в экзешник ресурсы?
Нужно включить несколько jpg
Автор: konungster
Дата сообщения: 02.01.2011 19:55
Кто-нибудь работал с Crystal reports ?
подкиньте пример LogOnServerEx для сервера mssql.

Код:
r = CreateOleObject("CrystalRuntime.Application");
rep = CreateOleObject("CrystalRuntime.Report");
rep = r.OleFunction("LogOnServerEx","crdb_ado.dll","ip_addr","db_mane","login_name","password","Provider=SQLOLEDB;Password=password;Persist Security Info=True;User ID=login_name;Initial Catalog=db_name;Data Source=ip_addr;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False");
Автор: ruslrusl
Дата сообщения: 20.01.2011 16:27
У меня есть 4 формы. По нажатию на кнопку из первой формы переходишь на вторую, из вторую в третью и т.д.

Код:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
Form1->Visible = false;
Form2->Visible = true;
Form2->Enabled = true;
}
Автор: konungster
Дата сообщения: 20.01.2011 18:30
ruslrusl
Form1->Close();
Автор: ruslrusl
Дата сообщения: 21.01.2011 15:19

Цитата:
ruslrusl
Form1->Close();

konungster
не помогло... все равно висит в диспетчере задач
Автор: konungster
Дата сообщения: 21.01.2011 17:36
Application->Terminate();
но это не правильно. ищи, почему программа не закрывается. так ли нужно использовать несколько форм?
Автор: ruslrusl
Дата сообщения: 21.01.2011 20:49
konungster

Цитата:
так ли нужно использовать несколько форм?


можно конечно в одну форму накидать все кнопочки, все лэйблы и мемо и делать их когда надо visible, но выглядит будет это отвратительно.... так что использование форм обязательно
Автор: konungster
Дата сообщения: 21.01.2011 21:11
ruslrusl
посмотри компонент TPageControl
Автор: Red Planet
Дата сообщения: 14.02.2011 14:21
Добрый день! Как на C++Builder 2010 отключить автодобавление при написании циклов, условий?

Автор: Garrett
Дата сообщения: 14.02.2011 15:58
Red Planet
Смотрите настройки.
Автор: monsoon
Дата сообщения: 14.03.2011 13:08
Скачал компонент http://www.torry.net/vcl/comms/cellular/SMSMessage.zip
Компонент маленький (архив 14 Kb) с исходниками для D6 и D7.

Программой dpk2bpk создал bpk. Инсталлировалось без ошибок.

При создании проекта кинул компонент на форму и сразу же попробовал сохранить. При сохранении ошибка: "Access violation at address 00000000. Read of address 00000000.
Save anyway?"
Компиляция проекта не проходит из-за этой же ошибки.
Может кто-нибудь глянуть в чем дело?
Автор: yres45
Дата сообщения: 19.06.2011 07:43
AHlHbD
Автор: vkramnik
Дата сообщения: 19.06.2011 12:19
monsoon
Коллега, а при чем тут bpk-файл ???
Это же просто описание ключей компилятора, путей к либам и т.п.
Для Дельфи и Билдера они практически одинаковы...
Попробуйте (сделав копию bpk) установить свойства проекта при компиляции
нужного Вам компонента примерно такими же, как и для других используемых Вами
компонент... Можете даже поставить их (свойства) по-своему, например, в части
использования памяти, оптимизации и т.п.
Уверяю Вас, все проходит на ура - не бойтесь поэкспериментировать...
Да, ес-сно, грохните перед перекомпиляцией свежесозданные hpp, obj и т.д.
Автор: monsoon
Дата сообщения: 20.06.2011 10:06
vkramnik
Задавал вопрос по данному компоненту вам в личку 13-03-2011 23:36 "Тема: компонент Delphi".
Вопрос остался без ответа. После задал в этой теме.


Цитата:
Коллега, а при чем тут bpk-файл ???

Если мне не изменяет память, программа dpk2bpk не создаст bpk, если не хватает каких-либо библиотек или исходников для компиляции. Также наличие bpk не всегда приводит к успешной инсталляции компоненты.
В данном случае все прошло успешно.

Спустя 3 месяца вопрос уже неактуален, на тот компонент забил...
Но если вы "не боитесь экспериментировать" и обладаете необходимым запасом знаний, ковырните компонент (вышеприведенная ссылка актуальна).
Возможно, это поможет понять была ли где-то моя оплошность, да и компонент может пригодиться другим "строителям".
Автор: vkramnik
Дата сообщения: 21.06.2011 07:01
monsoon
Коллега, я прошу прощения, но по поводу SMSMessage Вашего письма я не нашел... Про Dpk2Bpk и т.п. - есть, а этого, увы, нет...
Компоненту скачал, попробую сегодня поставить - отпишусь, ОК ?

добавлено
Не утерпел, поставил...
Выдало точно ту же ошибку, что и у Вас...
После игрищ с опциями уже билдеровского проекта (установки их примерно, как в моих проектах), компилятор
выдал несколько ошибок в модуле uSMSMessaging.pas в следующей процедуре на строку 398 :

390: /////////////////////////////////////////////////////////////////////////////////
391: // This method will Interrogate the parameter status set the status to it's
392: // relevant status and fire off the the statusChange event of the component
393: /////////////////////////////////////////////////////////////////////////////////
394: procedure TSMSMessaging.SetResponse(Status: Int64);
395: var loStatus : TSMSState;
396: begin
397: case Status of
398: TRANSCEIVER_BOUND, TRANSMITTER_BOUND, RECIEVER_BOUND : loStatus := ssBound;
399: ENQUIRE_RESP : loStatus := ssEnquire;
400: SUBMIT_SM_RESP : loStatus := ssSMSSent;
401: else loStatus := ssError;
402: end;
403: FState := [loStatus];
404: if Assigned( FStatusChange) then
405: FStatusChange(self,loStatus );
400: end;

Честно говоря, я в SMS-ках мало понимаю, и какие параметры там устанавливаются и проверяются - фиг знает...
Могу только предположить, что где-то вместо реального указателя читается нуль (судя по оператору в строке 404).
Аналогичная ошибка с Assigned у меня была буквально пару дней назад с компонентой VirtualStringTree - при
адаптации ее с Дельфи на Билдер. Свою ошибку я нашел и исправил. Скорее всего, тут нечто аналогичное...

Я ответил на Ваш вопрос ?
Автор: monsoon
Дата сообщения: 21.06.2011 12:12
vkramnik

Цитата:
После игрищ с опциями уже билдеровского проекта (установки их примерно, как в моих проектах), компилятор
выдал несколько ошибок в модуле uSMSMessaging.pas в следующей процедуре на строку 398 :

нашел тот проект
Т.е. вы добавили компонент на форму, паскалевские файлы в проект не добавляли и "после игрищ с опциями компилятора" удалось запустить компиляцию?
Очень интересует, какие опции для этого нужно выставить.

У меня 3 месяца назад откомпировать получилось только когда компонент не помещался на форму, а создавался его экземпляр SMSMessage1 = new TSMSMessaging(this), а в проект были добавлены (Add to Project) паскалевские файлы.

Какая ошибка у вас выдается?
У меня выдается не ошибка, а предупреждение компилятора: "(408) Constant expression violates subrange bounds".
Переписал тогда так:

Код: procedure TSMSMessaging.SetResponse(Status: Int64);
var loStatus : TSMSState;
begin

begin
if (Status = TRANSCEIVER_BOUND) or (Status = TRANSMITTER_BOUND) or (Status = RECIEVER_BOUND) then
loStatus := ssBound
else if Status = ENQUIRE_RESP then
loStatus := ssEnquire
else if Status = SUBMIT_SM_RESP then
loStatus := ssSMSSent
else
loStatus := ssError;
end;

FState := [loStatus];
if Assigned( FStatusChange) then
FStatusChange(self,loStatus );

end;
Автор: vkramnik
Дата сообщения: 21.06.2011 20:34
monsoon
Ну, я не настолько крут, чтобы еще и динамически экземпляры СМС-ок создавать (да и незачем мне),
но компонента таки скомпилировалась - с пачкой вышеупомянутых ошибок...
Киньте мне в ПМ адресок - я просто заархивирую каталог проекта и послезавтра отошлю, ОК ?
Автор: monsoon
Дата сообщения: 22.06.2011 16:30
vkramnik

Цитата:
Киньте мне в ПМ адресок

адресок кинул


Цитата:
Аналогичная ошибка с Assigned у меня была буквально пару дней назад с компонентой VirtualStringTree - при
адаптации ее с Дельфи на Билдер. Свою ошибку я нашел и исправил.

повторю свой вопрос с предыдущей страницы - как исправили?

Страницы: 12345678910111213141516171819202122232425262728

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


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