Вопрос № 32053: Господа эксперты, подскажите плз.
C++Builder 6.
Вопросы по элементу DBGrid.
1. Как можно узнать какая ячейка выделена, номер строки и столбца?
2. Как можно узнать что храниться в той или иной ячейки элемента DBGrid.
Заранее спасиб...Вопрос № 32071: Помогите, пожалуйста, составить цикл, который бы вычислял все натуральные числа в заданном диапазоне(например, от 1 до 100), десятичная запись которых начинается и заканчивается одной и той же цифрой. Я не понимаю как вычислить первую цифру числа. За...Вопрос № 32075: Здрасте, Эксперты!
Знаете чего такое?
HEAP[qqq.exe]: Invalid allocation size - 99999998 (exceeded 7ffdefff)
Еще Релиз не фурычит говорит память не может быть вриттен... А в дебаге все путем!
Я даже место нашел в котором такое про...
Вопрос № 32.053
Господа эксперты, подскажите плз.
C++Builder 6.
Вопросы по элементу DBGrid.
1. Как можно узнать какая ячейка выделена, номер строки и столбца?
2. Как можно узнать что храниться в той или иной ячейки элемента DBGrid.
Заранее спасибо всем кто откликнеться.
Отправлен: 23.12.2005, 12:01
Вопрос задал: AllexZ (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Zitz
Здравствуйте, AllexZ!
Я не шарю в Билдере, но посколькувопрос задается уже в третий (вобщем много) раз, то решил взглянуть и сразу пришла в голову такая штука:
DBGrid1->SelectedField->GetData ну или узнать какой тип
DBGrid1->SelectedField->FieldKind
ну или так
DBGrid1->SelectedIndex
И вообще там же в справке экзамплы есть...
Если эта инфа не помогла, то могу посоветовать обратиться в соседнюю ветку - Делфи т.к. компоненты там все равно одинаковые, т.е. формулируешь запрос так же только убираешь строчку C++Builder 6... Они то уж точно в компонентах этого продукта разбираются
Ответ отправил: Zitz (статус: 3-ий класс)
Отправлен: 23.12.2005, 18:31
Вопрос № 32.071
Помогите, пожалуйста, составить цикл, который бы вычислял все натуральные числа в заданном диапазоне(например, от 1 до 100), десятичная запись которых начинается и заканчивается одной и той же цифрой. Я не понимаю как вычислить первую цифру числа. Заранее спасибо.
Отправлен: 23.12.2005, 19:21
Вопрос задал: Commandos (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: koshi
Здравствуйте, Commandos!
Первое, что пришло в голову см. в приложении:
Приложение:
--------- Don't worry by groovy
Ответ отправил: koshi (статус: 2-ой класс)
Отправлен: 23.12.2005, 19:44
Отвечает: estiGi
Здравствуйте, Commandos!
А совсем не обязательно вычислять первую цифру именно числа. Можно переводить в строку -
char dig [10];
int num = 22;
itoa (num, dig, 10);
if (dig [0] == dig [lstrlen(dig) - 1]) {
// оно
}
А еси копаться с числами, то нужно смотреть в сторону деления по модулю - %
Ответ отправил: estiGi (статус: 9-ый класс)
Отправлен: 23.12.2005, 20:08
Отвечает: Zitz
Здравствуйте, Commandos!
Да генерь их сам и не парься!
1 2 3 4 5 6 7 8 9 входят в диапазон (0;100)? Начинаются сами на себя?
Из них натуральные 1 2 3 5 7 (вроде как) они будут у тебя всегда при диапазоне большем чем от 0 до 7
Теперь десятки
11 22 33... легко заметить что из нох натуральное только 11
Т.е. в итоге если диапазон от 0 до 100 твои ответы 1 2 3 5 7 11
А вот с сотнями и далее посложнее
1х1 3х3 7х7, 9х9 где х - любое число, как заметил (наверное) я выкинул 2х2, 4х4, 6х6, 8х8, т.к. моих математических познаний достаточно чтобы узреть что они четные т.е. деляться на 2 без остатка, 5х5 - делиться на 5, тоже выкидываем...
На этом все мои математические способности исчерпались! Но это уже сузило тебе объем работ в разы! Для дальнейшей оптимизации зови математиков...
Как сгерить все числа 1х1 из 4 знаков (например)? Все просто:
1001 + 10 = 1011 + 10 = 1021 и т.д пока не стало 1991... На этом этапе тоже можно оптимизировать...
Как найти натуральное число ? Это число которое делиться на 1 и на себя без остатка, остальное с остатком. Т.е. делаем топором цикл от i=2 до N-1 где N - твое число, в цикле
{
if (!(N%i)) {Число не натуральное и break};
}
Это тоже не супер способ! Если приглядеться то при больших диапазонах будет вычисляться ОЧЕНЬ продолжительное время...
На самом деле задача чисто математическая, а т.к. я в высшей математике почти полный ноль, то лучше тебе к матиматику обратиться, за поском решения за меньшее число операций... Он тебе скажет что-то типа: "Да тут все просто - чтобы найти натуральное число или нет его надо разложить в множетельный ряд..."
Ответ отправил: Zitz (статус: 3-ий класс)
Отправлен: 23.12.2005, 22:03
Отвечает: RedDevil
Здравствуйте, Commandos!
Есть два способа, один сказал estiGi, вот второй. Как вычислить первую, ты уже знаешь, а вторая вчисляется по такому алгоритму. Пока число больше 10, делить его на 10. В итоге получим первое число. Код в приложении.
Одно только хочу заметить, если на вход поступает одноразрядное число, например 5, то в примере esgiGi, оно будет интерпритироватся как число, у которого 1 и последняя цифра одинаковы, так что не забудь исправить это, если будешь его использовать.
Приложение:
Ответ отправил: RedDevil (статус: 2-ой класс)
Отправлен: 24.12.2005, 08:16
Еще Релиз не фурычит говорит память не может быть вриттен... А в дебаге все путем!
Я даже место нашел в котором такое происходит - когда
LVCOLUMN Column;
m_ListMain.GetColumn(0, &Column);
Чего-то надо делать!!! АЙ НИД ХЕЛП!!!
Отправлен: 23.12.2005, 21:00
Вопрос задал: Zitz (статус: 3-ий класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Jadd
Здравствуйте, Zitz!
Ну так прошел бы дальше по коду. Сложно так сказать. С виду все правильно. Шли код на xlcoder@mail.ru . Такое ощущение, что колонок нету.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 23.12.2005, 21:10 Оценка за ответ: 3 Комментарий оценки: А я не ходил? Ошибка точно в LVCOLUMN colum; m_List.GetColumn(0,&colum); Я создал новый проект там только лист по баттону1 - создаются колонки, по баттону2 код см. выше - выдает тоже самое HEAP[www.exe]: Invalid allocation size - 99999998 (exceeded 7ffdefff) Мне просто надо сменить название колонок, больше ничего не надо, я делаю m_List.SetColumn - в дебагере работает
в релизе нет... Может другой лучше способ сменить название колонок посоветуете?
Отвечает: Raptor1
Здравствуйте, Zitz!
Если ты хочешь получать текст то у тебя должен быть установлен флаг LVCF_TEXT в LVCOLUMN.mask, LVCOLUMN.pszText должен указывать на реально существующий буфер, а LVCOLUMN.cchTextMax содержать размер этого буфера. Скорее всего ты этот буфер выделить забыл
LVCOLUMN Column;
TCHAR pszBuffer[100];
Column.mask=LVCF_TEXT;
Column.pszText=pszBuffer;
Column.cchTextMax=100;
m_ListMain.GetColumn(0, &Column);
Ответ отправил: Raptor1 (статус: Студент)
Отправлен: 24.12.2005, 10:36