Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

(Часть 2) Я начинающий, подскажите пожалуйста как...

1
15 декабря 2007 года
kot_
7.3K / / 20.01.2000
Данная тема предназначена для размещения вопросов начинающих программистов.
Прежде чем задать вопрос здесь, вы обязаны использовать
  1. Поиск по форуму, используя ключевые слова из вашего вопроса. Как правильно использовать поиск - читайте здесь
  2. Список наиболее часто задаваемых вопросов (FAQ)
  3. Поиск по предыдущей теме
Учитывайте пожалуйста, что вопрос который лично вам кажется сложным, в большинстве случаев на форуме рассмотрен достаточно подробно. Не соблюдение этих правил, приведет к тому, что ваше сообщение будет удалено, а вы получите нарушение.
Кроме того, прежде чем размещать сообщение, ознакомьтесь с правилами.
При размещении вопросов начинающих помимо указанной темы, будет выдаваться нарушение, а тема удаляться.
Страницы:
61K
29 мая 2010 года
Pexto
1 / / 29.05.2010
Народ помогите решить проблему. Пишу базу данных в C++Builder 2009
Пытаюсь сделать вычисляемое поле.
Если делаю вычисления из числа то всё считает:
"void __fastcall TForm1::Table1CalcFields(TDataSet *DataSet)
{Table1Pribil->Value=2000 -Table1Сумма->Value;}"

Если делаю вычисления между полями, то выдаёт ошибки:
"void __fastcall TForm1::Table1CalcFields(TDataSet *DataSet)
{Table1Pribil->Value=Table1Сумма - Table1РасходыА;}"

Подскажите в чём ошибка?
14
31 мая 2010 года
Phodopus
3.3K / / 19.06.2008
Ошибки в студию
59K
10 июня 2010 года
nick42
6 / / 10.06.2010
Не подскажите ли решение..., я в своем приложении использую библиотеку LibMySQL.dll. Как бы сделать так, чтобы программа не ругалась при старте на ее отсутствие, а в процедуре onFormCreate находила в реестре путь к папке mysql и прописывала его в окружение. В общем как-то так. Вообще, возможно ли это: если программа использует специфическую библиотеку, предусмотреть первоначальный анализ ее присутствия.
59K
10 июня 2010 года
nick42
6 / / 10.06.2010
Не подскажите ли решение..., я в своем приложении использую библиотеку LibMySQL.dll. Как бы сделать так, чтобы программа не ругалась при старте на ее отсутствие, а в процедуре onFormCreate находила в реестре путь к папке mysql и прописывала его в окружение. В общем как-то так. Вообще, возможно ли это: если программа использует специфическую библиотеку, предусмотреть первоначальный анализ ее присутствия.
1.9K
15 июля 2010 года
George22
91 / / 09.12.2007
Цитата: nick42
Не подскажите ли решение..., я в своем приложении использую библиотеку LibMySQL.dll.



Как загружаете dll?
Положи ее в папку со своим приложением и:
hLib=LoadLibrary("LibMySQL.dll");
Если hLib==NULL значит dll-ки нет.

1
15 июля 2010 года
kot_
7.3K / / 20.01.2000
Цитата: George22
Как загружаете dll?


Если ругается - то вероятнее всего статически.

282
04 октября 2010 года
Bard
481 / / 26.02.2006
Как отключить (если вообще возможно) встроенную обработку исключений? Она сильно осложняет отладку программы (в моем случае разумееться). Вообщем сложность возникает при написании программы с использованием билдера (CodeGear™ C++Builder® 2009) и mingw в одном флаконе. На билдере мейкаеться гуй и екзешник, а вся основная прога лежит рядом в dll'ке. И если мне в ходе отладки приходиться использовать, скажем, ud2 то отладчик (у меня ollydbg) вываливаеться на каком-то непонятном учаске кода. И для того что бы попасть на заветный ud приходиться идти в дамп стека и прыгать на ближайший адрес возврата.
В _tWinMain все try catch яросно удалил - всёравно непомогло. В насройках проекта никаких опций для настройки обработки исключений я ненашел.
И еще есть любопытный и сильно доставучий ньюанс: когда приложение падает то окно "отправить отчет/не отправлять" выпадает всегда три раза подряд.
P.S. почему я не пишу весь код программы на билдере не спрашивать. на то есть весомые причины)
1
05 октября 2010 года
kot_
7.3K / / 20.01.2000
Цитата: Bard

P.S. почему я не пишу весь код программы на билдере не спрашивать. на то есть весомые причины)


Тебе в голову не приходит вариант - что исключения надо не отключать, а обрабатывать?

262
05 октября 2010 года
Iktomy
1.2K / / 11.10.2004
Цитата: nick42
Не подскажите ли решение..., я в своем приложении использую библиотеку LibMySQL.dll. Как бы сделать так, чтобы программа не ругалась при старте на ее отсутствие



положите dll в папку %WINDIR%\System32 - хотя это не готичьно. Тру готы ложат ее в тот же каталог, что и исполняемый файл.

1.9K
05 октября 2010 года
George22
91 / / 09.12.2007
Цитата: Bard

Как отключить (если вообще возможно) встроенную обработку исключений?



Tools->DebuggerOptions->LanguageExeptions->Add

60K
30 октября 2010 года
davinci
1 / / 15.04.2010
Такая проблема:
Есть масив символов (строка).
Например unsigned char textkey="00112233445566778899aabbccddeeff". (Ключ для шифрования, если спросите, что это и зачем).

Для дальнейшей работы надо этот масив символов сделать масивом соответствующих байт, а то есть char bytekey={0x00,0x11,0x22,...,0xee,0xff}.

Пожалуйста, помогите это сделать наиболее простым способом...

Или, если можно вводить данные в поле Edit сразу в Hex формате, а не как текст, то подскажите, как...

Юзаю C++ Builder 2007.
65K
06 ноября 2010 года
PbICb
1 / / 06.11.2010
Здравствуйте! В данный момент пишу программу, которая будет работать с MS Excel. На C++ билдер перешёл недавно, пока мало чего знаю. В общем на данный момент имеется код:

 
Код:
app = CreateOleObject("Excel.Application");
books = app.OlePropertyGet("Workbooks");
books.Exec(Procedure("Open")<<"c:/1/1.xls");
book = books.OlePropertyGet("item",1);
sheet= book.OlePropertyGet("WorkSheets",1);
app.OlePropertySet("Visible", 1);


 
Код:
void __fastcall setValue(int row,int col,AnsiString as)
{
Variant r = sheet.OlePropertyGet("Range", toText(row,col) );
r.OlePropertySet("Value", as);
}


 
Код:
AnsiString str_zn = "bla";
setValue(5,5,str_zn);


На последнем куске кода вылетает, с ошибкой:
Цитата:
Project Project1.exe raised exception class EOleSysError with message 'Неверный тип переменной'


при этом открывает мне sysvari.h, подсвечивая строку:

 
Код:
OlePropertySet(name, static_cast<TAutoArgsBase&>(args));


Как мне тогда вызывать функцию setValue?
Или может вообще не использовать AnsiString?
Заранее всем спасибо за ответ!
12K
18 ноября 2010 года
Evg64
35 / / 15.01.2007
Добрый день! Хочу написать на скрипт, который будет посылать http-запрос через объект XMLHttpRequest и будет выводить в браузер ответ (HTML-код запрашиваемой страницы).
На данный момент есть вот что:
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>Untitled</title>
    </head>
    <body>
        <SCRIPT language="JavaScript">
            //alert(1);
            var req;
            loadXMLDoc("http://ya.ru");
           
            function loadXMLDoc(url) {
                req = false;
                // branch for native XMLHttpRequest object
                if(window.XMLHttpRequest && !(window.ActiveXObject)) {
                    try {
                        req = new XMLHttpRequest();
                    } catch(e) {
                        req = false;
                    }
                    // branch for IE/Windows ActiveX version
                } else if(window.ActiveXObject) {
                    try {
                        req = new ActiveXObject("Msxml2.XMLHTTP");
                    } catch(e) {
                        try {
                            req = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch(e) {
                            req = false;
                        }
                    }
                }
                if(req) {
                    //req.onreadystatechange = processReqChange;
                    req.open("GET", url, true);
                    req.send("");
                    //alert(req.status);
                    alert(req.responsetext);
                }
            }

        </script>


    </body>
</html>

Я сохранил это как файл с расширением .html
Почему-то выводится совсем не код запрашиваемой страницы... строка:
alert(req.responsetext);
в чем здесь дело?
244
19 ноября 2010 года
UAS
2.0K / / 19.07.2006
Evg64, ну а че выводится тогда? И вообще req.responsetext неверно, т.к. нет такого свойства, есть свойство responseText. И вообще разделом ошиблись.
5
19 ноября 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Evg64
Хочу написать на скрипт, который будет посылать http-запрос через объект XMLHttpRequest и будет выводить в браузер ответ (HTML-код запрашиваемой страницы).

Что не позволяет JQuery использовать?

7.5K
21 января 2011 года
Dmitryl
55 / / 19.06.2007
Не получается разместить окно дочерней формы в отдельной куче процесса(пример из Джеффри Рихтера):
Код:
// f.h
class TChildFormProtocol : public TForm
{
__published:
//...  
private:   
        static HANDLE s_hHeap;          // описатель кучи //
        static UINT s_uNumAllocsInHeap; // счетчик созданых в куче объектов //
public:    
        void* operator new (size_t size);       //
        void operator delete (void* p);         //
};

//f.cpp
HANDLE TChildFormProtocol::s_hHeap = NULL;
UINT TChildFormProtocol::s_uNumAllocsInHeap = 0;


void* TChildFormProtocol::operator new (size_t size)
{
    if (s_hHeap == NULL) {
        // куча не существует, создаем ее
        s_hHeap = HeapCreate(0, 0, 0);

        if (s_hHeap == NULL)
            return(NULL);
    }

    // куча для объектов CSomeClass существует
    void* p = HeapAlloc(s_hHeap, 0, size);

    if (p != NULL) {
        // память выделена успешно;
        // увеличиваем счетчик объектов CSomeClass в куче
        s_uNumAllocsInHeap++;
    }

    // возвращаем адрес созданного объекта CSomeClass
    return(p);
}

void TChildFormProtocol::operator delete (void* p)
{
    if (HeapFree(s_hHeap, 0, p)) {
        // объект удален успешно
        s_uNumAllocsInHeap--;
    }

    if (s_uNumAllocsInHeap == 0) {
        // если в куче больше нет объектов, уничтожаем ее
        if (HeapDestroy(s_hHeap)) {
            // описатель кучи приравниваем NULL, чтобы оператор new
            // мог создать новую кучу при создании нового объекта
            s_hHeap = NULL;
        }
    }
}
44K
28 января 2011 года
FeelUs
57 / / 10.05.2010
А можно ли в c++ Builder 6 увидеть результат работы препроцессора, а также что-нибудь наподобие ассемблерного листинга?
33K
28 января 2011 года
hivewarrior
205 / / 16.11.2010
Цитата: FeelUs
А можно ли в c++ Builder 6 увидеть результат работы препроцессора, а также что-нибудь наподобие ассемблерного листинга?



Вроде можно. Покапайся в project/options во вкладке compiler, вроде там галочка, чтобы генерировался листинг ассемблерный.

44K
28 января 2011 года
FeelUs
57 / / 10.05.2010
Project->Options->Tasm->Generate Listing - ставлю галочку, и ни один из файлов в папке проэкта не похож на ассемблерный листинг
Но мне главное результат препроцессора.
33K
28 января 2011 года
hivewarrior
205 / / 16.11.2010
Не в тасме это ставилось.
В ХЕ это делается в compiler/advanced, в 6ке тоже далеко не в тасме делалось. Помомему lst файлы он умел генерировать.
Про работу препроцессора вроде нельзя узнать, если мне память не изменяет.
44K
28 января 2011 года
FeelUs
57 / / 10.05.2010
в Project->Options на вкладке Compiler находятся следующие панельки
Code optimization(None,Speed,Selected(B: Optimizations))
Warnings(None,All,Selected(B: Warnings))
Debugging[Debug information,Line number information,Disable inline expansions]
Pre-compiled headers(None,Use pre-compiled headers,Cache pre-compiled headers,File name:...,Stoe after:...)
Compiling(Merge duplicate strings,Stack frames,Treat enum types as ints,Show general messages,Extended error information (Q))
и пара кнопок B: Full debug, B: Release
А про результат препроцессора хотелось бы по точнее
68K
23 марта 2011 года
hobbitivan
6 / / 13.03.2011
Подскажите примеры как работать с ReadDirectoryChanges
11
23 марта 2011 года
oxotnik333
2.9K / / 03.08.2007
Цитата: hobbitivan
Подскажите примеры как работать с ReadDirectoryChanges



http://forum.codenet.ru/threads/57570-%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-ReadDirectoryChangesW

68K
08 апреля 2011 года
hobbitivan
6 / / 13.03.2011
При нажатии на кнопку, никаких событий не происходит, а прога просто зависает. Подскажите в чем проблема?

Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HANDLE hdir = CreateFile("D:\\Temp",
              FILE_LIST_DIRECTORY,
              FILE_SHARE_READ|FILE_SHARE_WRITE,
              NULL,
              OPEN_EXISTING,
              FILE_FLAG_BACKUP_SEMANTICS,
              NULL);
FILE_NOTIFY_INFORMATION Buffer[1024];
DWORD BytesReturned;
while ( true)
{
int ret = ReadDirectoryChangesW(
        hdir,
        &Buffer,
        sizeof(Buffer),
        True,
        FILE_NOTIFY_CHANGE_SECURITY|
        FILE_NOTIFY_CHANGE_SIZE|
        FILE_NOTIFY_CHANGE_ATTRIBUTES|
        FILE_NOTIFY_CHANGE_DIR_NAME|
        FILE_NOTIFY_CHANGE_FILE_NAME,
        &BytesReturned,
        NULL,
        NULL
        );
switch(Buffer[0].Action)
  {
   case FILE_ACTION_ADDED:
    Memo1->Lines->Add("Файл добавлен");
    break;
   case FILE_ACTION_REMOVED:
    Memo1->Lines->Add("Файл удален");
    break;
   case FILE_ACTION_MODIFIED:
    Memo1->Lines->Add("файл изменен");
    break;
  }
}
CloseHandle( hdir );


}
7
08 апреля 2011 года
@pixo $oft
3.4K / / 20.09.2006
Неудивительно–по умолчанию же функция в синхронном режиме работает,поэтому,пока ничего не произойдёт,она не отвиснет
68K
09 апреля 2011 года
hobbitivan
6 / / 13.03.2011
Подскажите, пожалуйста, как исправить
7
09 апреля 2011 года
@pixo $oft
3.4K / / 20.09.2006
Очевидно же,создать 2й поток либо включить асинхронный режим
68K
10 апреля 2011 года
hobbitivan
6 / / 13.03.2011
Это я понял, но как это сделать? Дописал
 
Код:
CreateFile("D:\\Temp",
              FILE_LIST_DIRECTORY,
              FILE_SHARE_READ|FILE_SHARE_WRITE,
              NULL,
              OPEN_EXISTING,
              FILE_FLAG_BACKUP_SEMANTICS|FILE_FLAG_OVERLAPPED,
              NULL);


 
Код:
OVERLAPPED ovl = {};


Код:
int ret = ReadDirectoryChangesW(
        hdir,
        &Buffer,
        sizeof(Buffer),
        True,
        FILE_NOTIFY_CHANGE_SECURITY|
        FILE_NOTIFY_CHANGE_SIZE|
        FILE_NOTIFY_CHANGE_ATTRIBUTES|
        FILE_NOTIFY_CHANGE_DIR_NAME|
        FILE_NOTIFY_CHANGE_FILE_NAME,
        &BytesReturned,
        &ovl,
        NULL
        );


Вроде должен быть теперь асинхронным, но ничего не изменилось.
63K
28 апреля 2011 года
Ivan___
16 / / 30.11.2010
Подскажите - можно как-нибудь из Мемо текст в массив чаровский загнать? что-то типо такого:
 
Код:
char *str=Memo1->Text.Trim().c_str();

Или может в поток как-нибудь это текст превратить.
Цель - пробежаться по каждой букве текста (и желательно сделать это максимально просто).
277
28 апреля 2011 года
arrjj
1.7K / / 26.01.2011
 
Код:
char * str=new char[Memo1->Text.Trim().Length()+1];
memcpy(str,Memo1->Text.Trim().c_str(),Memo1->Text.Trim().Length()+1);//Или в цикле посимвольно копируем

Ну а чтобы пробежатся по каждой букве можно так без копирования:
 
Код:
for(int x=0;x<Memo1->Text.Trim().Length();x+=1)
if(Memo1->Text.Trim().c_str()[x]=='A')
    ShowMessage(IntToStr(x)+"-й символ - А");
63K
28 апреля 2011 года
Ivan___
16 / / 30.11.2010
Работает :)
Спасибо.
68K
01 мая 2011 года
hobbitivan
6 / / 13.03.2011
как привязать к графику scrollbar? Чтобы график не сжимался до одного окна, а можно было прокрутить его. А то значений много, и график получается слишком маленьким.
69K
11 мая 2011 года
freestyler2
6 / / 11.05.2011
Здравствуйте!

Есть таймер TForm1::Timer_primerTimer(TObject *Sender), который получает некое значение каждую секунду и обрабатывает его, в зависимости от этого значения (отрицательное, ноль, положительное). После обработки рисует линию на Image1 с помощью:
 
Код:
Image1->Canvas->MoveTo(znachenie1, znachenie2);  //znachenie1, znachenie2 - некие полученные коэффициенты
Image1->Canvas->LineTo(100,100);


Цвет для рисования линии задан заранее:
 
Код:
Image1 -> Canvas -> Pen -> Color = RGB(250,0,0);

Так как таймер каждую секунду получает новое значение и обрабатывает его, то и рисует новые линии. При этом естественно остаются старые.

Что нужно:
Сделать так, чтобы перед тем как нарисовать новую линию, старая была затерта цветом фона как на картинке Image1. RGB цвЕта известен. Идеально если будет одновременно закрашиваться старая и появляться новая.

В чем проблема:
Если в конце ф-ции таймера писать изменение цвета на фоновый, то все дальнейшие линии становятся этого цвета.

Вопрос:
Какой создать цикл или ещё что-то чтобы закрашивать предыдущие линии?

P.S. Нашел ф-цию Refresh, однако она видимо не для этого..


Спасибо всем!
69K
12 мая 2011 года
freestyler2
6 / / 11.05.2011
Проблема решена!
Спасибо kazachok с cyberforum.ru!

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Randomize;
// отсюда затираем старую
Image1->Canvas->Pen->Color = clWhite; // это известный цвет фона для затирки
Image1->Canvas->LineTo(x,y);
Image1->Canvas->MoveTo(100,100);
// отсюда рисуем новую линию
x = RandomRange(0,200);
y = RandomRange(0,200);
Image1->Canvas->Pen->Color = clBlack;
Image1->Canvas->LineTo(x,y);
Image1->Canvas->MoveTo(100,100);
}
63K
27 мая 2011 года
Ivan___
16 / / 30.11.2010
Подскажите в чем косяк, текст из Edita берется только раза с третьего... Беру так:
char *str2=Edit1->Text.Trim().c_str();


============================
Вроде сам решил проблему. Но все равно интересно почему с ошибкой текст вытаскивало.
277
27 мая 2011 года
arrjj
1.7K / / 26.01.2011
Trim() создаёт временный объект, который удаляется сразу.
Либо копируй его либо используй Edit1->Text.c_str()
72K
15 июля 2011 года
323331
5 / / 08.07.2011
Не стану создавать новую тему, напишу тут.

вот скрин программы : [ATTACH=CONFIG]5233[/ATTACH]
Задача состоит в том что:
1) напротив каждого LabelEditа появляется кнопка(при наведении на него) чтобы изменить ссылу, есть форма для изменения этой ссылки. Нужно чтобы при нажатии на кнопку напротив LabelEdit в форму редактирования ссылки передавался номер LabelEdit (имя) и при сохранении данные выводились в него(в тот напротив которого была нажата кнопка редактирования).

Все это необходимо чтобы не создавать кучу форм в программе для каждого LabelEdit, а просто чтоб была одна.

ну как то так.
14
15 июля 2011 года
Phodopus
3.3K / / 19.06.2008
Не надо передавать номер, надо в форму передать содержимое едита. А после возврата из формы, установить его.
63K
18 сентября 2011 года
Ivan___
16 / / 30.11.2010
Подскажите как посмотреть что внутри динамического массива? Статические нормально можно смотреть через Local Variables, но с динамическими так не получается...
14
19 сентября 2011 года
Phodopus
3.3K / / 19.06.2008
Цитата: Ivan___
Подскажите как посмотреть что внутри динамического массива? Статические нормально можно смотреть через Local Variables, но с динамическими так не получается...


Add watch?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог