Вопрос № 49358: У меня есть IDispatch одного объекта я вызываю на нём GetIDsOfNames и спокойно нахожу ID, если я это делаю в отдельном созданном потоке, то он у меня ничего не находит!!! Такое ощущение что прав не хватает... в чём проблема не могу понять.... Pleaz, ...Вопрос № 49370: Здравствуйте!!! Имеется обработчик события FormResize для Form2
void __fastcall TForm2::FormResize(TObject *Sender)
{
ClientWidth=907;
if (ClientHeight<100) ClientHeight=300;
}
У меня в приложении 10 форм как сдел...Вопрос № 49406: Уважаемые эксперты я начинающий программист на Си. У меня такой вопрос:Как сделать так, чтобы в поле Edit я при клике на элемент UpDown соответственно получала значение на единицу больше и меньше ранее существующего. Может есть другое поле которое по...Вопрос № 49413: Здраствуйте. Где можно найти стандартный справочник об ошибках для с++ 3.0
что за ошибка?? abnormal program termination??
где ее искать и как исправлять???...Вопрос № 49414: Добрый вечер!
Подскажите пожалуйста, начал изучать С++, в Visual C++ 6 , пишу пример с книги, но когда запускаю после компиляции то что написал на русском языке в "cout << ..." выводит адбру-кадабру, может надо где-то что добавить...
Вопрос № 49.358
У меня есть IDispatch одного объекта я вызываю на нём GetIDsOfNames и спокойно нахожу ID, если я это делаю в отдельном созданном потоке, то он у меня ничего не находит!!! Такое ощущение что прав не хватает... в чём проблема не могу понять.... Pleaz, HELP!
Отправлен: 17.07.2006, 13:10
Вопрос задал: Sid123 (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Татьяна
Здравствуйте, Sid123!
Тут дело не в правах.
Проблема в том, в какой модели создан сам объект.
Т.е. если объект создан в модели Single или ApartMent - его можно использовать исключительно в том потоке, в котором он был создан - иначе он работать не будет!
Работать из разных потоков можно только в том случае, если он создан MultiThreaded.
Еще особенность - создается он реально не при вызове конструктора, а при первом вызове любого метода этого объекта.
Причем, еще особенность, если вы все-таки решили использовать объект из другого потока (не из главного). Необходимо жестко в этом потоке указать модель работы, указывается это примерно так:
CoInitializeEx(NULL,COINIT_APARTMENTTHREADED); - главное указать это в самом начале
--------- Возможно все. И ничего возможно тоже.
Ответ отправила: Татьяна (статус: Студент)
Ответ отправлен: 17.07.2006, 14:03 Оценка за ответ: 5
Вопрос № 49.370
Здравствуйте!!! Имеется обработчик события FormResize для Form2
void __fastcall TForm2::FormResize(TObject *Sender)
{
ClientWidth=907;
if (ClientHeight<100) ClientHeight=300;
}
У меня в приложении 10 форм как сделать так чтобы код этого
обработчика работал для всех 10 форм, чтобы не копировать его
каждый раз в обработчик новой формы FormResize
Отправлен: 17.07.2006, 14:34
Вопрос задал: Rewer8 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Rodion
Здравствуйте, Rewer8!
Вообще, у каждой формы, должен быть свой обработчик событий, но если сильно
нужно, то можно вот так:
1) Создаем обработчик события для одного из окон, например Form1
2) Выбираем другую форму, жмем ALT+F11 (вставить хэдр), и выбираем Form1
3) Создаем обработчик события, но в нем пишем только вызов обработчика первого окна: Form1->FormResize(Sender);
Повторяем шаги 2 и 3 для всех окон
Код, общего обработчика у вас немного изменится, смотрите переделаный ваш пример. Код проверить не могу, но думаю сама идея будет ясна.
Приложение:
Ответ отправил: Rodion (статус: 1-ый класс)
Ответ отправлен: 17.07.2006, 20:13
Отвечает: Etenity
Здравствуйте, Rewer8!
Можно вариант Rodion, но тут есть проблемка. Если другие окна не созданы, то делать с ними ничего не получиться.
Я придлагаю вариант с ini файлом. Я всегда люблю его использовать. Плюс тут появляется приемущество, когда програма будет открыта во второй раз, то размеры окон будут прежними.
Для етого нужно подключить inifiles.hpp
#include <inifiles.hpp>
TIniFile *f=new TIniFile(GetCurrentDir()+"\setup.ini"); //по умолчанию ини файл будет сохранятся в каталоге виндовса
А далее спомощю f-> можно работать с файлом.
Типа:
String sss=ff->ReadString("Corect","Minus","5");
ff->WriteString("Corect","Minus",sss);
--------- Вибачте за мій російський...
Ответ отправил: Etenity (статус: 7-ой класс)
Ответ отправлен: 18.07.2006, 02:09
Вопрос № 49.406
Уважаемые эксперты я начинающий программист на Си. У меня такой вопрос:Как сделать так, чтобы в поле Edit я при клике на элемент UpDown соответственно получала значение на единицу больше и меньше ранее существующего. Может есть другое поле которое позволяет менять значени е не только программно но и вручную..? Спасибо за совет...
Отправлен: 17.07.2006, 22:40
Вопрос задала: Koran (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Etenity
Здравствуйте, Koran!
Такое есть в других нестандартных визуальных компонентах например LMD. Их надо устанавливать отдельно. Где взять? Незнаю, у меня на диске были.
А можно так.
Edit1->Text=IntToStr(StrToInt(Edit1->Text)+1);
--------- Вибачте за мій російський...
Ответ отправил: Etenity (статус: 7-ой класс)
Ответ отправлен: 18.07.2006, 02:14 Оценка за ответ: 4
Отвечает: Santana
Здравствуйте, Koran!
Может я не совсем понял суть вопроса (тогда прошу извинения) но мне кажется проше использовать стандартную компоненту Спин
Ответ отправил: Santana (статус: 4-ый класс)
Ответ отправлен: 18.07.2006, 10:51 Оценка за ответ: 5
Вопрос № 49.413
Здраствуйте. Где можно найти стандартный справочник об ошибках для с++ 3.0
что за ошибка?? abnormal program termination??
где ее искать и как исправлять???
Отправлен: 17.07.2006, 23:22
Вопрос задал: HITY (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: gitter
Здравствуйте, HITY!
Abnormal program termination (Аварийное завершение программы)
обычно, появляется когда выделяется недостаточно памяти под динамические массивы.
Сообщения об ошибках можно посмотреть, например, здесь http://chg.fatal.ru/misc/prog-cpp/index.html в 7-й главе
"Как искать и исправлять" - необходимо пошагово пройтись по программе (в отладчике, с помощью пунктов меню "Trace Into" (войти в блок, функцию) , "Step Over" (шаг через блок, функцию), просматривать значения переменных необходимо с помощью пункта меню Watches->Add Watch и указать имя переменной) и посмотреть в какой именно ситуации возникает ошибка.
Удачи!
Ответ отправил: gitter (статус: Студент)
Ответ отправлен: 18.07.2006, 10:34 Оценка за ответ: 5
Вопрос № 49.414
Добрый вечер!
Подскажите пожалуйста, начал изучать С++, в Visual C++ 6 , пишу пример с книги, но когда запускаю после компиляции то что написал на русском языке в "cout << ..." выводит адбру-кадабру, может надо где-то что добавить, или в настройках поменять что бы по русски выводило.
Заранее спасибо.
С уважением Евгений.
Отвечает: Etenity
Здравствуйте, МИТРОФАНОВ Е.В.!
Тебе надо програмку keyrus.com. Поищи в инете. Ее надо запускать перед запуском твоей программы в консоле. Но если у тя виндовс на основе NT, тогда могут быть проблемы. Кстати недавно описывали здесь про ету прогу (смотри вопрос 48706
Ответ отправил: Etenity (статус: 7-ой класс)
Ответ отправлен: 18.07.2006, 02:25 Оценка за ответ: 5 Комментарий оценки: Спасибо, скачал буду пробовать (а так стоит ХР-2).
Просто в консольном приложении текст выводится в OEM кодировке, в то время как в среде VisualStudio он набирается в кодировке Ansi. Есть два выхода из этой ситуации:
1. Набирать текст в любом редакторе, поддерживающем OEM кодировку (кажется, Bred3 поддерживает, может есть еще).
2. При выводе на экран перекодировать текст:
#include "windows.h"
#include "iostream.h"
LPSTR A2O(LPCTSTR text)
{
static TCHAR buffer[1000]; //Думаю, 1000 символов хватит, в консольные приложениях редко выводятся более длинные строки
CharToOem(text,buffer);
return buffer;
);
main()
{
cout<<A2O("Проверка");
}
Ответ отправил: Physicist (статус: 6-ой класс)
Ответ отправлен: 18.07.2006, 09:25 Оценка за ответ: 5 Комментарий оценки: Спасибо большое за ответ, но если не затруднительно можно этот кусок программы вставить в мою, а я потом посмотрю как должно быть, а то что-то ошибки он выдает, может я не туда вставляю.
Отвечает: arctic
Здравствуйте, МИТРОФАНОВ Е.В.!
Можно поступить таким способом:
...
const int MessageCount = 2;
char Msg[MessageCount][50] = {
"Среднее значение равно: ",
"Оценки не введены"
};
//Русификация сообщений
for(int i=0; i<MessageCount; i++){
CharToOem(Msg[i], Msg[i]);
}
...
cout << Msg[0]; //Выведет русский текст
...
Наверное ето единственний способ решить вашу проблему.
Ответ отправил: arctic (статус: 1-ый класс)
Ответ отправлен: 19.07.2006, 11:36 Оценка за ответ: 5 Комментарий оценки: Спасибо большое за ответ, но если не затруднительно то можно полностью программу с вашей доработкой, а я потом посмотрю как должно быть.