Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к компанентам, правда в чужем приложении :) 
:(
    Опции темы
Romikgy
  Дата 14.7.2005, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Вот такой вопрос появился к гуру дельфей smile

Мне необходимо получить доступ к компанентам на форме, но на форме чужего приложения!!! В особенности к их свойствам и тем более в особености dbgrid !

Мож кто делал это подскажите smile если нет то ногами сильно бить не надо smile

Сиба заранее всем кто откликнится smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Alex
Дата 14.7.2005, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 6
Всего: 162



Что именно вы хотите сделать?


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Snowy
Дата 14.7.2005, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Никак.
PM MAIL   Вверх
Akella
Дата 14.7.2005, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: нет
Всего: 329



Смотря к каким свойсвам, если что-то типа размера, то, наерное можно. Но это уже из серии про WinAPI
PM MAIL   Вверх
December
Дата 14.7.2005, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: нет
Всего: 57



Виндозными сообщениями разве что... Типа WM_GETTEXT


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Snowy
Дата 14.7.2005, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Цитата(December @ 14.7.2005, 09:32)
Виндозными сообщениями разве что... Типа WM_GETTEXT

Вряд ли DBGrid на это откликнется.
Информацию из него так просто не вытащить.
Можно только его память просканировать, но это глупая затея.
Проще самому подключиться к той же базе и забрать данные.
А из чужого грида вытащить практически нереально.
PM MAIL   Вверх
Romikgy
Дата 14.7.2005, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



дя ... почему перенесли в системные ??? да ладно smile

Как поменять размер компонента или заголовок (типа у формы) это я знаю smile а вот как добраться к внутренним свойствам (DBGrid не совсем удочное smile лучше бы к DataSources и его внутреностям типа полей и т.п. )

А общий смысл такой: есть прога работает со спец оборудованием, в DBGrid выдает свое состояние по целой куче параметров, и вот необходимо из нее выдащить все эти записи и поместить в файл , допустим в эксель, но эт не важно пока. Самое главное стянуть эти данные из работающей программы !!!!
Добавлено @ 10:51
Цитата(Snowy @ 14.7.2005, 09:37)
Цитата(December @ 14.7.2005, 09:32)
Виндозными сообщениями разве что... Типа WM_GETTEXT

Вряд ли DBGrid на это откликнется.
Информацию из него так просто не вытащить.
Можно только его память просканировать, но это глупая затея.
Проще самому подключиться к той же базе и забрать данные.
А из чужого грида вытащить практически нереально.

Как просканить память компонента в другом процессе?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romikgy
Дата 14.7.2005, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



А че по хенделу окна нельзя определить где он в памяти валяеться???

Это сообщение отредактировал(а) Girder - 14.7.2005, 11:41


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 14.7.2005, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Цитата(Romikgy @ 14.7.2005, 11:29)
А че по хенделу окна нельзя определить где он в памяти валяеться???

Нет. Нельзя. Хэндл окна сам по себе, память процесса сама по себе.
Нет никакой связи между хэндлом окна и используемой процессом памятью.
Физически память грида может быть раскидана где угодно. Часть в середине, часть после текста мемополя соседней формы, часть вообще, где память свободная нашлась, туда и воткнулась.
Причем все это в любом порядке.
Дохлый номер.
PM MAIL   Вверх
Romikgy
Дата 14.7.2005, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(Snowy @ 14.7.2005, 11:38)
Цитата(Romikgy @ 14.7.2005, 11:29)
А че по хенделу окна нельзя определить где он в памяти валяеться???

Нет. Нельзя. Хэндл окна сам по себе, память процесса сама по себе.
Нет никакой связи между хэндлом окна и используемой процессом памятью.
Физически память грида может быть раскидана где угодно. Часть в середине, часть после текста мемополя соседней формы, часть вообще, где память свободная нашлась, туда и воткнулась.
Причем все это в любом порядке.
Дохлый номер.

И че нет никакого выхода ? smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 14.7.2005, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Цитата(Romikgy @ 14.7.2005, 11:40)
И че нет никакого выхода ?

Читай третий пост:
Цитата(Snowy @ 14.7.2005, 09:13)
Никак.


PM MAIL   Вверх
Romikgy
Дата 14.7.2005, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Плохо smile smile

А как тогда работают все проги просмотра рессурсов? и тем более прога DeDe ???


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 14.7.2005, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Цитата(Romikgy @ 14.7.2005, 12:09)
А как тогда работают все проги просмотра рессурсов?

Они смотрят ресурсы exeшника, а не память работающего процесса.

Цитата(Romikgy @ 14.7.2005, 12:09)
и тем более прога DeDe ???

Она тоже смотрит ресурсы и код ехешника.

Работающий процесс их не интересует.
Этим занимаются программы типа ArtMoney. Но и она не дает набор информации, а всего лишь ищет понравившийся тебе байтик среди кучи мусора в памяти процесса.
PM MAIL   Вверх
Romikgy
Дата 14.7.2005, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(Snowy @ 14.7.2005, 12:14)
Цитата(Romikgy @ 14.7.2005, 12:09)
А как тогда работают все проги просмотра рессурсов?

Они смотрят ресурсы exeшника, а не память работающего процесса.

Цитата(Romikgy @ 14.7.2005, 12:09)
и тем более прога DeDe ???

Она тоже смотрит ресурсы и код ехешника.

Работающий процесс их не интересует.
Этим занимаются программы типа ArtMoney. Но и она не дает набор информации, а всего лишь ищет понравившийся тебе байтик среди кучи мусора в памяти процесса.

А разве ехе-шник не проецируется в память при выполнении??????


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 14.7.2005, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Цитата(Romikgy @ 14.7.2005, 13:27)
А разве ехе-шник не проецируется в память при выполнении??????

Не всегда.
Кроме того, тебе нужен не ехешник, а данные полученные в процессе работы.
А они в ехешнике не хранятся.
Память для них выделяется динамически и винда распихивает эти данные куда попало, где есть свободное место. Сам понимаешь, что при 2-х разных запусках это "куда попало" будет в совершенно разных местах.
PM MAIL   Вверх
Romikgy
Дата 14.7.2005, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Да я это понимаю, но в памяти куда кидается образ ехе-шника должны быть ссылки на это куда попало, я прав???? Как увидеть и возюзать эти ссылки такое реально?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Rrader
Дата 14.7.2005, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 29
Всего: 191



Цитата

такое реально?

Только наугад. Ты не сможешь сделать этого.


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Snowy
Дата 14.7.2005, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Цитата(Romikgy @ 14.7.2005, 14:16)
Как увидеть и возюзать эти ссылки такое реально?

Нет. Неисповедимы пути виндовые.
Мы делаем запрос "Дай память" она дает.
Но все хвосты идут в процесс. Другому эти ссылки неведомы.
И наличие ехешника тут никак не поможет.
PM MAIL   Вверх
Romikgy
Дата 14.7.2005, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(Rrader @ 14.7.2005, 16:19)
Цитата

такое реально?

Только наугад. Ты не сможешь сделать этого.

Это почему не смогу, что мне не даст?
Добавлено @ 16:54
Цитата(Snowy @ 14.7.2005, 16:24)
Цитата(Romikgy @ 14.7.2005, 14:16)
Как увидеть и возюзать эти ссылки такое реально?

Нет. Неисповедимы пути виндовые.
Мы делаем запрос "Дай память" она дает.
Но все хвосты идут в процесс. Другому эти ссылки неведомы.
И наличие ехешника тут никак не поможет.

Ну дык мы же просим память именно процесса!!!! А там ссылки есть smile

Второе я так подумал если прицепить к процессу свой поток (удаленно) и из него запросить все структуры ( только бы знать эти структуры smile) , такой подход реален?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Girder
Дата 15.7.2005, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



Да все в принципе реально. Просто... смотря что тебе нужно.

Цитата(Alex @ 14.7.2005, 10:01)
Что именно вы хотите сделать?
?


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Romikgy
Дата 15.7.2005, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(Girder @ 15.7.2005, 02:30)
Да все в принципе реально. Просто... смотря что тебе нужно.

Цитата(Alex @ 14.7.2005, 10:01)
Что именно вы хотите сделать?
?

Я уже отвечал , необходимо вырвать данные из dbgrid во время работы приложения (только это все из чужего приложения!!!!)


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Akella
Дата 18.7.2005, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: нет
Всего: 329



вот, наткнулся нечайно
http://www.xakep.ru/post/27145/default.asp
PM MAIL   Вверх
Snowy
Дата 18.7.2005, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Не поможет. Из окна вытащить текст не сложно.
А вот из таблицы...
13 больших разниц.
PM MAIL   Вверх
Romikgy
Дата 18.7.2005, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(Snowy @ 18.7.2005, 13:20)
Не поможет. Из окна вытащить текст не сложно.
А вот из таблицы...
13 больших разниц.

В чем разница то????

Я вот начал экспериментировать, и наткнулся на то , что все компоненты тобишь (tedit, tdbgrid ....) это указатели !!!! А вот если попробовать через внутренюю структуру компонента/класса добратся до необходимых данных ?
Добавлено @ 14:14
Цитата(dsergey @ 18.7.2005, 13:12)
вот, наткнулся нечайно
http://www.xakep.ru/post/27145/default.asp

Сиба , но эт чуть не то smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 18.7.2005, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Цитата(Romikgy @ 18.7.2005, 14:05)
В чем разница то????

В том, что у грида свойство Text не используется. И ничего внятного на GetText он не даст.
Цитата(Romikgy @ 18.7.2005, 14:05)
компоненты тобишь (tedit, tdbgrid ....) это указатели !!!!

Кто бы мог подумать smile
Я тебе даже больше скажу: и большинство полей у них тоже указатели.
Причем указатели на приватные функции, которые не есть данные.
А данные грида находятся в списке указателей, которые ссылаются на указатели на данные до которых добраться просто нереально, ибо они закрыты и доступ к ним осуществляется через интерфейсы компонента, которые ты не сможешь юзать из стороннего процесса.
Лучше поверь на_слово. Не выйдет.
PM MAIL   Вверх
Romikgy
Дата 19.7.2005, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(Snowy @ 18.7.2005, 18:00)
Цитата(Romikgy @ 18.7.2005, 14:05)
В чем разница то????

В том, что у грида свойство Text не используется. И ничего внятного на GetText он не даст.
Цитата(Romikgy @ 18.7.2005, 14:05)
компоненты тобишь (tedit, tdbgrid ....) это указатели !!!!

Кто бы мог подумать smile
Я тебе даже больше скажу: и большинство полей у них тоже указатели.
Причем указатели на приватные функции, которые не есть данные.
А данные грида находятся в списке указателей, которые ссылаются на указатели на данные до которых добраться просто нереально, ибо они закрыты и доступ к ним осуществляется через интерфейсы компонента, которые ты не сможешь юзать из стороннего процесса.
Лучше поверь на_слово. Не выйдет.

Насчет геттекст это понятно, хоть и обыдно smile

Одно интересно как все компоненты ссылаются по точке??? (поидее должен быть ^ если есть указатель) !?

И еще в какой внутреней переменной хранятся данные в дбгрид, которые отображаются???


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 19.7.2005, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Цитата(Romikgy @ 19.7.2005, 08:20)
поидее должен быть ^ если есть указатель

Это реализовано внутренними механизмами дельфи.
Программист работает с объектами, а внутренний механизм знает только стандартные типы переменных. Все остальное - ссылка. Но это только для дельфи. Для программиста это объект и должен он работать с ним, как с объектом, а не указатели
Цитата(Romikgy @ 19.7.2005, 08:20)
в какой внутреней переменной хранятся данные в дбгрид, которые отображаются???

Ни в какой. Там динамический список. Куча указателей, все разбросано, как винда пошлет.
Причем прямого обращения к нему ты не получишь, ибо все закрыто, а доступ только через системные методы класса.
PM MAIL   Вверх
Romikgy
Дата 19.7.2005, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146





Цитата(Snowy @ 19.7.2005, 09:25)
Программист работает с объектами, а внутренний механизм знает только стандартные типы переменных. Все остальное - ссылка. Но это только для дельфи. Для программиста это объект и должен он работать с ним, как с объектом, а не указатели


Интересно , но если честно как-то через ж... (извеняюсь) сделано smile smile smile


Цитата(Snowy @ 19.7.2005, 09:25)
Ни в какой. Там динамический список. Куча указателей, все разбросано, как винда пошлет.
Причем прямого обращения к нему ты не получишь, ибо все закрыто, а доступ только через системные методы класса.


Я так полистал исходники, и так подумал , что доступ к динамическому списку можно будет получить( конечно если ОЧЕНЬ сильно постараться smile) смысл здеся в другом ...

в дбгрид инфа попадает , только для видимой части, прав? Если да то мне не сильно подходит smile
Вопросец, а датасорец или ттайбл , туда все сразу попадает???


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 19.7.2005, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Цитата(Romikgy @ 19.7.2005, 17:14)
Интересно , но если честно как-то через ж... (извеняюсь) сделано

Сделано все правильно. Если у тебя структура на 2 мегабайта, а ты захочешь ее функции передать? Это нужно качать все 2 мега? Проще передать 4 байта указателя.
Цитата(Romikgy @ 19.7.2005, 17:14)
датасорец или ттайбл , туда все сразу попадает???

Нет. Все компоненты скрывают свои данные, предоставляя только интерфейсы для работы с ними.
Например, когда ты пишешь
Label1.Caption:='Му-Му';
То ты вовсе не присваиваешь капшену значение Му-Му, а вызываешь внутренний интерфейс класса, передавая ему строковой параметр.
В реале это компилится в
Label1.SetCaption('Му-Му');
Но если ты попробуешь написать именно так, то компилятор тебя пошлет, ибо данный метод скрытый.
Знаю, опять скажешь, что бред. Сам полез во внутреннюю реализацию.
Для интерфейса программиста все более, чем правильно. А внутрь лезть не надо.
Добро пожаловать в ООП - мир абстракции.
PM MAIL   Вверх
Romikgy
Дата 19.7.2005, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(Snowy @ 19.7.2005, 17:24)
Сделано все правильно. Если у тебя структура на 2 мегабайта, а ты захочешь ее функции передать? Это нужно качать все 2 мега? Проще передать 4 байта указателя.

Дык на мой взгляд былобы понятнее и организовать указателями с ^ , а не извращатся ( но только мое мнение )


Цитата(Snowy @ 19.7.2005, 17:24)
В реале это компилится в
Label1.SetCaption('Му-Му');
Но если ты попробуешь написать именно так, то компилятор тебя пошлет, ибо данный метод скрытый.


И это понятно, но вопрос остается данные сразу влетают в ттабле или по надобности?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 19.7.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Цитата(Romikgy @ 19.7.2005, 17:32)
Дык на мой взгляд былобы понятнее и организовать указателями с ^ , а не извращатся ( но только мое мнение )

А это и не изврашение. Во-первых програмеру и незачем знать, как оно реализовано внутри.
Во-вторых по стандарту ООП код должен писаться именно так, а не на закорючках.
В-третьих, кому действительно это надо, тот понимает, что и как есть на самом деле без всяких закорючек.
Цитата(Romikgy @ 19.7.2005, 17:32)
И это понятно, но вопрос остается данные сразу влетают в ттабле или по надобности?

По надобности.
PM MAIL   Вверх
Girder
Дата 21.7.2005, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



Вот еще... один вариант smile :
PS: Вот только код не надо из под Delphi запускать smile
Код
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

type
 pMem=^TMem;
 TMem=record
  bAddr:DWord;
  Size:DWord;
 end;

function GetPagesMemoryProcess32(pID:Cardinal):TList;
var oProcess:Cardinal;
    MemAddr:Cardinal;
    MemInfo:_MEMORY_BASIC_INFORMATION;
    i:integer;
    m,t:pMem;
begin
 Result:=TList.Create;
 if pID=0 then exit;
 oProcess:=OpenProcess(PROCESS_QUERY_INFORMATION,false,pID);
 if oProcess<>0 then
  begin
   MemAddr:=0;
   while (VirtualQueryEx(oProcess,Pointer(MemAddr),MemInfo,SizeOf(_MEMORY_BASIC_INFORMATION))<>0) do
    begin
     MemAddr:=MemAddr+MemInfo.RegionSize;
     if MemInfo.State=MEM_COMMIT then
      begin
       New(m);
       m^.bAddr:=DWord(MemInfo.BaseAddress);
       m^.Size:=MemInfo.RegionSize;
       Result.Add(m);
      end; 
    end;
   CloseHandle(oProcess);
  end;
 for i:=Result.Count-1 downto 1 do
  begin
   m:=Result.Items[i];
   t:=Result.Items[i-1];
   if m^.bAddr=(t^.bAddr+t^.Size) then
    begin
     t^.Size:=t^.Size+m^.Size;
     Dispose(m);
     Result.Delete(i);
    end;
  end;
end;

function GetWinControl(const ClassName:string; WidthComponent,SeekWidth:DWord; var w:TWinControl):Boolean;
var i:integer;
    a:DWord;
    m:pMem;
    tw:TWincontrol;
    PMP:TList;
begin
 Result:=false;
 PMP:=GetPagesMemoryProcess32(GetCurrentProcessID()); 
 try
  for i:=0 to PMP.Count-1 do
   begin
    m:=PMP.Items[i];
    for a:=m^.bAddr to (m^.bAddr+m^.Size-4) do
     if PDWord(a)^=WidthComponent then
      begin
       try
        tw:=Pointer(a+SeekWidth);
        if AnsiCompareText(tw.ClassName,ClassName)=0 then
         begin
          w:=tw;
          Result:=true;
          exit;
         end;
       except
       end;
      end;
   end;
 finally
  for i:=PMP.Count-1 downto 0 do
   begin
    m:=PMP.Items[i];
    Dispose(m);
   end;
  PMP.Free; 
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var pW,pS:Pointer;
    w:TWinControl;
begin
 pW:=w;
 pS:[email protected];
 Memo1.Lines.Clear;
 Memo1.Lines.Add('Лабуда... лабуда... лабуда');
 if GetWinControl(Memo1.ClassName,Memo1.Width,DWord(pW)-DWord(pS),w) then
  begin
   Caption:=TMemo(w).Text;
  end;
end;

end.


PS: Но для такого решения... тебе надо будет много DLL под каждую вариации: Исходники+Компилятор(и настройки) smile


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Romikgy
Дата 21.7.2005, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(Girder @ 21.7.2005, 12:13)
PS: Вот только код не надо из под Delphi запускать

Почему ????

Код интересен smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Girder
Дата 21.7.2005, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



Цитата(Romikgy @ 21.7.2005, 14:34)
Почему ????
Можеш замучиться исключения ловить smile


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Romikgy
Дата 21.7.2005, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Откуда им взяться то ? вроде код нормальный, и очень прикольный ... smile щаз сижу разбираюсь с ним smile
Добавлено @ 13:49
Кстати , можно ли определит это twincomponent или эта своя область какаято????


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ScriptkidY
Дата 28.7.2005, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 24.7.2005
Где: Тюмень

Репутация: нет
Всего: нет



Есть еще одна шизовая идея!!!
можно посылать собщения этому гриду , по типу клавиша вниз, клавиша вверх, перед этим выделив ячейку 0,0 и посылая на каждой ячейке wm_copy а скажем в свой грид уже делать обычный paste ...
думаю это должно прокатить, но есть два не достатка!!!
1: по времени долго, где-то 20-200 мс
2: если грид большой то вовремени вытаскивания данных зверь может выбрать другу ячейку, но это исправимо кликом на ячейку 0,0 перед каждым "вниз, вверх"!!!

зы... я такое даже кое-где применял, тока не с гридами!!! работает!!!
PM MAIL ICQ   Вверх
Romikgy
Дата 28.7.2005, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



An application sends the WM_COPY message to an edit control or combo box to copy the current selection to the clipboard in CF_TEXT format.
Перевести надо ????

ЗЫ и не знаю как в других , но в требуемом мне приложении скопировать в буфер из грида нифига не удаетсяsmile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Rrader
  Дата 28.7.2005, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 29
Всего: 191



Есть способ получить текст из DBGrid! Проделайте такой код:
Код

Procedure TForm1.Button1Click(Sender: TObject);
Var
  Buf: Array[1..1024] Of Char;
  DBGridEdit: THandle;
Begin
  DBGridEdit := FindWindowEx(FindWindowEx(FindWindow(NIL,
    '<Заголовок чужой формы>'), 0, 'TDBGrid', NIL), 0, 'TDBGridInplaceEdit', NIL);
  GetWindowText(DBGridEdit, @Buf, SizeOf(Buf));
  Form1.Caption := StrPas(@Buf);
End;

Теперь выделите левую верхнюю ячейку и нажмите на кнопку! smile

Это сообщение отредактировал(а) Rrader - 28.7.2005, 15:24


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
ScriptkidY
Дата 28.7.2005, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 24.7.2005
Где: Тюмень

Репутация: нет
Всего: нет



Цитата(Romikgy @ 28.7.2005, 14:28)
An application sends the WM_COPY message to an edit control or combo box to copy the current selection to the clipboard in CF_TEXT format.
Перевести надо ????

ЗЫ и не знаю как в других , но в требуемом мне приложении скопировать в буфер из грида нифига не удаетсяsmile


почему??? если потому что стоит свойство о том что нельзя редактировать поля , то можно свойство поменять...
me_set ...... дальше не помню как... и ипослать его как 1 !!!

а еще лучше пользоваться советом от Rrader`a тока он также робить не будет я думаю... хотя смотреть надо...

Это сообщение отредактировал(а) ScriptkidY - 28.7.2005, 23:28
PM MAIL ICQ   Вверх
Romikgy
Дата 29.7.2005, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(Rrader @ 28.7.2005, 15:21)
Теперь выделите левую верхнюю ячейку и нажмите на кнопку!

Ну и нажал ... ну и ничего smile
Что это за зверь 'TDBGridInplaceEdit'????

Цитата(ScriptkidY @ 28.7.2005, 23:25)
почему??? если потому что стоит свойство о том что нельзя редактировать поля , то можно свойство поменять...
me_set ...... дальше не помню как... и ипослать его как 1 !!!

За совет сиба , но все таки WM_COPY message to an edit control or combo box , тобишь это сообщение передается для эдитов и комбобоксов так написано smile и плюс должно быть выделено smile
Цитата(ScriptkidY @ 28.7.2005, 23:25)
а еще лучше пользоваться советом от Rrader`a тока он также робить не будет я думаю... хотя смотреть надо...

Уже посмотрел , не работает smile
Вот куда смотреть ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Rrader
  Дата 29.7.2005, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 29
Всего: 191



Цитата

Ну и нажал ... ну и ничего
Что это за зверь 'TDBGridInplaceEdit'????

Все работает! А этот зверь - это Edit, представляющий каждую ячейку! И с ним можно производить те же операции, что и с TEdit! smile

Это сообщение отредактировал(а) Rrader - 29.7.2005, 15:02


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Romikgy
Дата 29.7.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Не знаю как оно у тя работает, я уже даже энум по окну сделал нету больше никаких окон и
TDBGridInplaceEdit не находит smile
У тя Дельфя какая????


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Rrader
Дата 29.7.2005, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 29
Всего: 191



Цитата

TDBGridInplaceEdit

Дело в том, что этот Edit по умолчанию недоступен! Чтобы исправить это, нужно в ячейке начать редактирование (чтобы появился курсор - жмем на ячейку мышью, затем жмем любую клавишу). smile


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Romikgy
Дата 29.7.2005, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(Rrader @ 29.7.2005, 15:35)
Дело в том, что этот Edit по умолчанию недоступен! Чтобы исправить это, нужно в ячейке начать редактирование (чтобы появился курсор - жмем на ячейку мышью, затем жмем любую клавишу).

Вот только сейчас с этим разобрался smile
Да , это все хорошо но что делать если вся колонка стоит readonly?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Гость_man
Дата 1.8.2005, 15:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











1. подключитесь к процессу
2. исп. FindControl или FindVCLWindow

Это сообщение отредактировал(а) Girder - 2.8.2005, 10:28
  Вверх
Romikgy
Дата 1.8.2005, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата
подключитесь к процессу

Это и так понятно, но рассматриваем все варианты smile

Цитата
исп. FindControl или FindVCLWindow

Это что за звери, где о них почитать??
Добавлено @ 16:49
Да и пример бы показал (если есть )


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Гость_man
Дата 1.8.2005, 16:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Romikgy @ 1.8.2005, 16:48)
Цитата
подключитесь к процессу

Это и так понятно, но рассматриваем все варианты smile

Цитата
исп. FindControl или FindVCLWindow

Это что за звери, где о них почитать??
Добавлено @ 16:49
Да и пример бы показал (если есть )

это не звери, достаточно написать их и нажать F1.
Пример писать желания нет.
  Вверх
Гость_man
Дата 1.8.2005, 16:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Кстати, разруливая непонимание - 1 и 2, это не варианты, а последовательность.
  Вверх
Romikgy
Дата 2.8.2005, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



У меня дельфи 3 и мсдн , ни там ни там Ф1 не помогает найти зверей smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Гость_man
Дата 15.8.2005, 11:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Romikgy @ 2.8.2005, 08:42)
У меня дельфи 3 и мсдн , ни там ни там Ф1 не помогает найти зверей smile

понятно...
Не уверен, но в Д3 тоже должно быть что-то похожее.
Попробуй поискать в исходниках делфи
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1894 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.