Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

Принцип распознавания графических смайликов   Найти похожие ветки 

 
Eraser ©   (2005-06-03 17:43) [0]

Вопрос навеян веткой http://delphimaster.net/view/1-1117788235/

Необходимо не "преобразовывать" тестовые смайлики ( ;-) ) в графические, а наоборот - картинку-смайлик в текстовый смайлик. Подобный мезханизм применён в ICQ-клиенте, чате для локальной сети VyPress Chat, очивидно, что эта возможность основана на работе самого RichEdit, т.к. если "перетащить" картинку-смайлик на RichEdit (не обязательно TRichEdit) (например в WordPad, MSWord) то эта картинка автоматически преобразуется в набор символов - текстовый смайл.
Довольно много времени потратил на поиск инфы по этой теме, так ничего и не нашёл (

Буду очень признателен за подсказки ;-)


 
Alexander Panov ©   (2005-06-03 17:46) [1]

Eraser ©   (03.06.05 17:43)

Проблема совершенно непонятна. Приложение, с которого тянется картинка, отдает тебе не ее саму, а код этой картинки. Вот и все.


 
Eraser ©   (2005-06-03 17:49) [2]

Alexander Panov ©   (03.06.05 17:46) [1]

Именно!!! Так откуда оно (приложение) этот код знает? Вот в чём вопрос... С пом. компонентов Jv/RxRichEdit нельзя идентифицировать картинку... по крайней мере если можно, то я не знаю как...


 
Neznaika ©   (2005-06-03 17:49) [3]

я так понял в том и проблема что надо заместо картинки текст отдавать


 
Alexander Panov ©   (2005-06-03 17:50) [4]

Eraser ©   (03.06.05 17:49) [2]

Приложение, в котором отображается картинка, не знает кода?


 
Fay ©   (2005-06-03 17:52) [5]

Это развод, либо Орешник снова переехал в Основную.


 
Neznaika ©   (2005-06-03 17:52) [6]

Alexander Panov ©
по моему вы так будете долго рассуждать если знаете как сделать скажите, а то воду в ступе толчете..


 
Eraser ©   (2005-06-03 17:52) [7]

Neznaika ©   (03.06.05 17:49) [3]

Именно.

Alexander Panov ©   (03.06.05 17:50) [4]

Так непонятно даже куда этот код записывать ((
Имеется ф-я InsertImage (по-моему) и всё.


 
Eraser ©   (2005-06-03 17:58) [8]

Fay ©   (03.06.05 17:52) [5]

Я ж говорю, проблема не совсем тривиальна. Программ-чатов, которые умеют это делать по пальцам одной руки перечесть.
БОльшая часть программ, при выборе смайлика, вставляет *LOL*, а не картинку... так и я могу )


 
iskatel ©   (2005-06-03 18:29) [9]

Удалено модератором
Примечание: Попробуй то же самое без мата?


 
iskatel ©   (2005-06-03 18:37) [10]

блин, не туда запостил, надо было в ветку, которой "навеяно"


 
Eraser ©   (2005-06-03 18:40) [11]

iskatel ©   (03.06.05 18:37) [10]
надо было в ветку, которой "навеяно"


А это какая? )


 
iskatel ©   (2005-06-03 18:41) [12]


> Eraser ©   (03.06.05 17:43)
> Вопрос навеян веткой http://delphimaster.net/view/1-1117788235/


 
ferr ©   (2005-06-03 19:53) [13]

CRC+FileSize подойдёт?


 
Eraser ©   (2005-06-03 20:03) [14]

ferr ©   (03.06.05 19:53) [13]

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


 
-=XP=- ©   (2005-06-03 21:50) [15]

Это развод? Или как? Я что-то пропустил? Или я туплю?

Если все же не развод, поясню:

Программа-клиент принимает сообщение: Привет! ;)
Пишет в окне Привет! и вместо текста ;) (точка с запятой и скобка) рисует смайлик.
Когда же пользователь пытается перетащить смайлик в другую программу, то на самом деле перетаскивается не смайлик, а реальный текст ;) (точка с запятой и скобка).
То-есть, на самом деле никакого смайлика нет. Это развод пользователя программой. Подстава. На самом деле там не смайлик, а текст ;). Развод.

Поэтому ничего распознавать не надо.

P.S. Я что-то не понял, это программа, рисуя смайлики, разводит пользователей или Eraser разводит меня?


 
Eraser ©   (2005-06-03 22:43) [16]

-=XP=- ©   (03.06.05 21:50) [15]
Eraser разводит меня?


Разводят котят - 1 котёнок на 1 литр ;-)

Когда же пользователь пытается перетащить смайлик в другую программу, то на самом деле перетаскивается не смайлик, а реальный текст ;) (точка с запятой и скобка).

С пом. TJvRichEdit невозможно даже установить факт, что в данном месте с позицией X присутствует объект-рисунок, не говоря уже от том, что это рисунок на самом деле означает. А рисунок присутствует и, как вы правильно заметели правильно преобразуется. Вот я у вас и спрашиваю, как это реализовать?

Это развод пользователя программой.

Как сделать такой же развод пользователя в своей программе? ;-)


 
Neznaika ©   (2005-06-04 11:50) [17]

У меня qip2005 cтоит, он вообще не позволяет перетаскивать ничего на другие контролы, и ничего в процессе draga_and_dropa не заменяет!

И вообще, поставь на форму второй RichEdit и по каждому KeyDown копируй текст в него из первого, сделай смайлы в виде меню, и в зависимости от того на какой итем меню было нажато, во второй RichEdit вставляй определенную комбинацию символов, а в первый Rich само изображение, а потом передавай второй Rich.
Естесно надо много чего продумать, но просто как вариант на мой взгляд вполне реально.

Лучше скажите где про ICQ почитать, как это все работает, и с чего начать разработку собственного клиента(просто любопытно что это за зверь такой ICQ...)


 
Neznaika ©   (2005-06-04 13:21) [18]

UP!
Ну скажите где почитать то!


 
Eraser ©   (2005-06-04 13:31) [19]

Neznaika ©   (04.06.05 11:50) [17]

Могу тебе с 95% увереностью сказать что в ICQ-клиенте нету никакого второго RichEdit"a, просто люди хорошо разобрались в Ole-Drag"n"Drop.

Лучше скажите где про ICQ почитать, как это все работает, и с чего начать разработку собственного клиента(просто любопытно что это за зверь такой ICQ...)

Я делаю НЕ клиент ICQ, но инфа по аське есть http://icq2000cc.hobi.ru/content.html


 
Pomestnik   (2005-06-04 14:20) [20]

-=XP=- ©   (03.06.05 21:50) [15]
>>P.S. Я что-то не понял, это программа, рисуя смайлики, >>разводит gользователей или Eraser разводит меня?

Мне кажется ты разводишь сам себя....:)


 
DiamondShark ©   (2005-06-04 15:28) [21]


> , что эта возможность основана на работе самого RichEdit,
> т.к. если "перетащить" картинку-смайлик на RichEdit (не
> обязательно TRichEdit) (например в WordPad, MSWord) то эта
> картинка автоматически преобразуется в набор символов -
> текстовый смайл.

Фиги.
Эта возможность основана на работе OLE Drag-n-drop.
Когда ты тащишь картинку из клиента, он создаёт DataObject, который либо уже содержит только CF_TEXT, либо несколько форматов, среди которых и CF_TEXT.


 
Eraser ©   (2005-06-04 17:09) [22]

DiamondShark ©   (04.06.05 15:28) [21]

А как обрабатываеть OLE Drag-n-drop события, по-моему стандартные делфевские обработики типа OnDragDrop в этом случае не годятся...?


 
KilkennyCat ©   (2005-06-04 17:51) [23]

У каждой картинки есть название.


 
Eraser ©   (2005-06-04 18:00) [24]

KilkennyCat ©   (04.06.05 17:51) [23]

Дело в том, что при добавлении объекта, он никак не идентифицируется.
Вот структура добавляемого OLE объекта

REOBJECT Structure

--------------------------------------------------------------------------------

The REOBJECT structure contains information about an object.

Syntax

typedef struct _reobject {
   DWORD cbStruct;
   LONG cp;
   CLSID clsid;
   LPOLEOBJECT poleobj;
   LPSTORAGE pstg;
   LPOLECLIENTSITE polesite;
   SIZEL sizel;
   DWORD dvaspect;
   DWORD dwFlags;
   DWORD dwUser;
} REOBJECT;
Members

cbStruct
Structure size, in bytes.
cp
Character position of the object.
clsid
Class identifier of the object.
poleobj
Points to an instance of the IOleObject interface for the object.
pstg
Points to an instance of the IStorage interface. This is the storage object associated with the object.
polesite
Points to an instance of the IOleClientSite interface. This is the object"s client site in the rich edit control. This address must have been obtained from the IRichEditOle::GetClientSite method.
sizel
A SIZEL structure specifying the size of the object. A 0, 0 on insertion indicates that an object is free to determine its size until the modify flag is turned off.
dvaspect
Display aspect used. See DVASPECT for an explanation of possible values.
dwFlags
Object status flag. It can be a combination of the following values.
REO_BELOWBASELINE
Object sits below the baseline of the surrounding text; the default is to sit on the baseline.
REO_BLANK
Object is new. This value gives the object an opportunity to save nothing and be deleted from the control automatically.
REO_DONTUSEPALETTE
Object is rendered before the creation and realization of a half-tone palette. Applies to 32-bit platforms only.
REO_DYNAMICSIZE
Object always determines its extents and may change despite the modify flag being turned off.
REO_GETMETAFILE
The rich edit control retrieved the metafile from the object to correctly determine the object"s extents. This flag can be read but not set.
REO_HILITED
Object is currently highlighted to indicate selection. Occurs when focus is in the control and REO_SELECTED is set. This flag can be read but not set.
REO_INPLACEACTIVE
Object is currently inplace active. This flag can be read but not set.
REO_INVERTEDSELECT
Object is to be drawn entirely inverted when selected; the default is to be drawn with a border.
REO_LINK
Object is a link. This flag can be read but not set.
REO_LINKAVAILABLE
Object is a link and is believed to be available. This flag can be read but not set.
REO_OPEN
Object is currently open in its server. This flag can be read but not set.
REO_RESIZABLE
Object may be resized.
REO_SELECTED
Object is currently selected in the rich edit control. This flag can be read but not set.
REO_STATIC
Object is a static object. This flag can be read but not set.
dwUser
Reserved for user-defined values.


Может кто пояснит где уникальный идентификатор конкретного объекта, я имею ввиду не его CLSID.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.209 c
14-1117733614
kaif
2005-06-02 21:33
2005.06.29
Москва и москвичи


1-1118066050
N
2005-06-06 17:54
2005.06.29
dxTreeList


14-1117642269
Delphinium
2005-06-01 20:11
2005.06.29
Visual C++


1-1118109662
dp200
2005-06-07 06:01
2005.06.29
Открыть несколько файлов


1-1118068564
WondeRu
2005-06-06 18:36
2005.06.29
Ошибка при очистке дерева объектов!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский