Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 331
от 16.05.2004, 02:00

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1537
Отправлено ответов: 3543
Активность: 230.5 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

THE_PRO
Статус: Профессиональный
Общий рейтинг: 136.71
URL: THE_PRO
Телефон: (994 +12) 989647
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 109.11
[Подробней >>]
Boriss
Статус: Профессиональный
Общий рейтинг: 161.61
URL: Программирование на Паскале
[Подробней >>]
 
Pawel
Статус: Профессиональный
Общий рейтинг: 155.58
[Подробней >>]
sir henry
Статус: Профессиональный
Общий рейтинг: 160.89
[Подробней >>]
samum2000
Статус: Профессиональный
Общий рейтинг: 130.05
[Подробней >>]
 
CrackLab
Статус: Начальный
Общий рейтинг: 170
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1529. Unocode Здравстуйте экспреты! Подскажите, пожалуйста, как можно сделать поддержку приложениями Uni... (ответов: 3)
Вопрос № 1530. > Когда на форму ставишь RichEdit , то автоматически у него уже есть меню и работаюттгорячие клавиши... (ответов: 1)
Вопрос № 1531. Привет! Может кто-нибудь может дать ссылку на русский справочник по WinApi, только please не по имен... (ответов: 3)
Вопрос № 1533. Здравсвтуйте!!! Я недавно начал учить С++ и С++ Builder и сегодня встретился с такой проблемой... Я ... (ответов: 4)

Вопросов: 4, ответов: 11


 Вопрос № 1529

Unocode

Здравстуйте экспреты!
Подскажите, пожалуйста, как можно сделать поддержку приложениями Unicode.
Пример:
Если в английской версии XP запустить notepad из русского дистрибутиа, то все отображается на великом и могучем, но если запустить программу написанную на Delphi, в которой есть русские символы, то они отображаются некорректно(закорючки).



Вопрос отправлен: 11.05.2004, 18:23
Отправитель: Gerand

[Следующий вопрос >>] [Список вопросов]

Отвечает THE_PRO

Добрый день, Gerand!
U memo yest svostvo dlya izmeneniya kodirovki. Prosto viberi iz spiska to chto tebe nujno.


Ответ отправлен: 12.05.2004, 08:18
Отправитель: THE_PRO


Отвечает vitya

Добрый день, Gerand!
Так ведь notepad откомпилирован с использованием юникода, а ваша программа скоее всего нет. Откомпилируйте ее в юникоде и все будет тип топ.

Ответ отправлен: 12.05.2004, 09:29
Отправитель: vitya


Отвечает Boriss

Здравствуйте, Gerand!
Я работаю не в XP, поэтому может и ошибаюсь, есть там особенности ...
Но надо бы сказать, в каком окне "закорючки" появляются? А в окне редактора что? Если тоже закорючки, то надо установить шрифт руссифицированный. В окне редактора - правая кнопка мыши - Properties - Display.
Вот видите, даже не ясно, нужно так отвечать или нет?

Ответ отправлен: 11.05.2004, 19:55
Отправитель: Boriss


 Вопрос № 1530

> Когда на форму ставишь RichEdit , то автоматически у него уже есть меню и работаюттгорячие клавиши. Скажите, пожалуйста, какие сообщения отсылает Ctrl+Ins, Ctrl+V и Paste в контекстном меню по правой кнопке мыши? Потому что это точно не WM_PASTE.
>
>
> Вопрос отправлен: 09.05.2004, 01:43
>
> Отвечает Boriss
>
> Добрый день, Lite!
> 0) У меня атоматически нет :(( - не везет
> 1) Ну уж контекстного меню у него по умолчанию нет. Так что какое используете Вы?
> 2) И надо самому отрабатывать сообщения
Что-то я не понял ответа. Или Вы не поняли вопроса. Объясняю более подробно: Borland C++ Builder 5.02. (win xp) Берете форму, кидаете на нее TEdit, комплилите, запускаете, подводите к Edit мышь, жмете правую кнопку - появляется контекстное меню (с пунктами Undo, Copy, Cut etc.). Меня интересует, какие сообщения отсылаются при выборе одного из пунктов этого меню. Как вообще это отследить?
Опытным путем выяснил, что это не WM_PASTE на выбор пункта Cut. Я как раз и хочу _сам_ обрабатывать эти сообщения.



Вопрос отправлен: 11.05.2004, 22:48
Отправитель: Lite

[Следующий вопрос >>] [Список вопросов]

Отвечает Boriss

Доброе время суток, Lite!
Понять мудрено...
1) Вы не написали, что дело в C++Builder'e (Но это не важно - все равно отрабатывают Windows)
2) Вы написали, что RichEdit, а сейчас Edit
Но все это не важно. Просто прошу поточнее формулировать вопрос. Давать больше информации
3) И как WM_PASTE может быть связано с Cut? Paste - оно и в Африке Paste (Вставить). Cut - вырезать
Но тем не менее, сейчас вопрос ясен. Отвечаю
{$EXTERNALSYM WM_CUT}
WM_CUT = $0300;
{$EXTERNALSYM WM_COPY}
WM_COPY = $0301;
{$EXTERNALSYM WM_PASTE}
WM_PASTE = $0302;
{$EXTERNALSYM WM_CLEAR}
WM_CLEAR = $0303;
{$EXTERNALSYM WM_UNDO}
WM_UNDO = $0304;

Приложение:

Ответ отправлен: 13.05.2004, 13:53
Отправитель: Boriss


 Вопрос № 1531

Привет!
Может кто-нибудь может дать ссылку на русский справочник по WinApi, только please не по именам функций, а по разделам(например "Окна ","Экран" ...)
Thanks



Вопрос отправлен: 12.05.2004, 01:09
Отправитель: Толик

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Здравствуйте, Толик!
Есть такая "Русская спpавка по Windows API".
Если нужно давай мыло.

Ответ отправлен: 15.05.2004, 20:45
Отправитель: Pawel


Отвечает sir henry

Приветствую Вас, Толик!
Если в переложении на Дельфи, то вот ссылка:
http://www.soobcha.ru/rushelp
лично мне нравиться :).
Для Ьилдера вот:
http://www.bcbdev.ru
И тот и другой справочники неполные, но регулярно обновляются.

Ответ отправлен: 12.05.2004, 07:32
Отправитель: sir henry


Отвечает Boriss

Здравствуйте, Толик!
Нарпример, Тарас Сорока делал перевод. Его сайт http://www.bcbdev.ru/
Он и рассылку делает
http://anatolix.naumen.ru/win32books.htm
http://mexmat.aaanet.ru/singlemusor.shtml?WinAPI
Еще что-то было платное. Если нужно, то напишите - поищу адрес в архивах...

Ответ отправлен: 14.05.2004, 11:21
Отправитель: Boriss


 Вопрос № 1533

Здравсвтуйте!!! Я недавно начал учить С++ и С++ Builder и сегодня встретился с такой проблемой... Я хотел организовать работу с потоками, но у меня не получается создать объект класса TThread в BCB. Я не пойму почему. Объясните пожалуйта почему и как исправить ситуацию!



Вопрос отправлен: 12.05.2004, 18:34
Отправитель: Dmitry

[Следующий вопрос >>] [Список вопросов]

Отвечает samum2000


Здравствуйте, Dmitry!
А как вы запускаете? Какие ошибки выдает компилятор (как вы поняли, что поток не запускается).
--------------------------
-=Experts helper: testmode=-

Ответ отправлен: 15.05.2004, 08:40
Отправитель: samum2000


Отвечает sir henry

Добрый день, Dmitry!
Неизвестно каким образом Вы пытаетесь создать объект, поэтому и неизвестно, где Вы делаете ошибку. Вы руководствуетесь каким-то примером?

Ответ отправлен: 13.05.2004, 10:35
Отправитель: sir henry


Отвечает THE_PRO

Доброе время суток, Dmitry!
A u tebya kakoy BCB? Neujeli 6.0

Ответ отправлен: 13.05.2004, 16:06
Отправитель: THE_PRO


Отвечает CrackLab

Добрый день, Dmitry!
Поробую объяснить как можно короче и понятнее.
Когда вы пытаетесь создать объект класса TThread, вы наверно пишете:
TThread *trd = new TThread();
В этом случае компилятор выдаст вам 2 ошибки, сказав, что во-первых, невозможно создать образец абстрактного класса TThread, и во во-вторых, что класс является абстрактным, потому что есть функция, определенная как:
__fastcall TThread::Execute() = 0;
Функция TThread::Execute() является чистой виртуальной функцией, т.е. не имеет тела (кода) внутри класса TThread.
Чистая виртуальная функция объявляется как:
ClassName::FuncName(params) = 0;
Если в классе есть хотя бы одна виртуальная функция, то такой класс называется абстрактным.
Невозможно создавать объекты абстрактного класса. Необходимо наследовать абстрактный класс, объявить в нем ту функцию, которая в родительском классе является виртуальной, и при необходимости добавить конструктор, передающий параметры конструктору родительского класса.
Поэтому мы должны унаследовать свой класс от TThread.
В .h файле создадим такой класс:
class TDerivedThread : public TThread
{
void __fastcall Execute();
};
и попытаемся динамически создать объект этого класса:
TDerivedThread *trd = new TDerivedThread();
Увидим сообщение об ошибке, что компилятор не может сгенерировать конструктор по умолчанию для объекта класса TDerivedThread
Создадим конструктор:
class TDerivedThread : public TThread
{
void __fastcall Execute();
public:
TDerivedThread() {};
};
Увидим сообщение об ошибке, что невозможно инициализировать базовый класс TThread. Это происходит потому, что при наследовании и создании объекта, будут вызываться конструкторы всех базовых классов, начиная со старшего. Т.е. в нашем случае при создании объекта класса TDerivedThread будет вызван конструктор классса TThread.
Конструктор класса TThread определен как:
__fastcall TThread(bool CreateSuspended);
Т.е. проблема в том, что он требует параметр bool CreateSuspended. Но при создании класса TDerivedThread мы этот параметр не передаем.
Принято соглашение о том, как поступать в этой ситуации.
Конструктору "самого дочернего" класса передаются все параметры, необходимые для передачи конструкторам базовых классах, и эти параметры передаются конструкторам базовых классов в такой форме (на примере TThread):
TDerivedThread(bool CreateSuspended):TThread(CreateSuspended)
{
};
Т.е. ставится двоеточие, потом имя базового класса (оно же - имя конструктора базового класса) и в скобках необходимые параметры для передачи, которые берутся из параметров конструктора дочернего класса. После такого объявления конструктора класса TDerivedThread и динимического создания объекта этого класса:
TDerivedThread *trd = new TDerivedThread(false);
Останется только реализовать тело функции Execute(), иначе мы получим ошибку (Linker Error)
В теле функции Execute() и напишем код, который будет вызываться конструктором класса TThread (автоматически) и будет выполняться в отдельном потоке.
Т.е. остается дописать:
void __fastcall TDerivedThread::Execute()
{
// Наши действия
}
И программа будет работать. Надеюсь объяснил понятно =)

Ответ отправлен: 12.05.2004, 19:02
Отправитель: CrackLab



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (25)
C / C++ (14)
Perl (4)
Builder / Delphi (19)
Pascal (20)
Basic / VBA (3)
Java / JavaScript (4)
PHP (12)
Криптография (8)
WinAPI (9)
Радиоэлектроника (5)
Пользователю
Windows 95/98/Me (36)
Windows NT/2000/XP (51)
"Железо" (28)
Поиск информации (15)
Администратору
Windows NT/2000/XP (26)
Linux / Unix (9)
Юристу
Гражданское право (10)
Семейное право (7)
Трудовое право (9)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное