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

Ваш аккаунт

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

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

Подписчиков: -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. Если вы хотите пообщаться, обсудить тему, не связанную с ВСВ - милости просим: В "Отдохнем". Флуд в данном разделе не приветствуется.
Ну вроде все. Если что забыл - или не так - поправьте.
Удачи.

1020 ответов / показаны 1001 - 1020

Страницы:
9.5K
08 декабря 2007 года
leahov
54 / / 09.12.2005
2 kot_ всё, всё, понял. не надо так строго. просто тяжко, в одной книге по одному написано, в другой по другому, такое чувство что авторы от балды пишут книги не проверяя ни кода который они дают ни операторы которые они приводят, вот и приходится спрашивать у людей кто варится в этом деле, то бишь Вас.
10K
08 декабря 2007 года
ksogor
12 / / 19.05.2005
Добрый вечер!

Задам несомненно дурацкий вопрос, который наверняка задавали, но по поиску подходящего не удалось найти.

Пытаюсь числовые поля из StringGrid перевести в числа, выполнить с ними математические операции и запихать в другой StringGrid.

Использую функции StrToFloat и FloatToStr, но в новой таблице появляются целые числа, а не реальные (остальное отбрасывается).

Подскажите, пожалуйста, в чём проблема или дайте ссылочку на похожий пост.
1
08 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: ksogor
Добрый вечер!

Задам несомненно дурацкий вопрос, который наверняка задавали, но по поиску подходящего не удалось найти.

Пытаюсь числовые поля из StringGrid перевести в числа, выполнить с ними математические операции и запихать в другой StringGrid.

Использую функции StrToFloat и FloatToStr, но в новой таблице появляются целые числа, а не реальные (остальное отбрасывается).

Подскажите, пожалуйста, в чём проблема или дайте ссылочку на похожий пост.


Для начала проверьте свою математическую операцию - скорей всего обрезание десятичной части происходит там - при присваивании дробного числа целому. Проверьте код на наличие подобных конструкций:

 
Код:
float a = 0;
... 2*a;

правильно:
 
Код:
float a = 0.0;
... 2.0*a;
1
09 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: favoritefx
Перестроил всю архитектуру приложения.
Данные получаются по рекомендованной цепочке:
ХП-DataSetProvider-ClientDataSet-контролы

Но теперь ничего не могу добавлять и модифицировать в главной таблице с 50 полями.
Работу с вспомогательными таблицами я уже перестроил на ХП.

Но вот с модификацией и добавлением данных в главную таблицу через контролы ничего не работает :(

Какова должна быть правильная последовательность действий?
Я делаю примерно так:

DataModule2->ClientMain->ApplyUpdates(-1);
DataModule2->ClientMain->Refresh();

после внесения изменений.
В результате:
Unable to resorv records. Table name not found.

Как нужно правильно вносить изменения в БД и новые записи при такой архитектуре.


Прошу прощения замотался и забыл ответить. Для модификации данных при этой архитектуре необходимо использовать события OnDefore*, OnAfter*, OnBeforeApplyUpdates && OnAfterApplyUpdates.
Но обычно я поступаю следующим образом - до тех пор пока интерфейс пользователя не отработан и не вылизан - в обработчиках событий происходит просто вызов соотвествующих процедур. Когда модель взаимодействия отлажена полностью - все вызова переключаются на провайдера. Это связанно с тем, что как правило прямой вызов проще - а когда модель передачи данных еще не устаканена до конца, организация вызовов через провайдера может занять больше времени. Но Это ИМХО и вовсе не обязательно использовать мою модель разработки для себя - я отработал ее для себя с учетом своих предпочтений - но как показал опыт ее промышленного применения - весьма эффективно.

35K
09 декабря 2007 года
jibbo
2 / / 09.12.2007
помогите пожалуйста. я мегаламер, тем не менее надо дописывать курсовую.
проблема - есть несколько форм, в одной форме(Form3) нужно вызвать функцию, которая описана в cpp-модуле другой формы(Form2), и выполняет действия с объектами Form2.

я прописываю в заголовке Form2:
 
Код:
__published:
         void __fastcall Save (TStringGrid *StringGrid1, TCheckBox *CheckBox1, TEdit *Edit2, TEdit *Edit3);


и вызываю её в Form3:
 
Код:
Form2->Save(Form2->StringGrid1, Form2->CheckBox1, Form2->Edit2, Form2->Edit3);


но при выполнении программы возникает ошибка
Цитата:
Access violation at address 00404A49 in module '**********.exe' Read of address 000002FC.


подскажите, пожалуйста, что не так. ещё раз извините за наглость.

1
09 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: jibbo
помогите пожалуйста. я мегаламер, тем не менее надо дописывать курсовую.
проблема - есть несколько форм, в одной форме(Form3) нужно вызвать функцию, которая описана в cpp-модуле другой формы(Form2), и выполняет действия с объектами Form2.

я прописываю в заголовке Form2:
 
Код:
__published:
         void __fastcall Save (TStringGrid *StringGrid1, TCheckBox *CheckBox1, TEdit *Edit2, TEdit *Edit3);


и вызываю её в Form3:
 
Код:
Form2->Save(Form2->StringGrid1, Form2->CheckBox1, Form2->Edit2, Form2->Edit3);


но при выполнении программы возникает ошибка

подскажите, пожалуйста, что не так. ещё раз извините за наглость.


Установите точку останова и проверьте где конкретно у вас вылетает исключение. Возможно в данный момент форма не создана, или уже разрушена.

35K
09 декабря 2007 года
jibbo
2 / / 09.12.2007
ну такое уже у меня было.
тут и без точки останова ясно - Form2 создается до Form3 и остается активным после закрытия Form3.
1
09 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: jibbo
ну такое уже у меня было.
тут и без точки останова ясно - Form2 создается до Form3 и остается активным после закрытия Form3.


Если вам все ясно - то какого ... вы вопросы задаете? Я помоему русским языком сказал - установите точку останова и определите, обращение к какому объекту генерирует исключение.

12K
13 декабря 2007 года
Sholah_Weras
99 / / 04.12.2007
Необходимо добавить строку в поле со значенеим из TEdit. Т.е. в эдите написано "Вася", нажимаем кнопку "Добавить" и в БД добавляется строка с содержанием "Вася"
Варианты с TEditDB не предлагать - не то. Помимо SQL еще есть приемлимые варианты?
Прощу прощения, если этот вопрос уже раасматривался, в поиске не нашел.
11
13 декабря 2007 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Sholah_Weras
Необходимо добавить строку в поле со значенеим из TEdit. Т.е. в эдите написано "Вася", нажимаем кнопку "Добавить" и в БД добавляется строка с содержанием "Вася"
Варианты с TEditDB не предлагать - не то. Помимо SQL еще есть приемлимые варианты?
Прощу прощения, если этот вопрос уже раасматривался, в поиске не нашел.


Table1->Append();
Table1->Edit();
Table1->FieldByName("FieldName")->AsString = Edit1->Text;
Table1->Post();

ЗЫ: но лучше все таки SQL-ем

489
13 декабря 2007 года
NeO_u
277 / / 11.10.2006
Цитата: Sholah_Weras
Необходимо добавить строку в поле со значенеим из TEdit. Т.е. в эдите написано "Вася", нажимаем кнопку "Добавить" и в БД добавляется строка с содержанием "Вася"
Варианты с TEditDB не предлагать - не то. Помимо SQL еще есть приемлимые варианты?
Прощу прощения, если этот вопрос уже раасматривался, в поиске не нашел.



Помимо SQL, скорее всего, нету..т.к. все таки работа с базой осуществляется через sql, ну или через ХП.

246
13 декабря 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: oxotnik333
Table1->Append();
Table1->Edit();
Table1->FieldByName("FieldName")->AsString = Edit1->Text;
Table1->Post();

ЗЫ: но лучше все таки SQL-ем


Table1->Edit() - зачем?

11
13 декабря 2007 года
oxotnik333
2.9K / / 03.08.2007
Цитата: GIZMO
Table1->Edit() - зачем?


чтоб не рисковать (бывало такое: "Dataset not in edit or insert mode")
даже правильней вот так:
if (Table1->State != dsEdit) Table1->Edit();

1
13 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: GIZMO
Table1->Edit() - зачем?


oxotnik333 прав. При работе с компонентами прямого доступа обязательно надо проверять текущий режим компонента - иначе проблем не избежать. Другой вопрос - стоит ли использовать для этих целей TTable - но это подробно обсуждалось уже, думаю смысла повторяться нет. В конце концов - как любят говорить, кто как хочет - так и дрочит :)

2Sholah_Weras
А если не секрет - чем конкретно не подходит TDBEdit, если, я так понимаю, в работе с SQL не очень то сильны - врядли это проблема с производительностью и сетевой трафик - тем более TTable это ли лучший выбор. :)

32K
14 декабря 2007 года
Ёжик
22 / / 14.12.2007
Как можно имя компонента загнать в переменную чтобы потом его использовать.
Допустим переменная "а" хранит имя компонента Image, Как можно сделать что-то вроде: a->Visible=false;

Извеняюсь, если я написал бред, (Я не очень силён в программировании) но мне нужно как то обратится к одному из компонентов Image и я зарание не знаю к какому именно.


Буду очень благодарен если кто-то мне поможет.
1
14 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Ёжик
Как можно имя компонента загнать в переменную чтобы потом его использовать.
Допустим переменная "а" хранит имя компонента Image, Как можно сделать что-то вроде: a->Visible=false;

Извеняюсь, если я написал бред, (Я не очень силён в программировании) но мне нужно как то обратится к одному из компонентов Image и я зарание не знаю к какому именно.


Буду очень благодарен если кто-то мне поможет.


Прежде чем задать вопрос - нужно использовать поиск - рассматривалось уже неоднократно, как в программе обратиться к компоненту на форме.

 
Код:
TImage *a = dynamic_cast<TImage*>(fmMain->FindComponent("Image1"));
a->Visible = true;
32K
14 декабря 2007 года
Ёжик
22 / / 14.12.2007
Спасибо что так быстро откликнулись, но это не совсем то...
Мне нужно сделать так, что бы при нажатии на картинку, какая-то информация о ней отправлялась... допустим в эдит, а потом из любого места программы можно было-бы обратится к эдиту и узнать какая именно из картинок была открыта...

Если Вам не трудно обьясните пожалуйста как такое сделать.
32K
14 декабря 2007 года
Ёжик
22 / / 14.12.2007
Извените за наглость. Я прочитат Вашу подпись о том каким должен быть вопрос. Я и не думаю что мне кто-то что-то должен, я просто обратился сюда за помощью. И буду очень благодарен если мне кто-то поможет
1
14 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Ёжик
Спасибо что так быстро откликнулись, но это не совсем то...
Мне нужно сделать так, что бы при нажатии на картинку, какая-то информация о ней отправлялась... допустим в эдит, а потом из любого места программы можно было-бы обратится к эдиту и узнать какая именно из картинок была открыта...

Если Вам не трудно обьясните пожалуйста как такое сделать.


Если нужно имя компонента, то:

 
Код:
Edit1->Text = Image1->Name;

а если нужно имя файла, который загружается в Image1:
 
Код:
if(!OpenDialog1->Execute()) return;
Image1->LoadFromFile(OpenDialog1->FileName);
Edit1->Text = OpenDialog1->FileName;
1
15 декабря 2007 года
kot_
7.3K / / 20.01.2000
Тема продолжается здесь
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог