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

» C++ (Господа программеры)

Автор: FireBrizz
Дата сообщения: 10.07.2003 09:19
mirk


Цитата:
Приезжай будет пиво пить вместе

Ладно, в следующий раз будут отправлять - обязательно соглашусь

Если честно - то с таблицами и с БД работать неприходилось (я как бы больше системщик), я думаю что надо лезть в исходники VCL и смотреть как реализован поиск - ИМХО наверно не очень заморочено (незнаю будет ли время в связи в надвигающимся отдыхом - кое что надо привезти в порядок) может поробуеш взглянуть сам - быть может программеры дяди Борланда просто незнают о наличии русского языка (ну или кинь мне небольшой проектик с тестовой БД - самому создавать и разбираться времени точно нет мыло firebrizzСОБАЧКАpochtamt.ru)
Автор: mirk
Дата сообщения: 10.07.2003 09:33

Цитата:
Ладно, в следующий раз будут отправлять - обязательно соглашусь


Надо, посмотришь на город, кстати Чебоксары это Интернет столица поволжья и помоему культурная столица, хотя я сам в это не верю(в троллейбусе на ногу наступишь кому нибудь - обматюкают).


Цитата:
может поробуешь взглянуть сам

Уже смотрю, более менее разобрался.


Добавлено
if (rbDnvc1->Checked == True)
{tE->FieldByName("Long")->AsString="1";}
else if (rbDnvc2->Checked == True)
{tE->FieldByName("Long")->AsString="2";}
else if (rbDnvc3->Checked == True)
{tE->FieldByName("Long")->AsString="3";}
else if (rbDnvc4->Checked == True)
{tE->FieldByName("Long")->AsString="4";}
else if (rbDnvc5->Checked == True)
{tE->FieldByName("Long")->AsString="5";}
else if (rbDnvc6->Checked == True)
{tE->FieldByName("Long")->AsString="6";}
else if (rbDnvc7->Checked == True)
{tE->FieldByName("Long")->AsString="7";}
else if (rbDnvc8->Checked == True)
{tE->FieldByName("Long")->AsString="8";}
else if (rbDnvc9->Checked == True)
{tE->FieldByName("Long")->AsString="9";}
else if (rbDnvc10->Checked == True)
{tE->FieldByName("Long")->AsString="10";}
else if (rbDnv11->Checked == True)
{tE->FieldByName("Long")->AsString="11";}
Кстати а вот энтот код, как нибудь можно попроще преписать
Помоему написано криво, а например если их штук сто, что тогда для каждого писать?
tE-Table
rbDnvc-RadioBurron
Автор: FireBrizz
Дата сообщения: 10.07.2003 09:52
mirk

Цитата:
Уже смотрю, более менее разобрался.

Так держать! А у меня оказалось, что последний раз Билдер я поставил без исходников VCL поэтому в этом вопросе помоч несмогу, сори

Цитата:
кстати Чебоксары это Интернет столица поволжья и помоему культурная столица

Так же это столица релейной защиты !!!


Добавлено
Это код чего (FindNearest)? и для чего RadioButton? просто я пока не въехал
Автор: mirk
Дата сообщения: 10.07.2003 10:05
Так же это столица релейной защиты !!!

У меня старший брат этим занимается.

FindNearest-обеспечивает переход к наиболее совпадающей строке(поиск в базе данных)
То есть есть есть 11 батонов, если к примеру rbDnvc4->Chekced=True то в поле "Long" добавляется "4", и так же с остальными батонами.
Автор: FireBrizz
Дата сообщения: 10.07.2003 10:25
mirk

Цитата:
У меня старший брат этим занимается.

Значит с братом мы коллеги

А про код давай по подробнее - судя по тому как написано - то не прибавляется, а приравнивается строке "4", тока я все равно непонял, за чем это - опиши логику работы подробнее (не хочеш тут - давай в ПМ) и вообще - этот код ты писал или это из исходников VCL?
Автор: mirk
Дата сообщения: 10.07.2003 10:38

Цитата:
Значит с братом мы коллеги

Это гуд. Только он инженер. А в командировку случайно не во ВНИИР?


Цитата:
А про код давай по подробнее - судя по тому как написано - то не прибавляется, а приравнивается строке "4"

Обшибочка вышла, на самом деле приравнивается

Есть 11 батонов(Я хотел поставить Обычный Edit или ComboBox но попросили батоны)

Длительность наблюдения в центре в годах

1 год
2 года
3 года
.
.
.
.
.
11 лет

Юзверь выбирает какой нибудь наживает Button сохранить и в зависимости от того какой из них выбран, приравнивается полю цифыра.
Автор: FireBrizz
Дата сообщения: 10.07.2003 11:27
mirk

Цитата:
Только он инженер

А я по образованию тоже инженер - релейщик


Цитата:
А в командировку случайно не во ВНИИР?

Ну чтото типа того (там все одна контора: ABB автоматизация, РУСЭЛ,ВНИИР,ЭПИ)


Цитата:
Юзверь выбирает какой нибудь наживает Button сохранить и в зависимости от того какой из них выбран, приравнивается полю цифыра.

Ну это я понял (а Long - это имя поля в БД, а запись наверно текущая) Переходим к работе FindNearest - ты хочеш найти наиболее подходящее поле ? (когда я говорил про исходники - я имел в виду исходники TTable ка там реализована эта операция, и в случае чего можно унаследоваться от TTable и добавить к классу исправленный поиск )
Автор: mirk
Дата сообщения: 10.07.2003 11:37
Помоему мы друг друга не поняли.

Я имел в виду:
Есть 11 батонов(Я хотел поставить Обычный Edit или ComboBox но попросили батоны)

Длительность наблюдения в центре в годах

1 год
2 года
3 года
.
.
.
.
.
11 лет

Юзверь выбирает какой нибудь наживает Button сохранить и в зависимости от того какой из них выбран, приравнивается полю цифыра.

Мой код(Ксати сам писал)
if (rbDnvc1->Checked == True)
{tE->FieldByName("Long")->AsString="1";}
else if (rbDnvc2->Checked == True)
{tE->FieldByName("Long")->AsString="2";}
else if (rbDnvc3->Checked == True)
{tE->FieldByName("Long")->AsString="3";}
else if (rbDnvc4->Checked == True)
{tE->FieldByName("Long")->AsString="4";}
else if (rbDnvc5->Checked == True)
{tE->FieldByName("Long")->AsString="5";}
else if (rbDnvc6->Checked == True)
{tE->FieldByName("Long")->AsString="6";}
else if (rbDnvc7->Checked == True)
{tE->FieldByName("Long")->AsString="7";}
else if (rbDnvc8->Checked == True)
{tE->FieldByName("Long")->AsString="8";}
else if (rbDnvc9->Checked == True)
{tE->FieldByName("Long")->AsString="9";}
else if (rbDnvc10->Checked == True)
{tE->FieldByName("Long")->AsString="10";}
else if (rbDnv11->Checked == True)
{tE->FieldByName("Long")->AsString="11";}
Кстати а вот энтот код, как нибудь можно попроще преписать
Помоему написано криво, а например если их штук сто, что тогда для каждого писать?
tE-Table
rbDnvc-RadioBurron

Я имел ввиду как можно подругому написать.
С поиском я уже разобрался.
Автор: FireBrizz
Дата сообщения: 10.07.2003 11:58
mirk
А просто написать по другому
тогда так:
Создаеш RadioButtonы во время инициализации формы в цикле, указатели на них кидаеш в массив.
Когда нужно определить какой из них выбран проходиш в цикле массив указателей на RadioButtonы и определяеш, какой из них выбран - итерация цикла - номер радиобуттона - помойму красивее решение (хоть 10000будет менять одну константу )
Автор: mirk
Дата сообщения: 10.07.2003 12:09
Может кусочек кода и без создания во время инициализации формы
Автор: FireBrizz
Дата сообщения: 10.07.2003 14:38
mirk
Ну тогда два кусочка кода
TRadioButton *m_buttons [4]; - это в обявлении класса (в .h)

m_buttons[0] = RadioButton1;
m_buttons[1] = RadioButton2;
m_buttons[2] = RadioButton3;
m_buttons[3] = RadioButton4;

- Это где нибудь при создании или инициализации формы

for(int i = 0; i < 4; i ++){
if(m_buttons[i]->Checked) .... - ну а это где проверяеш какой выбран
делаеш свое дело
}

Ну или так :
i = 0;
while (!m_buttons[i]->Checked){
i++;
}
Ну а тут i - номер нужного тебе RadioButton-а
Автор: mirk
Дата сообщения: 10.07.2003 14:43
Спасибо о спаситель , Век буду помнить. Да не пректатится твой род во веки веков.

Кстати FireBrizz это по русски как, Fire это понятно, а Brizz

Добавлено
Да кстати вспомнил в ABB тоже знакомый(сокурсник) работает.
Автор: FireBrizz
Дата сообщения: 10.07.2003 14:51
mirk
Получилось ? - а то я неуверен, не пробовал - из головы написал

А по русски как ? - ну даже неуверен - когдато давно закралась небольшая орф. ошибочка (после пива) - ну и привык уже, да и неплохо вобщем мне нравится

Автор: mirk
Дата сообщения: 10.07.2003 14:56
Пока не пробовал, домой собираюсь.


Цитата:
А по русски как ? - ну даже неуверен - когдато давно закралась небольшая орф. ошибочка (после пива) - ну и привык уже, да и неплохо вобщем мне нравится


Звучит неплохо!
Автор: FireBrizz
Дата сообщения: 10.07.2003 15:08
mirk

Цитата:
Пока не пробовал, домой собираюсь.

Ну а мне еще часик на работе кантоваться - ладно завтра я еще на связи - обращайся, а потом буду тока 28.

Цитата:
Да кстати вспомнил в ABB тоже знакомый(сокурсник) работает.

Ну я не совсем в ABB Автоматизация - мы скорее субподрядчики - такой инжиниринговый центр - занимаемся разными разработками - ну там МП терминалы защит, средства автоматизации, ПО
Автор: mirk
Дата сообщения: 10.07.2003 15:16

Цитата:
Ну я не совсем в ABB Автоматизация - мы скорее субподрядчики - такой инжиниринговый центр - занимаемся разными разработками - ну там МП терминалы защит, средства автоматизации, ПО


Интересно я когда нибудь достигну такого уровня?
Автор: FireBrizz
Дата сообщения: 10.07.2003 15:24
mirk
Достигнеш, достигнеш - годик практики на реальных проектах + изучение мат части (теория ООП, да и синтаксис языка ну и чегонить фундаментальное по WinAPI - чтобы представлять как работют программы в винде - ну там передача системных сообщений, оконные прцедуры и т.д.)

Я тоже институт всего лишь полтора года назад окончил
Автор: mirk
Дата сообщения: 10.07.2003 18:02

Цитата:
Достигнеш, достигнеш - годик практики на реальных проектах + изучение мат части (теория ООП, да и синтаксис языка ну и чегонить фундаментальное по WinAPI - чтобы представлять как работют программы в винде - ну там передача системных сообщений, оконные прцедуры и т.д.)


Ну это радует, хотя я больше чем уверен.



Цитата:
Я тоже институт всего лишь полтора года назад окончил


А я после армии, приходится сейчас доучиваться, когда дембельнулся не помнил как решаются квадратные уравнения, голова не работала совсем, к универу готовился полгода, кое как 10 часть выученного вспомнил.
Автор: mirk
Дата сообщения: 11.07.2003 07:42
Пишу так, и не хотит, выдает ошибку что:
Project brak.exe raised exception class EStringListError with message 'List index out of bounds (-1)'.

TRadioButton *m_button[11];

m_button[0] = rbDnvc1;
m_button[1] = rbDnvc2;
m_button[2] = rbDnvc3;
m_button[3] = rbDnvc4;
m_button[4] = rbDnvc5;
m_button[5] = rbDnvc6;
m_button[6] = rbDnvc7;
m_button[7] = rbDnvc8;
m_button[8] = rbDnvc9;
m_button[9] = rbDnvc10;
m_button[10] = rbDnvc11;

for(int i = 0; i < 11; i ++)
{
if(m_button[i]->Checked=True)
{
tE->FieldByName("Long")->AsString="i";
}
}
Автор: FireBrizz
Дата сообщения: 11.07.2003 08:39
mirk
Да армия это еще та засада - я хоть и видел ее изнутри децел (месяц на сборах в 791ИАП на аэродроме) ну стало ясно - что работа головой там не поощряется, в основном руками (а думать начинают начиная с майора)

Напиши лучше по второму варианту:
int i = 0;
while (!m_buttons[i]->Checked){
i++;
}
.... - тут свою операцию - так грамотнее

А эксепшен выбрасывается - ну незнаю, я подозреваю что гдето тут
tE->FieldByName("Long")->AsString="i"; - хотя проверь дебаггером где вылетает (пройди это дело по шагам ), так как у меня раборает такой вариант:
Edit1->Text = IntToStr(i); - ну принцип то один (неохота с таблицей возится)


Автор: mirk
Дата сообщения: 11.07.2003 11:04
Пробовал еше так:
int i = 0;
while (!m_button[i]->Checked)
{
i++;
}
tE->FieldByName("Long_a")->AsString=IntToStr(i);

Тоже самое

У поля пробовал менять тип с Number на Alpha, такая же фигня
Автор: FireBrizz
Дата сообщения: 11.07.2003 11:16
Так, тавай точнее - на какой строке падает?
tE->FieldByName("Long_a")->AsString=IntToStr(i); На этой ?

Если да, то попробуй :
tE->FieldByName("Long_a")->AsString="4"; - ну или что угодно (абстрогируемся от i)

Если это прокатит, то разбирайся с присваиваниями. Результаты пиши
Автор: mirk
Дата сообщения: 11.07.2003 11:22
Так уже пробовал

Начинает ругаться:

Access violation at address 0040607D in module 'brak.exe'. Read of address 00000000

Добавлено

Цитата:
brak.exe

Блин, как корабль назовешь так на нем и поплывешь
Автор: FireBrizz
Дата сообщения: 11.07.2003 11:43
mirk
Так, чето я ничего непонимаю
Твой первоначальный вариант работает ?
Надеюсь что да
Изменения только такие:
- саму форму нетрогаем
- в класс добавили m_button[11]; - массив указателей, больше ничего не трогаем
- заменили код
if (rbDnvc1->Checked == True)
{tE->FieldByName("Long")->AsString="1";}
else if (rbDnvc2->Checked == True)
{tE->FieldByName("Long")->AsString="2";}
else if (rbDnvc3->Checked == True)
{tE->FieldByName("Long")->AsString="3";}
else if (rbDnvc4->Checked == True)
{tE->FieldByName("Long")->AsString="4";}
else if (rbDnvc5->Checked == True)
{tE->FieldByName("Long")->AsString="5";}
else if (rbDnvc6->Checked == True)
{tE->FieldByName("Long")->AsString="6";}
else if (rbDnvc7->Checked == True)
{tE->FieldByName("Long")->AsString="7";}
else if (rbDnvc8->Checked == True)
{tE->FieldByName("Long")->AsString="8";}
else if (rbDnvc9->Checked == True)
{tE->FieldByName("Long")->AsString="9";}
else if (rbDnvc10->Checked == True)
{tE->FieldByName("Long")->AsString="10";}
else if (rbDnv11->Checked == True)
{tE->FieldByName("Long")->AsString="11";}

на

m_button[0] = rbDnvc1;
m_button[1] = rbDnvc2;
m_button[2] = rbDnvc3;
m_button[3] = rbDnvc4;
m_button[4] = rbDnvc5;
m_button[5] = rbDnvc6;
m_button[6] = rbDnvc7;
m_button[7] = rbDnvc8;
m_button[8] = rbDnvc9;
m_button[9] = rbDnvc10;
m_button[10] = rbDnvc11; - этот кусок потом перенесеш на создание формы, но после создания всех контролов

int i = 0;  
    while (!m_button[i]->Checked)
{
                i++;
    }
tE->FieldByName("Long")->AsString="4"; и на этой строке стало падать?

ты уверен что больше ничего не менял ?, а то просто ерунда какаято
Автор: mirk
Дата сообщения: 11.07.2003 11:46

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


Угу

Может лучше по аське, так быстрее.
Автор: FireBrizz
Дата сообщения: 11.07.2003 11:50
mirk
ОК
Включаю тетю Асю
Автор: mirk
Дата сообщения: 12.07.2003 22:09
Вы не поверите, но сегодня попробовал тот-же код, и все заработало

Тип поля Alpha

Код:
TRadioButton *m_button[11];
m_button[0] = rbDnvc1;
m_button[1] = rbDnvc2;
m_button[2] = rbDnvc3;
m_button[3] = rbDnvc4;
m_button[4] = rbDnvc5;
m_button[5] = rbDnvc6;
m_button[6] = rbDnvc7;
m_button[7] = rbDnvc8;
m_button[8] = rbDnvc9;
m_button[9] = rbDnvc10;
m_button[10] = rbDnvc11;

for(int i = 0; i < 11; i ++)
{
if(m_button[i]->Checked=True)
{
tE->FieldByName("Long")->AsString=IntToStr(i);
// можно и так
//tE->FieldByName("Long")->AsString=i;
}
}
Автор: mirk
Дата сообщения: 14.07.2003 09:15
Объясните плиз где ошибка: При работе указанного ниже кода добавление в базу проходит нормально но при закрытие программы выходит следующая ощибка: Project brak.exe raised exception class EInvalidPointer with message 'invalid pointer operation'.



Код:
TRadioButton *my_button[30];

my_button[0] = rbVppo1;
my_button[1] = rbVppo2;
my_button[2] = rbVppo3;
my_button[3] = rbVppo4;
my_button[4] = rbVppo5;
my_button[5] = rbVppo6;
my_button[6] = rbVppo7;
my_button[7] = rbStat1;
my_button[8] = rbStat2;
my_button[9] = rbStat3;
my_button[10] = rbStat4;
my_button[11] = rbStat5;
my_button[12] = rbStat6;
my_button[13] = rbNat1;
my_button[14] = rbNat2;
my_button[15] = rbNat3;
my_button[16] = rbNat4;
my_button[17] = rbNat5;
my_button[18] = rbNat6;
my_button[19] = rbNat7;
my_button[20] = rbDnvc1;
my_button[21] = rbDnvc2;
my_button[22] = rbDnvc3;
my_button[23] = rbDnvc4;
my_button[24] = rbDnvc5;
my_button[25] = rbDnvc6;
my_button[26] = rbDnvc7;
my_button[27] = rbDnvc8;
my_button[28] = rbDnvc9;
my_button[29] = rbDnvc10;
my_button[30] = rbDnvc11;

for(int i = 0; i <= 6; i ++)
{
if(my_button[i]->Checked)
{
tE->FieldByName("Perobr")->AsString=my_button[i]->Caption;
tE->FieldByName("Perobr_n")->AsString=IntToStr(i);
}
}
for(int i = 13; i <=19; i ++)
{
if (my_button[i]->Checked)
{
tE->FieldByName("Nacio")->AsString=my_button[i]->Caption;
tE->FieldByName("Nacio_n")->AsString=IntToStr(i);
}
}
for(int i = 7; i <= 12; i ++)
{
if (my_button[i]->Checked)
{
tE->FieldByName("Status")->AsString=IntToStr(i);
}
}
for(int i = 20; i <=30; i ++)
{
if(my_button[i]->Checked)
{
tE->FieldByName("Lon")->AsString=IntToStr(i);
}
}

Страницы: 123

Предыдущая тема: WSH. Передача параметров для скрипта на VBS


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