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

» Вопросы по программированию на C/С++

Автор: bomzzz
Дата сообщения: 28.12.2011 18:05
сделал, сори за беспокойства
Автор: V0lt
Дата сообщения: 02.01.2012 11:22
C Новым годом!

Есть код:

Код: typedef struct {
    CSize size;
    int bpp, freq;
    DWORD dmDisplayFlags;
} dispmode;

typedef struct {
    bool checked;
    float fr_from;
    float fr_to;
    dispmode dm;
} fratemode;

typedef struct {
    CString DeviceID;
    bool bEnabled;
    CAtlArray<fratemode> fratemodes;
    bool bApplyDefault;
} AChFR;
Автор: ValidolX
Дата сообщения: 02.01.2012 14:24
V0lt
Какая студия, какие хидера?

вот с етими компилится (VS2008)

#include <atltypes.h>
#include <atlcoll.h>
#include <atlstr.h>
Автор: V0lt
Дата сообщения: 02.01.2012 16:11
ValidolX
VS 2010

Цитата:
#include <atltypes.h>
#include <atlcoll.h>
#include <atlstr.h>

не помогло

Может просто типы наподобие CAtlArray<> не могут быть членами структуры?
Автор: kotlomoy
Дата сообщения: 02.01.2012 18:52
V0lt
Компилятор говорит, что при присвоении вы пытались получить доступ к приватному члену.
В приведенном куске кода никакого присвоения нет, о чем говорить тогда?
Автор: V0lt
Дата сообщения: 02.01.2012 20:07
kotlomoy

Цитата:
В приведенном куске кода никакого присвоения нет, о чем говорить тогда?

А я о чем. Компилятор выдает единственную ошибку и ссылается на объявление структуры AChFR. Других ошибок нет, типа все нормально. Как такое трактовать?
Автор: Red Planet
Дата сообщения: 03.01.2012 11:12
Добрый день. Скажите, можно ли как-то сделать, чтобы записи занимали всю ширину TabControl'а?

Например, есть у нас TabControl с тремя записями. Ширина TabControl'а равна 300 пикселей. Чтобы записи занимали весь таб, ставим TabWidth равным 99. 99*3=297. Оставшиеся три пойдут на границы между табами. Только вручную каждый раз меняя можно добиться того, что я хочу?

Автор: bomzzz
Дата сообщения: 03.01.2012 11:24
TabControl с тремя вкладками
чета не понял ни фига что ты хочешь, лучше бы нарисовал
Автор: ValidolX
Дата сообщения: 03.01.2012 14:26
V0lt
давайте уж тогда весь проект, что за чудеса творятся
Автор: V0lt
Дата сообщения: 03.01.2012 15:43
ValidolX
Проект большой

Сейчас там статический массив. А я переделываю в динамический. Пока поменял лишь имена и объявления и большую часть еще не трогал. В итоге при компиляции получаю только одну ошибку при объявлении структуры AChFR. При этом по поводу извращений типа

Код: AChFR AutoChangeFullscrRes;

if ( pApp->GetProfileBinary(IDS_R_SETTINGS, IDS_RS_FULLSCREENRES, &ptr, &len) ) {
    if ( len == sizeof(AChFR) ) {
        memcpy( &AutoChangeFullscrRes, ptr, sizeof(AChFR) );
    }...
Автор: ValidolX
Дата сообщения: 04.01.2012 22:47
V0lt
мда, крутой прожект, я не собрал его
вобщем в 2010 тоже все работает (в отдельном, тестовом проекте), видимо какаято настройка в проекте мешает....
надо искать и анализировать
Автор: BagaBaga
Дата сообщения: 06.01.2012 12:23
Любопытный вопрос. Стандартные (встроенные типы) в С++ ни как не рекгируют при арифметических операциях на переполнение (разрядной сетки), т.е. они выполняются "как бы в кольце". Какие есть библиотеки типов, в которых это поведение отличается, например, выбрасывается исключение Overflow, а так же поддерживается работа с +Inf, -Ind, NaN
??
Автор: Molniev
Дата сообщения: 06.01.2012 13:34
BagaBaga
Унаследовалось для совместимости с Си.
Вот это вам не подойдет: SafeInt?
Вообще свой написать не сложно))
Автор: BagaBaga
Дата сообщения: 06.01.2012 15:56
Хмм, написать вроде и можно, но это только до тех пор, пока не потребуется "что-то" чуть больше, например, double. А заниматься велосипедостроительством есть желание только убедившись, что других путей нет...
Автор: Garrett
Дата сообщения: 06.01.2012 19:42
BagaBaga
Можно использовать заведомо больший тип и не иметь проблем с переполнением (типа все ваши вычисления вокруг сотни тысяч, берете тип int).
Автор: karakurt2
Дата сообщения: 06.01.2012 20:13
Есть библиотеки с произвольной точностью представления чисел. Вот далеко не полный перечень: boost, LEDA, GMP, CLN. В LEDA при возникновении проблем с точностью происходит переключение на более тяжеловесный тип данных потому что геометрические алгоритмы очень критичны к точности чисел. Как это реализовано, можно, наверное, подсмотреть в открытом для академических целей коде этой библиотеки.
Автор: BagaBaga
Дата сообщения: 06.01.2012 22:47
Спсибо, Garrett & karakurt2. Надеюсь, кто ещё что знает - кинет ссылки\названия.

И к самим постам:
не всегда возможно вырать заведомо больший тип данных. Просто, хотя результат и ограничен, но при промежуточных вычислениях может произойти переполнение разрядной сетки (вероятно, это приведёт к пониманию необходимости смены вычислительного метода или хотя бы порядка вычислений). Лучше, уж пусть произойдёт останов, чем неправильный результат будет использоваться далее...

Про библиотеки с произвольной точностью. Штуки хорошие, но не для моих задач. Потому что достаточно медленно, да и не требуется. Точность коэффициентов реакций известна, и считать с большим чем в два раза запасом "точности" нет ни какого смысла - просто потеря времени.
Автор: bomzzz
Дата сообщения: 06.01.2012 23:13
в сопроцессоре и процессоре (mmx sse) поведение в случае переполнения и нуля настраиваются флагами. любая библиотека каким то образом их настраивает и по хорошему это должно быть отмечено в ее описании, а если не написина - значит по умолчанию наверно
Автор: cp58
Дата сообщения: 07.01.2012 12:27
BagaBaga
Вы хотите класс для работы с неограниченной(ограниченной памятью) размерностью целочисленного типа?
Автор: OlehAlex
Дата сообщения: 07.01.2012 12:47
Добрый день всем. Есть проблема
Из StringGreed в BitMap
Суть программы в следующем. Считываю из файла .bmp изображение InputImage в градациях серого. Заношу значения яркости в StringGreed1. Прделываю некие математические операции над элементами StringGreed1 и результат заношу в StringGreed2. Пока все в порядке. Теперь нужно это новое изображение OutputImage отрисовать -компонент (TImage) и сохранить в файл. Создаю указатель на TBitmap нужного размера и т.д. Вот вывод на экран


Код:

for (int y = 1; y < N+1; y++)
for (int x = 1; x < M+1; x++)
OutputImage->Canvas->Pixels[x-1][y-1]=StrToInt(StringGrid2->Cells[x][y]);
Автор: cp58
Дата сообщения: 07.01.2012 13:01
OlehAlex
TColor
Отчетливо видны 4 байта.
Приведите побольше кода, который манипулирует с StringGrid2.
Автор: OlehAlex
Дата сообщения: 07.01.2012 13:03

Цитата:

Отчетливо видны 4 байта.
Приведите побольше кода, который манипулирует с StringGrid2.

да то ясно, что 4 байта )) вопрос, как из стрингрид привести к ансигнед чар - уж не знаЮ. побитово как-то сдвинуть-но неужели нет более простого метода?

вот побольше кода


Код:

...
try
{
h=StrToInt(StringGrid3->Cells[i][j]);
}
catch (EConvertError &e)
{
ShowMessage("Необходимо ввести параметры");
return;
}
t=StrToInt(StringGrid1->Cells[x-1+i][y-1+j]);
S+=t*h;
} //floor((float)S/k+0.5); округление до целого
// возможно исключение — деление на ноль
try
{
StringGrid2->Cells[x][y] = (unsigned char)(floor((float)S/k+0.5));
}
catch (EZeroDivide &e)
{
ShowMessage("Знаменатель нормирующего коэффициента не должен быть равен нулю");
LabeledEdit2->SetFocus(); // курсор а поле знаменателя коэффициента
return;
}
...

Автор: BagaBaga
Дата сообщения: 07.01.2012 19:27
cp58,
я хочу реализацию стандарта IEEE-754 для хотя бы real (32 bit float), в идеале также double (64 bit float) и extended (80 bit float) для основных арифметических операций (+-/*), и очень бы хотелось для основных (степень, корень) и основных тригонометрических (хотя бы sin и cos) функций.
Автор: ValidolX
Дата сообщения: 07.01.2012 21:48
BagaBaga
IEEE 754 - стандарт двоичной арифметики с плавающей точкой
http://www.softelectro.ru/ieee754.html
Автор: karakurt2
Дата сообщения: 08.01.2012 08:50
BagaBaga
посмотри cephes из netlib
Автор: OlehAlex
Дата сообщения: 08.01.2012 22:31
Решение
Все, разобрался, как и говрил, делается серая палитра и используется для нового битмапа
Автор: Hanjin
Дата сообщения: 09.01.2012 12:22
Вcем привет,такая проблема,вот скрин
http://radikal.ru/F/s018.radikal.ru/i527/1201/31/4116e6c52e6b.png.html
Сиситема win7 максимальная 32bit,проц AMD,мамка тоже на AMD чипсете(хотя какая разница?),4гб операты,видео 275гтх,что еще...?
Подскажите,почему не инсталится???
Автор: V0lt
Дата сообщения: 09.01.2012 12:31
Hanjin
тебе в какую-то другую тему
http://forum.ru-board.com/topic.cgi?forum=5&topic=0570&glp
http://forum.ru-board.com/topic.cgi?forum=5&topic=29230&glp
Автор: cp58
Дата сообщения: 09.01.2012 14:55
Hanjin
Может лучше использовать официальный образ от microsoft?
Автор: V0lt
Дата сообщения: 11.01.2012 21:33

Код: CString str = _T("300, 23.976");
unsigned int frame;
wchar_t ch[1];
float fps;
int result = _stscanf_s(str, _T("%u%c%f"), &frame, ch, 1, &fps);
(result == 3 && ch[0] == ',') {
    m_time = (int)(frame/fps+0.5);
}

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


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