Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » FAQ по Borland C++ Builder

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Открыть новую тему     Написать ответ в эту тему

larin58



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть примитивная программа на С++ Builder 6 использующая функцию FindWindow() для поиска хендла окна по его заголовку, программа отлично работает там, где установлен С++ Builder 6, где его нет, программа запускается но функция FindWindow() в ней не работает...
Бинарник собран с отключенными опциями Build with runtime packages и Use dynamic RTL (что бы приложение можно было запустить на другом компьютере).
 
Подскажите куда копать?

Всего записей: 108 | Зарегистр. 25-07-2005 | Отправлено: 02:09 13-05-2010
Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
larin58
http://cbuilder.ru/index.php/topic,43.0.html

----------
Чем больше узнаю людей, тем больше люблю компьютеры.

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 05:47 13-05-2010
larin58



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
larin58  
http://cbuilder.ru/index.php/topic,43.0.html

 
Там нет ответа на мой вопрос...
У меня не выполняется функция FindWindow() на компьютерах где не стоит билдер. Остальное работает и зависимостей больше никаких нет.

Всего записей: 108 | Зарегистр. 25-07-2005 | Отправлено: 09:59 13-05-2010
Sanya2000

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В Builder есть опция, по названию функции найти её описание, а не объявление?

Всего записей: 25 | Зарегистр. 19-02-2010 | Отправлено: 00:04 18-05-2010
Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sanya2000
F1?

----------
Чем больше узнаю людей, тем больше люблю компьютеры.

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 04:31 18-05-2010
Sanya2000

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Допустим, есть функция f(), объявленная в каком-то «*.cpp» файле и описана она в «*.h» файле, в тексте программы я ссылаюсь на эту функцию несколько раз. Теперь через какое-то кол-во времени я возвращаюсь к исходникам и пытаюсь найти содержание ф-ии.
В Builder есть опция «Find declaration», она находит описание ф-и f() в файле «*.h»; но как найти её объявление, я не знаю (знаю но только через Find in Files …). В других ПО таких как IAR есть опция «Goto definition», она находит то что надо. Вот и спрашиваю, может кто докопался до этого в Builder.

Всего записей: 25 | Зарегистр. 19-02-2010 | Отправлено: 15:21 18-05-2010
Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sanya2000
Можно попробовать вариант "Find Declaration"+"Open Source/Header File" + Ctrl+F.

----------
Чем больше узнаю людей, тем больше люблю компьютеры.

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 03:39 19-05-2010
Sanya2000

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tantos
Этим и пользуюсь, тока с компилятора на компилятор переходить неудобно.
Дунал CnPack решит проблему, Нерешил.

Всего записей: 25 | Зарегистр. 19-02-2010 | Отправлено: 16:10 21-05-2010 | Исправлено: Sanya2000, 16:12 21-05-2010
olegpronin



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
c++ builder 2010
 
обнаружил, что убрали функции assignfile(), append(). нужно добавить строку в имеющийся файл..
 

Цитата:
int m;
int iFileHandle;
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
m=StrToInt(Edit1->Text);
iFileHandle = FileOpen("file.text", fmOpenWrite);
FileWrite(iFileHandle, m, 4);
FileClose(iFileHandle);
}  

 
попробовал так - работает, но файл не создает, если его не было, кроме того всегда данные перезаписывает.
может еще способ есть?

Всего записей: 5365 | Зарегистр. 31-01-2007 | Отправлено: 19:44 04-09-2010
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
olegpronin
Используй HANDLE WINAPI CreateFile. В параметрах можно указать любое поведение.

Всего записей: 2736 | Зарегистр. 16-10-2003 | Отправлено: 19:51 04-09-2010
AnGo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, кто-нить использует библу OmniThreadLibrary под C++Builder 2010 ?
Компилиться и вроде бы ставиться, по-крайней мере, в закладке Компоненты->Установленные пакеты видна, а в палитре компонентов - отсутствует.

Всего записей: 1078 | Зарегистр. 07-07-2002 | Отправлено: 07:43 27-09-2010
gislegend

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ есть у кого-нибудь код программы делитель файлов?
если не трудно скинте пожалуйста!!!!Буде очень благодарен!!!

Всего записей: 3 | Зарегистр. 31-10-2010 | Отправлено: 14:05 31-10-2010
Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gislegend
В поисковиках забанили? Нарезка и склейка файлов

----------
Чем больше узнаю людей, тем больше люблю компьютеры.

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 03:28 01-11-2010
gislegend

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tantos
спасибо большое очень помог!

Всего записей: 3 | Зарегистр. 31-10-2010 | Отправлено: 11:37 02-11-2010
asi81



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
Давно мучаюсь со след. проблемой. При написаниии кода использую символ Tab для отступа строк, при это если я нажимаю Enter билдер заполняет следуюшую строку пробелами, количество которых = количество табов в пред. строке * количество пробелов в табе. Из-за этого при открытии файла в другом редакторе все съезжает, так как "количество пробелов в табе" в  разных редакторах может отличаться. Кто-нибудь знает как можно сделать так, чтобы билдер заполнял новую строку Tabами, а не пробелами?

Всего записей: 86 | Зарегистр. 08-06-2009 | Отправлено: 13:58 02-11-2010
monsoon



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно сделать, чтобы срабатывала гиперссылка в 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);

 
Решено:
Для того, чтобы гиперссылки работали когда RichEdit расположен на панели или PageControl-е и т.п. нужно переопределить обработчик сообщений для компонента выше по уровню. Например для PageControl переопределить WindowProc для TabSheet:
FTabSheetWndProc = TabSheet1->WindowProc;
TabSheet1->WindowProc = TabSheet_WndProc;
 
А в ф-ию TabSheet_WndProc(TMessage &Message) пишем все, что относилось к TForm1::WndProc выше в примере

Всего записей: 1255 | Зарегистр. 30-01-2003 | Отправлено: 01:17 07-11-2010 | Исправлено: monsoon, 21:03 07-11-2010
Basur



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Объясните пожайлуста идиоту как добавить свой класс (*.h и *.cpp файлы), а то никак понять не могу, в ClassExplorer есть New Field,  new method, а как новый класс добавить?
Builder 6

----------
Ничто не свободно так, как мысль человека. (Девид Юм)

Всего записей: 359 | Зарегистр. 15-04-2006 | Отправлено: 20:42 07-11-2010
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Basur
Добавьте к проекту cpp- и h-файлы вашего класса. Он появится в ClassExplorer'е.

Всего записей: 2736 | Зарегистр. 16-10-2003 | Отправлено: 21:26 07-11-2010
Djorik208

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста,завал с КП. Нужно написать программу в билдере,чтобы из 3 точек на карте выбиралась та,которая имеет самое большое значение по высоте. И как задать эти точки?

Всего записей: 2 | Зарегистр. 10-11-2010 | Отправлено: 11:23 11-11-2010 | Исправлено: Djorik208, 17:31 11-11-2010
gislegend

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите прокоментируйте код
 
код:
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;
}
вместо смайликов :

Всего записей: 3 | Зарегистр. 31-10-2010 | Отправлено: 22:43 23-11-2010 | Исправлено: gislegend, 22:51 23-11-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » FAQ по Borland C++ Builder


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru