Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

C++ :)

2533  1 2 3 4 5 6 7 8 9 10 11 все
Simple Nothing is f*cked16.08.12 21:25
Simple
NEW 16.08.12 21:25 
в ответ Ashka_hash46 16.08.12 21:21
В ответ на:
а. Вон как. То есть в идеале - пользователь в конце не увидит ошибку... но все же цель - от нее уйти)))
Эта ошибка ваще не может/не должна случиться.
Ashka_hash46 коренной житель16.08.12 21:37
Ashka_hash46
NEW 16.08.12 21:37 
в ответ Simple 16.08.12 21:25
не путай меня, я сама вся запуталась уже
Леш, смотри, при закрытии окна (когда совсем-совсем закрываешь программу), выдает:
Debug Assertion Failed!
Program ... .exe
File: .. afxwind2.inl
Line: xxx
Когда выходишь на эту строчку, пишет ASSERT чего-то там KillTimer, явно таймер убивается раньше, чем запускается... А с окнами (закрытие еще не созданных) - так вообще песня)))
Кстати, программка так и не закрывается С экрана уходит, а в процессах остается висеть((
А вторая ошибка выглядит так:

Это меню, выпадающее, нажимаешь на любое название из списка, выходит ошибка:

Нашла эту надпись в коде (там, выше), и начала гуглить... по сути - каждый из пунктов должен отображать в правом нижнем углу определенные данные из БД. А вместо этого - сворачивает программку. Так вот, пытаюсь сообразить, как этот LL обойти...
Общественное мнение формируют не самые умные, а самые болтливые
Ashka_hash46 коренной житель18.08.12 17:09
Ashka_hash46
NEW 18.08.12 17:09 
в ответ Ashka_hash46 16.08.12 21:37
продолжаю ковырять программку, все же никак не могу определить, за что взяться)))
Дизайнер я так и не нашла, поэтому файл с расширением .rc имею только в текстовом виде (пример диалога):
IDD_ASTRUP DIALOG 0, 100, 850, 338
STYLE DS_SETFONT | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_THICKFRAME
FONT 8, "MS Sans Serif"
BEGIN
CONTROL "Aktuelle",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,7,31,42,11
CONTROL "Heute",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,58,31,50,11
CONTROL "Custom1",IDC_GRID_ASTRUP,"MFCGridCtrl",0x0,29,74,232,166
LTEXT "Ansicht дndern",IDC_ANSICHT,7,9,65,11
END

и ВСЕ диалоги прописаны сразу и в этом файле. Поэтому ВСЕ значения инициализируются сразу при загрузке формы (то есть все таблички баз данных сразу заполняются значениями, просто отображаются лишь те, что должны отобразиться при загрузке). Что очень тормозит систему. По идее ведь прописано - когда открывается то или иное диалоговое окно, тогда и открывается нужный файлик, который опрашивает БД.
Форма должна быть одна. По большому счету, меняются лишь диалоги в правом "окне". Посещают мысли забабашить UserControl, и на нем отображать происходящее, но так боюсь что-то менять, пока "относительно" работает...
Общественное мнение формируют не самые умные, а самые болтливые
Ashka_hash46 коренной житель18.08.12 18:55
Ashka_hash46
NEW 18.08.12 18:55 
в ответ Ashka_hash46 18.08.12 17:09, Последний раз изменено 18.08.12 18:58 (Ashka_hash46)
Все, у меня истерика Я не могу даже простейшего(((
Как обращаться к элементам формы из классов?!

У меня есть Form1.h
#pragma once
namespace Test005 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
public ref class Form1 : public System::Windows::Forms::Form
{
/* конструктор, деструктор */

private: System::Windows::Forms::Label^ label1;
protected:
private: System::Windows::Forms::Button^ button1;
private:
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
void InitializeComponent(void)
{
/* куча описания компонентов, а-ля лейбл стоит посередине с надписью "label1" */
}
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
}
};
}

Создала класс text.cpp (который зачем-то еще поделился на text.h, я уже вычитала, что это "шапка класса")
#include "StdAfx.h"
#include "text.h"
#include "Form1.h"
text::text(void)
{
}

text.h
#pragma once
ref class text
{
public:
text(void);
};

Теперь вопрос: как обратиться из класса к элементам формы?! Как бы я сделала в c#:
Form1 frm = new Form1();
frm.label1.Text = "Hallo Welt";
Тут не работает. Где что нужно написать?! И почему обработчик события нажатия кнопки автоматически создается в "шапковом" файле формы (Form1.h)?
P.S. забыла сказать, что тренируюсь в MS VS 2008, visual c++, CLR->Windows Form Anwendung
Общественное мнение формируют не самые умные, а самые болтливые
vlad_s_69 знакомое лицо18.08.12 20:15
NEW 18.08.12 20:15 
в ответ Ashka_hash46 18.08.12 18:55, Последний раз изменено 18.08.12 20:17 (vlad_s_69)
мда... пипец, короче, читая, я, до сих пор, не уверен не рахводит ли нас топик стартер.
Думаю через недельку ты осилишь "Хелло ворлд".
Если в команде у твоего шефа нет опытного программиста, которому будет не заподло с тобой возиться, то проект можно похоронить уже сейчас.
Мне, вот так, подсунули помощницу, первый год, реально, сидел с ней часами, учил азам С++.
Единственное, что у неё было - понимание ООП и алгоритмический склад ума. Прошло 3 года и сейчас она может делать исправления простых багов и небольшие изменения в коде.
До сих пор подчищаю за ней, ей почему то, влом удалять указатели - сплошные мемори лики, а в её работе много копи-паст, полно редундантного кода, который легко можно было бы выделить в отдельную функцию.
Ashka_hash46 коренной житель18.08.12 21:06
Ashka_hash46
NEW 18.08.12 21:06 
в ответ vlad_s_69 18.08.12 20:15
ну, значит, будем хоронить проект
В ответ на:
Если в команде у твоего шефа нет опытного программиста, которому будет не заподло с тобой возиться

на роль опытного программиста взяли меня :( Впрочем, я на сей день единственный программист. Есть парень, который пишет actionsscript, область с++ его не касается, добровольно он в эту воду не полезет, у него своей работы много(((
Поэтому разбираться мне одной.
В ответ на:
Думаю через недельку ты осилишь "Хелло ворлд"

просто по нажатию кнопки "хэлло ворлд" я выдам и сейчас. А вот в классах - запуталась
Да понимаю, что надо просто открыть учебник, и от начала до конца пройти, раз "поверхностного чтения интернета" не хватает для счастья. Уже запаслась книжкой, которую рекомендовали в этой теме. Пошла читать...
Общественное мнение формируют не самые умные, а самые болтливые
Murr патриот18.08.12 23:21
Murr
NEW 18.08.12 23:21 
в ответ Ashka_hash46 18.08.12 18:55
я уже вычитала, что это "шапка класса"
------
Ты об Плюсах то что-нибудь знаешь? Придется учить... там довольно много...
Как обращаться к элементам формы из классов?!
------
Переверни вопрос - Как ФОРМА может получить доступ к нужным ей данним? - и проблема исчезнет...
П.С. Перестань смотреть как было сделано - технология работы поменялась...
Ashka_hash46 коренной житель18.08.12 23:44
Ashka_hash46
NEW 18.08.12 23:44 
в ответ Murr 18.08.12 23:21
ну что, переписывать с нуля? Там 98 диалогов, к каждому - минимум, по три-пять функций (файлов .cpp)... Поэтому я и не понимаю, как мне с наименьшими потерями выйти из этого всего.
Села тупо учить c++ по книжке. Щас на хх-странице, как раз объясняют, как два класса могут с собой общаться. В консоли все идет хорошо, с формой сразу возникла проблема
Как бы да, я неверно сформулировала (для себя изначально) задачу - мне ж надо, чтоб форма к функциям обращалась, а не наоборот)))
Общественное мнение формируют не самые умные, а самые болтливые
Murr патриот18.08.12 23:52
Murr
18.08.12 23:52 
в ответ Ashka_hash46 18.08.12 23:44
ну что, переписывать с нуля?
-----
Формы - да. Из остального - лепить БЛ и ДАЛ...
Ashka_hash46 коренной житель19.08.12 00:36
Ashka_hash46
NEW 19.08.12 00:36 
в ответ vlad_s_69 18.08.12 20:15
В ответ на:
Думаю через недельку ты осилишь "Хелло ворлд".

ну вот, чтение книжки пошло мне на пользу))) Разобралась с классами)))
Общественное мнение формируют не самые умные, а самые болтливые
web-programmist Программист19.08.12 10:19
web-programmist
NEW 19.08.12 10:19 
в ответ Ashka_hash46 18.08.12 18:55, Последний раз изменено 19.08.12 10:25 (web-programmist)
В ответ на:
Как бы я сделала в c#:
Form1 frm = new Form1();
frm.label1.Text = "Hallo Welt";

Ну это не совсем правильно.. Вы тогда создаете новую форму, а можно всунуть в ту что уже есть ( на заднем фоне).. Для этого нужно передать "Object" в функцию класса и потом внутри класса работать ..
Более 500 каналов !
Ashka_hash46 коренной житель19.08.12 10:29
Ashka_hash46
NEW 19.08.12 10:29 
в ответ web-programmist 19.08.12 10:19
кстати да, с новой формой я погорячилась
Общественное мнение формируют не самые умные, а самые болтливые
anly коренной житель19.08.12 10:43
anly
NEW 19.08.12 10:43 
в ответ Ashka_hash46 16.08.12 19:53
В ответ на:
почему в программе используется проверка на валидность ASSERT, вместо

популярно об ASSERT:
http://www.sofmos.com/lyosha/Articles/CNotes_Assert.html
Проклят нарушающий межи ближнего своего (Втор.27:17)
Ashka_hash46 коренной житель19.08.12 10:46
Ashka_hash46
NEW 19.08.12 10:46 
в ответ anly 19.08.12 10:43
спасибочки
Общественное мнение формируют не самые умные, а самые болтливые
anly коренной житель19.08.12 11:15
anly
NEW 19.08.12 11:15 
в ответ Ashka_hash46 18.08.12 18:55
В ответ на:
ref class text
{
public:
text(void);
};
Теперь вопрос: как обратиться из класса к элементам формы?! Как бы я сделала в c#:
Form1 frm = new Form1();
frm.label1.Text = "Hallo Welt";

пусть фукция text класса text примет в качестве аргумента указатель на Form1.
Типа того:
ref class text
{
public:
void text(Form1^frm );
};
void text::text(Form1^frm )
{
frm->label1->Text = "Hallo Welt";
}
но label1 должна быть public, а не private как делает визард по умолчанию. Надо ручками подправить.
Хотя более "правильный тон" у Form1 сделать public функцию SetLabel1Text( LPCTSTR psText ) и её дёргать.
Проклят нарушающий межи ближнего своего (Втор.27:17)
Ashka_hash46 коренной житель19.08.12 11:21
Ashka_hash46
NEW 19.08.12 11:21 
в ответ anly 19.08.12 11:15
для особо одаренных - вот этот уголочек сверху, это что?
А про Set - отличная идея, спасибо!)
Общественное мнение формируют не самые умные, а самые болтливые
anly коренной житель19.08.12 11:26
anly
NEW 19.08.12 11:26 
в ответ Ashka_hash46 19.08.12 11:21
^ это указатель. Т.е. в нашем примере указатель на Form1.
^ применяется только к классам объявленым с ref (т.е. CLR классам), а в native C++ используется *.
еще вместо LPCTSTR может надо System::String^ использовать. LPCTSTR это больше к native C++.
Проклят нарушающий межи ближнего своего (Втор.27:17)
Murr патриот19.08.12 11:43
Murr
NEW 19.08.12 11:43 
в ответ anly 19.08.12 11:15
Хотя более "правильный тон" у Форм1 сделать публиц функцию СетЛабел1Техт( ЛПЦТСТР псТехт ) и её дёргать.
-----
Тоже плохо, однако...
Правильный тон - форме, внутри ее метода, создать источник псТехт и установить значение Лабел1...
Ну а доступные из вне методы - это уже управление самой формой, чего, при хорошем дизайне, быть не должно...
Ashka_hash46 коренной житель19.08.12 11:48
Ashka_hash46
NEW 19.08.12 11:48 
в ответ Murr 19.08.12 11:43
да я в принципе извращением занимаюсь.
Шеф сказал, что ему надо все на одной форме. Чтобы все закрывалось одним крестиком. Поэтому я и планирую - UserControl вставить, а на нем уже отображать необходимые диалоги...
Общественное мнение формируют не самые умные, а самые болтливые
Murr патриот19.08.12 11:57
Murr
NEW 19.08.12 11:57 
в ответ Ashka_hash46 19.08.12 11:48
ему надо все на одной форме.
------
Все, что ему нужно - чтобы в каждый момент времени на экране была одна форма... и только...
1 2 3 4 5 6 7 8 9 10 11 все