Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2009, 16:01   #1
Neoteric
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 23
По умолчанию Получить большой по размеру текс из чужого приложения..

Приветствую всех.
Проблема в следующем: В чужом приложении имеется компонент RichEdit, с очень большим текстом, что не поместится в обычный тип стринг, есть вариант сохранить этот текст, скажем, в файловую переменную, а потом работать уже с файлом, так вот как это сделать? Ну, или может быть есть другие варианты?
Neoteric вне форума Ответить с цитированием
Старый 31.03.2009, 16:09   #2
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Есть тип AnsiString размером до 2 Гб
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 31.03.2009, 16:22   #3
Neoteric
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 23
По умолчанию

Хм в AnsiString он вообще ничего не заносит..
Мб в коде ошибка..
Код:
var s : AnsiString;
Begin
...
      SetLength(s, 100 );//для примера 100
      //находим в чужом приложении компонет RichEdit и присваеваем его h
      //получаем текс
      SendMessage( h, WM_GETTEXT, 100, lparam(@s[1]));
End.
В результате в переменную s ничего не попадает, с типом просто String работает..
Neoteric вне форума Ответить с цитированием
Старый 31.03.2009, 16:29   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А РичЭдит обрабатывает это сообщение вообще?
Кста в данном случае я бы String на Pchar заменил...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2009, 16:33   #5
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

Цитата:
В чужом приложении имеется компонент RichEdit, с очень большим текстом, что не поместится в обычный тип стринг
в стринг можна знать больше 255 символов..
Код:
var s:string;
**
SetLength(s, 10000);
или как вариант используй WideString.. ему то и длинну устанавливать не нада..

тоесть сразу
Код:
var s : WideString;
Begin
...
      //находим в чужом приложении компонет RichEdit и присваеваем его h
      //получаем текс
      SendMessage( h, WM_GETTEXT, 100, lparam(@s[1]));
End.
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 31.03.2009, 16:36   #6
Neoteric
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 23
По умолчанию

Не после небольших махинаций с кодом заработало
Указал в самом начале слишком большую длину строки, около миллиона символов, он и неработал
Selestis, Благодорю за помощь
Stilet, C PHcar'ом пробовал, он тоже не всю строку получал..

Думаю можно клоз
Neoteric вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как скопировать текст чужого приложения? Nikolay-niw32 Общие вопросы Delphi 17 12.03.2009 21:28
Как определить путь чужого приложения? VVM Win Api 3 02.12.2008 18:22
как получить дескриптор приложения в C#? fiatik Общие вопросы .NET 1 08.11.2008 08:18
Нужно получить все компоненты чужого окна по дескриптору 3lander Win Api 12 28.11.2007 20:41