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

Ваш аккаунт

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

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

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

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

1
11 ноября 2005 года
kot_
7.3K / / 20.01.2000
Уважаемый ALL!
Если вы только начинаете осваивать среду разработки ВСВ - предлагаю возникающие вопросы размещать в данной теме. Не создавайте пожалуста отдельные темы - типа "Как мне запустить свое приложение на другом компьютере", "Как перевести String в char*" и тому подобное. Такие темы будут закрываться с отсылку в эту. Не обижайтесь.
Кроме того, не брезгуйте плиз, пользоваться поиском хотя бы, по нескольким критериям. Иногда бывает так, вопрос который возник у вас не столь оригинален - вполне возможно, кто то уже спрашивал его до вас :) Поверьте, отвечать на одни и теже вопросы тоже не всегда интересно.
Если вы задаете свой вопрос на форуме - что бы получить наиболее эффективный ответ - следуйте пожалуйста несложным правилам. Они просты:
0. Опишите чего вы хотели добиться.
1. Опишите ошибку которая у вас возникла, по возможности с текстом самой ошибки.
2. Если вы считаете это необходимым - приведите фрагмент(пожалуста не помещайте в свой вопрос весь листинг) кода, на который жалуется компилятор, коротко описав переменные которые используются, и как они инициализируются. Исходники высылайте или выкладывайте только в том случае, если вас об этом просят.
3. Если проблема связана с функцией какой либо библиотеки - не стесняйтесь залезть в хелп и найти там ее описание. То чтовы не рубите в английском, зато читаете Рабле в оригинале - отнюдь не оправдание. Людей для которых английский - родной, здесь немного. Пользуйтесь словарем, это дает результаты :)
4. Не забывайте - может быть ВСВ и имеет раширения по сравнению со стандартом - но тем не менее это С++. Не забывайте проверить, что в ваш проект подключены все необходимые заголовочные файлы, а так же файлы библиотек.
5. Если вы задали вопрос один раз - не нужно его повторять или дублировать, или размещать посты типа "Ну что никто не знает" и т.д. Вы рискуете узнать много разных путей, но так и не получить нужный вам ответ.
6. Форум - дело сугубо добровольное. Здесь ни кто НЕ ОБЯЗАН искать ответы на ваши вопросы. Если вам отвечают - то это только исключительно из любви к вам. :)
7. Исходя из выше сказанного, если вам не отвечают - ну возможно вас не любят :)
8. Для тех, кому нужно написать курсовую, программу, решить контрольную или тому подобное - существует раздел форума Студентам
Размещайте, плиз, свои посты там. Сообщения размещенные в данной теме - не будут перемещаться - они будут удаляться.
9. Если вы хотите пообщаться, обсудить тему, не связанную с ВСВ - милости просим: В "Отдохнем". Флуд в данном разделе не приветствуется.
Ну вроде все. Если что забыл - или не так - поправьте.
Удачи.
Страницы:
11K
13 ноября 2005 года
coder_in_law
11 / / 19.10.2005
У меня случилась вот какая хренотень: создаю я проект, в проекте одна лишь только формочка голая и всё. Далее создаю новый юнит (связку .cpp + .h) Unit2. В Unit1.h пишу
 
Код:
#include “Unit2.h”

Пока всё нормально. В Unit2.cpp наверху пишу
 
Код:
#include <gl.h>
#include <glu.h>

Потом пытаюсь сделать Билд, но Билдер выдаёт типа нашёл дохренищща ошибок в gl.h ! Это же охренеть надо! Главное не в моих файлах ошибку нашёл, а в своих же! Абсурд!
Пытался создать классы для работы с OpenGL, но ткпой Билдер мне всё запорол! Переустановил ведь ровно полчаса назад, а всё равно такая же фигня!
Помогите как исправить всё это! Очень вас прошу!
1
13 ноября 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by coder_in_law
У меня случилась вот какая хренотень: создаю я проект, в проекте одна лишь только формочка голая и всё. Далее создаю новый юнит (связку .cpp + .h) Unit2. В Unit1.h пишу
 
Код:
#include “Unit2.h”

Пока всё нормально. В Unit2.cpp наверху пишу
 
Код:
#include <gl.h>
#include <glu.h>

Потом пытаюсь сделать Билд, но Билдер выдаёт типа нашёл дохренищща ошибок в gl.h ! Это же охренеть надо! Главное не в моих файлах ошибку нашёл, а в своих же! Абсурд!
Пытался создать классы для работы с OpenGL, но ткпой Билдер мне всё запорол! Переустановил ведь ровно полчаса назад, а всё равно такая же фигня!
Помогите как исправить всё это! Очень вас прошу!


http://forum.codenet.ru/showthread.php?s=&threadid=22917&highlight=OpenGL
http://opengl.gamedev.ru/articles/

15K
21 ноября 2005 года
Праведник
1 / / 21.11.2005
Здравствуйте.
Мне с помощью моей программы нужно эмулировать работу пользователя с JAVA-апплетом(игрушкой). Пробовал анализировать графику, программа всё замечательно считывает, мышка бегает, но т.к. внешний вид апплета часто меняется, да и к тому же способ начинал работать у меня со сбоями после первой пары-тройки событий, то он оказался малопригоден. Можно ли узнать как-либо программно, что приходит на мой компьютер, заставляющее изменяться картинке на апплете, и Бильдеровской программой это ловить, то же с действиями пользователя и отсылкой соответствующих команд, не прибегая к помощи мыши? (примерно где начать копать)
И еще, у меня имеется связь программы с консольным приложением через пайпы, но когда консоль малоактивна, то запись и чтение из неё происходят без помех, но стоит консоли начать выдавать данные в довольно больших количествах и продолжительное время, на запись в неё уже ничего не поступает. Это особенность реализации пайпов и надо искать другие методы(если да, то какие), или искать ошибку у себя?
1
21 ноября 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Праведник
Здравствуйте.
Мне с помощью моей программы нужно эмулировать работу пользователя с JAVA-апплетом(игрушкой). Пробовал анализировать графику, программа всё замечательно считывает, мышка бегает, но т.к. внешний вид апплета часто меняется, да и к тому же способ начинал работать у меня со сбоями после первой пары-тройки событий, то он оказался малопригоден. Можно ли узнать как-либо программно, что приходит на мой компьютер, заставляющее изменяться картинке на апплете, и Бильдеровской программой это ловить, то же с действиями пользователя и отсылкой соответствующих команд, не прибегая к помощи мыши? (примерно где начать копать)
И еще, у меня имеется связь программы с консольным приложением через пайпы, но когда консоль малоактивна, то запись и чтение из неё происходят без помех, но стоит консоли начать выдавать данные в довольно больших количествах и продолжительное время, на запись в неё уже ничего не поступает. Это особенность реализации пайпов и надо искать другие методы(если да, то какие), или искать ошибку у себя?


По поводу пайпов - посмотри вот здесь
возмжно статья поможет разобраться.

15K
24 ноября 2005 года
ViktorM
2 / / 24.11.2005
Я начинающий, подскажите пожалуйста, как...
Здравствуйте!
У меня не получается ловушка по звуковому сигналу .Wav от приложения-1 для работы с приложением-2. Может есть пример или совет.

С уважением:( :-? :???:
1
25 ноября 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by ViktorM
Я начинающий, подскажите пожалуйста, как...
Здравствуйте!
У меня не получается ловушка по звуковому сигналу .Wav от приложения-1 для работы с приложением-2. Может есть пример или совет.

С уважением:( :-? :???:


Добавьте в ловушку кусочек сыра или колбасы. Если не сработает - используйте универсальный девайс типа "пиво". :)
P.S.
Мона подробней - что есть ловушка в вашем понимании, как не получается?

15K
01 декабря 2005 года
CENTNER
2 / / 01.12.2005
Здраствуйте, а не подскажете как нужно реализовать алгоритм расстановки цифр в массиве по возрастанию\убыванию стандарными средствами си?
Также нужен алгоритм расстановки (фамилий)в алфавитном порядке. Я пока только наинаю изуать си, поэтому интересует реализация через стандартные средсва (if,for,while и т.д.). Находить конкретный(max/min) элемент в массиве я умею, а как попроще добится изложенного выше, увы пока не догадываюсь:{
1.9K
01 декабря 2005 года
Anton Chik
175 / / 26.09.2005
изучай алгоритмы сортировки; if,for,while тебе в руки и за дело.
хотя я думал под стандартными средствами ты наоборот имеешь в виду готовые функции и библиотечки...хм...
а все же тебе надо чисто цифры сортировать или все же числа? :)
1
01 декабря 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Anton Chik
изучай алгоритмы сортировки; if,for,while тебе в руки и за дело.
хотя я думал под стандартными средствами ты наоборот имеешь в виду готовые функции и библиотечки...хм...
а все же тебе надо чисто цифры сортировать или все же числа? :)


Anton Chik
Антон - в этой теме отвечать не обязательно. Мало того - в данной теме отвечать желательно четко и конкретно - эта тема создана для людей, которые хотят получить ответ на свои вопросы. То что я не баню тебя за дебильные ответы в других темах - еще не повод отвечать в данной.
[COLOR=red]+ Anton Click[/COLOR] Всего наилучшего. Твой модератор.
CENTNER
Собствено в С/С++ отсутствует функция сортировки - и это в принципе правильно.
Но в конкретных реализациях существуют различные функции - типа Sort - в массивах строк (TString *),листах и тому подобное, существует так же реализация sort() - для каждого шаблона он отличается ровно на столько - на сколько реализация поиска максимального числа отличается для каждого из массивов.
Если это обычный массив, проблем особых нет
все что нужно тебе- сравнить два элемента:

 
Код:
if(i==j)....

если совпадает размерность величин. Если нет, или затраты на сравнение черезмерны - тогда надо использовать методологию Кнудта - но тогда на форуме искать ответы .... :)
Дело не в том что форум слаб. Для конкретного случая прийдется искать свое решение. От этого никуда не деться.
13K
02 декабря 2005 года
Посторонним В.
17 / / 16.11.2005
Цитата:
Originally posted by kot_
"Как мне запустить свое приложение на другом компьютере


Поиск не помог конкретно.
Признаться я не ожидал, что ЕХЕфайл скомпилированный из ВСВ будет требовать что-то еще для запуска на другом компьютере (где нет ВСВ).
Так например, настоятельно "просит" borlndmm.dll. Но есть такое чувство, что потребуется чуть ли ни весь Билдер установить. В тех.характеристиках ЕХЕ как Import Table кроме borlndmm.dll,имеется vcl40, tee40 и пр. Но они в отличии от borlndmm не представлены отдельным файлом.

1
02 декабря 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Посторонним В.
Поиск не помог конкретно.


:) Ну ты чисто конкретно наверно искал.

Цитата:
Originally posted by Посторонним В.

Признаться я не ожидал, что ЕХЕфайл скомпилированный из ВСВ будет требовать что-то еще для запуска на другом компьютере (где нет ВСВ).
Так например, настоятельно "просит" borlndmm.dll. Но есть такое чувство, что потребуется чуть ли ни весь Билдер установить. В тех.характеристиках ЕХЕ как Import Table кроме borlndmm.dll,имеется vcl40, tee40 и пр. Но они в отличии от borlndmm не представлены отдельным файлом.


Попытайся снять галочку Build with runtime packages. если не хочется тянуть за собой borlndmm.dll - необходимо убрать так же галку Use dinamic RTL.
Но в данном случае необходимо иметь ввиду что размер файла увеличится раз в 10.
Для того что бы определить что нужно приложению я использую два способа:
1. Утилита tdump
c:\>tdump project.exe > import.txt
2. Прога для создания инсталляторов, я в частности использую InstallShild - проще и удобней заодно позволяет динамически проверить зависимости.

362
02 декабря 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by kot_
:) Ну ты чисто конкретно наверно искал.

Попытайся снять галочку Build with runtime packages. если не хочется тянуть за собой borlndmm.dll - необходимо убрать так же галку Use dinamic RTL.
Но в данном случае необходимо иметь ввиду что размер файла увеличится раз в 10.
Для того что бы определить что нужно приложению я использую два способа:
1. Утилита tdump
c:\>tdump project.exe > import.txt
2. Прога для создания инсталляторов, я в частности использую InstallShild - проще и удобней заодно позволяет динамически проверить зависимости.



Поражаюсь стойкости и выдержке людей, которые столько раз в состоянии не то что отвечать, а просто читать одни и те же вопросы. :)

А, между прочим, человек, у которого нет интернета, через день, два или неделю сам догадывается как запустить приложение на другой машине. ... а человек, который знает что такое "import table", казалось бы... хотя, люди разные бывают...

1
03 декабря 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by _kolyan
Поражаюсь стойкости и выдержке людей, которые столько раз в состоянии не то что отвечать, а просто читать одни и те же вопросы. :)

А, между прочим, человек, у которого нет интернета, через день, два или неделю сам догадывается как запустить приложение на другой машине. ... а человек, который знает что такое "import table", казалось бы... хотя, люди разные бывают...


Хз. Я сам удивляюсь. Но лучше пусть подобные вопросы будут в одной теме.
Кстати на http://soft-best.ws появился форум для программеров. Как говорится велкам :)

15K
07 декабря 2005 года
CENTNER
2 / / 01.12.2005
Цитата:
Если это обычный массив, проблем особых нет все что нужно тебе- сравнить два элемента:
code: if(i==j)....
если совпадает размерность величин.


Не совсем понимаю вышеизложенное...
Чего я добьюсь сравнвая два элемента?
Вот, например массив: 1,3,8,5,2
Можно наверно менять их местами
if (mass>mass[i+1])
но тогда получим: 1,3,5,2,8...
Обьясните, пожалуйста, подробнее суть принципа.

259
07 декабря 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by CENTNER
Не совсем понимаю вышеизложенное...
Чего я добьюсь сравнвая два элемента?
Вот, например массив: 1,3,8,5,2
Можно наверно менять их местами
if (mass>mass[i+1])
но тогда получим: 1,3,5,2,8...
Обьясните, пожалуйста, подробнее суть принципа.


Имеется ввиду, то что методы типа sort() ничего не знают о способох сравнения упорядочиваемых элементов и поэтому требуют задания спец. функции, которая бы задавала правила сравнения элементов.
Вот пример для наглядности:

Код:
//Сортируем строки qsort - функция из runtime library
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int sort_function( const void *a, const void *b); //Правила сравнения
char list[5][4] = { "cat", "car", "cab", "cap", "can" }; //строки для сортировки

int main(void)
{
   int  x;

   qsort((void *)list, 5, sizeof(list[0]), sort_function);
   for (x = 0; x < 5; x++)
      printf("%s\n", list[x]);
   return 0;
}

int sort_function( const void *a, const void *b)
{
   return( strcmp((char *)a,(char *)b) );
}
471
12 декабря 2005 года
_MC_
178 / / 13.01.2005
Подскажите как AnsiString сконвертирвоать в WideString?
259
12 декабря 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by _MC_
Подскажите как AnsiString сконвертирвоать в WideString?


AnsiString::WideChar

Converts the AnsiString to a wide-character array.

wchar_t* __fastcall WideChar(wchar_t* dest, int destSize) const;

Description

WideChar converts the AnsiString to an array of wide characters, and returns the resulting wide-character array.

dest is a buffer the caller allocates to hold the return value. Use the WideCharBufSize method to determine the size needed to hold the entire string value.

destSize is the size, in bytes, of dest.

WideChar returns a pointer to the wide-character array that is written to dest.

AnsiString::WideCharBufSize
Returns the size of the buffer required by the WideChar function.

int __fastcall WideCharBufSize() const;

Description

WideCharBufSize returns an integer value indicating the size of the buffer required by the WideChar method in order to convert this string.

471
12 декабря 2005 года
_MC_
178 / / 13.01.2005
Цитата:
Originally posted by AlexandrVSmirno
AnsiString::WideChar

Converts the AnsiString to a wide-character array.

wchar_t* __fastcall WideChar(wchar_t* dest, int destSize) const;

Description

WideChar converts the AnsiString to an array of wide characters, and returns the resulting wide-character array.

dest is a buffer the caller allocates to hold the return value. Use the WideCharBufSize method to determine the size needed to hold the entire string value.

destSize is the size, in bytes, of dest.

WideChar returns a pointer to the wide-character array that is written to dest.

AnsiString::WideCharBufSize
Returns the size of the buffer required by the WideChar function.

int __fastcall WideCharBufSize() const;

Description

WideCharBufSize returns an integer value indicating the size of the buffer required by the WideChar method in order to convert this string.



Отличный ответ, как раз для FAQа ;)

259
13 декабря 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by _MC_
Отличный ответ, как раз для FAQа ;)


Ну ты же понял. ;) . Просто влом было с английского переводить.

15K
16 декабря 2005 года
Nes
1 / / 16.12.2005
Подскажите пожалуйста как сделать одну общую переменную для нескольких форм, то есть чтобы на одной форме я ее вводил и работал с нею а на другой я выводил ее, к примеру.
362
16 декабря 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by Nes
Подскажите пожалуйста как сделать одну общую переменную для нескольких форм, то есть чтобы на одной форме я ее вводил и работал с нею а на другой я выводил ее, к примеру.



В файле первой формы объявляешь глобально, например, int a
А в файле второй формы объявляешь глобально, опять же, extern int a, это ознчает, что такая переменная где-то уже объявлена (the true is out there :))

Можете пользоваться одной переменной

1
17 декабря 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Nes
Подскажите пожалуйста как сделать одну общую переменную для нескольких форм, то есть чтобы на одной форме я ее вводил и работал с нею а на другой я выводил ее, к примеру.


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

 
Код:
public:     // User declarations
        __fastcall TfmMain(TComponent* Owner);
       int GlobalTZifra;
//Эта переменная будет видна всем

Но лучше избегать глобальных переменных, гораздо проще в форме котороя должна использовать глобальную переменную объявить паблик-функцию и в нее передавать нужные тебе данные. Использование переменных оправданно в крайне редких случаях - в остальных случаях - это не умение программировать.
15K
17 декабря 2005 года
Fulll
2 / / 17.12.2005
Разрешите дурацкий вопрос. Мне нужно сделать запрос к БД. Смысл в том, чтобы строку символов, введенную пользователем в Edit1, вставить в SQL запрос
" SELECT * FROM 'books.db'WHERE (Author="то, что должен ввести пользователь") "
Сразу оговорюсь, что книгу Архангельского достать не могу; тех книг, что есть, явно недостаточно, и в интернете искать не могу - время сильно ограничено. Подскажите, пожалуйста. Или дайте ссылку, где можно найти нужную информацию.
Заранее спасибо.
1
18 декабря 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Fulll
Разрешите дурацкий вопрос. Мне нужно сделать запрос к БД. Смысл в том, чтобы строку символов, введенную пользователем в Edit1, вставить в SQL запрос
" SELECT * FROM 'books.db'WHERE (Author="то, что должен ввести пользователь") "
Сразу оговорюсь, что книгу Архангельского достать не могу; тех книг, что есть, явно недостаточно, и в интернете искать не могу - время сильно ограничено. Подскажите, пожалуйста. Или дайте ссылку, где можно найти нужную информацию.
Заранее спасибо.


Google.com

 
Код:
Query->Active = false;
String SQL = "SELECT * FROM 'books.db'WHERE Author ="+Edit1->Text.Trim();
Query->SQL->Add(SQL);
Query->Active = true;

OR
 
Код:
Query->Active = false;
Query->Parameters->ParamByName("@Author")->Value = Edit1->Text.Trim();
Query->Active = true;
15K
18 декабря 2005 года
Fulll
2 / / 17.12.2005
Цитата:
Originally posted by kot_
Google.com
 
Код:
Query->Active = false;
String SQL = "SELECT * FROM 'books.db'WHERE Author ="+Edit1->Text.Trim();
Query->SQL->Add(SQL);
Query->Active = true;

OR
 
Код:
Query->Active = false;
Query->Parameters->ParamByName("@Author")->Value = Edit1->Text.Trim();
Query->Active = true;


Спасибо вам большое) вы буквально спасаете мне жизнь. Еще один глупый вопрос в догонку, если не трудно..
Author ="+Edit1->Text.Trim();
.Trim()-это что?

1
18 декабря 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Fulll
Спасибо вам большое) вы буквально спасаете мне жизнь. Еще один глупый вопрос в догонку, если не трудно..
Author ="+Edit1->Text.Trim();
.Trim()-это что?


Удалить из строки лишние пробелы.
З.Ы. Интересно, никому на водительских форумах не попадались мессаги типа - "Правила читать некогда, учится водить не когда, подскажите где педель сцепления,срочно нужно доехать из пункта А в пункт Б"? :)

14K
19 декабря 2005 года
PoDoNoK
5 / / 15.12.2005
Как проще всего из HEX ого представления сконвертировать число в Лонг, Дабл и тд?

Делаю:
char inf[8];
int a;

a= HexToBin(Edit1->Text.c_str(),inf,16*sizeof(char));

И при Edit1->Text.c_str()=52222
Буфер выглядит так:
inf[0]=52
inf[1]=22
inf[2]=00

???
Думаю есть намного проще способы, подскажите пожалуйста.
Спасибо.

Сам отвечу на свой вопрос, так как всемогущий поиск всегда даёт результат. Человек так же бился как и я и ...
РЕШЕНИЕ:
char *s = "0xFF";
Memo1->Text = StrToInt(s);
ПОДРОБНОСТИ: http://borland.xportal.ru/forum/printview.php?t=13438&start=0&sid=e36bf823db9b2a9dce2b68472dd3ba8c
4.3K
20 декабря 2005 года
DeFaCe
45 / / 28.08.2005
Скажите пожалуйста, а как можно удалить n-ный символ из строки?
1
20 декабря 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by DeFaCe
Скажите пожалуйста, а как можно удалить n-ный символ из строки?


 
Код:
String MyString = "String deleted";
MyString.Delete(7,7);

удалит седьмой символ.
471
20 декабря 2005 года
_MC_
178 / / 13.01.2005
Цитата:
Originally posted by kot_
 
Код:
String MyString = "String deleted";
MyString.Delete(7,7);

удалит седьмой символ.



что-то мне кажиться что она удалит 7 символов начиная с седьмого!

 
Код:
String.Delete(int index,int count)
15K
21 декабря 2005 года
7Gnom
1 / / 21.12.2005
Доброе время суток!
Есть идеи, но не могу понять где стоит копать!
Есть ВЕБ-камера, подключенная через USB, есть(пока в разработке) прожект, который должен выводить изображение захваченное камерой на форму и сохранять его в файл.
С чего начинать разбор работы с камерой пока не понял, а заказчик ждет...

Зараннее благодарен!!!
4.3K
21 декабря 2005 года
DeFaCe
45 / / 28.08.2005
А есть идеи как можно тоже самое проделать, но с типом char*???
14K
22 декабря 2005 года
PoDoNoK
5 / / 15.12.2005
Подскажите пожалуйста, как лучше основной поток синхронизировать с нитями?
Ситуация - есть основной поток и в нём я создаю нить, теперь в основном потоке мне нужно дождаться завершения нити и далее по результатам выпленуть на форму.
Использовать WaitForSingleObj...??? Или завести таймер, который будет опрашивать какую-нибудь переменную, инициализируемую в конце выполнения нити? Как лучше?
И корректно в контексте нити модифицировать или использовать элементы формы? Т е Form1->Edit1->... Form1->ComboBox->...
Я в этом классе не сломаю ничего?
Спасибо.,
4.8K
23 декабря 2005 года
Jump
128 / / 09.11.2005
Цитата:
Originally posted by PoDoNoK
Подскажите пожалуйста, как лучше основной поток синхронизировать с нитями?
Ситуация - есть основной поток и в нём я создаю нить, теперь в основном потоке мне нужно дождаться завершения нити и далее по результатам выпленуть на форму.
Использовать WaitForSingleObj...??? Или завести таймер, который будет опрашивать какую-нибудь переменную, инициализируемую в конце выполнения нити? Как лучше?
И корректно в контексте нити модифицировать или использовать элементы формы? Т е Form1->Edit1->... Form1->ComboBox->...
Я в этом классе не сломаю ничего?
Спасибо.,



Если "нить" - это созданный через "File/New/Thread Object" поток, то в его методе Execute можно использовать замечательную команду Synchronize. О том как ее использовать тоже подробно написано в самом же юните.
Сама суть состоит в том, что: выполняем в потоке все наши действия, и с директивой Synchronize(ShowResults) выплевываем все на форму. (ShowResults - это должна быть твоя функция (без параметров) выводящая результаты)

4.8K
23 декабря 2005 года
Jump
128 / / 09.11.2005
У меня вопрос (простой, поэтому здесь):

В билдере для структур (struct) есть понятие сжатая?
(По аналогии с делфи, там для record есть понятие packed)
246
24 декабря 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Jump
У меня вопрос (простой, поэтому здесь):

В билдере для структур (struct) есть понятие сжатая?
(По аналогии с делфи, там для record есть понятие packed)


Есть объединения, есть битовые поля.

4.8K
24 декабря 2005 года
Jump
128 / / 09.11.2005
Цитата:
Originally posted by GIZMO
Есть объединения, есть битовые поля.


Пожалуйста, поподробней...
Объединения - это union? Если да, то оно мне не к стати.
Что есть битовые поля?
Мне нужно, чтобы

 
Код:
struct{
    unsigned short ID;
    __int64 data;
};

занимала 10 байт, а не 16. Большая скорость доступа к ней мне не нать. Это запись к файлику типа таблицы БД. Записей в нем уйма, и 60% пустого веса мне в нем совершенно не нужны.
246
25 декабря 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Jump
Пожалуйста, поподробней...


F1->Index->Bit fields->Ok.

4.8K
25 декабря 2005 года
Jump
128 / / 09.11.2005
Цитата:
Originally posted by GIZMO
F1->Index->Bit fields->Ok.



Нда, сухости в ответах не занимать :)

Нашел я ответ на свой вопрос (как избавиться от пустого веса в struct'ах, если скорость не критична) :

Заходим в билдере в Progect/Edit option source/
В открывшемся XML редакторе bpr-файла находим секцию
<OPTIONS>, там находим запись типа -a[n]. Здесь n - число байт шага упаковки. Поставил в своем случае -a2 и получил вес записи 10 байт.

Остался один вопрос: как сделать этоже ТОЛЬКО для моей структуры, т.е. как бы перед объявлением структуры открыть тег -а2, а после объявления восстановить исходный?

246
05 января 2006 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Jump
Остался один вопрос: как сделать этоже ТОЛЬКО для моей структуры, т.е. как бы перед объявлением структуры открыть тег -а2, а после объявления восстановить исходный?


F1->Index->#pragma->Ok
#pragma option

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