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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2009, 15:12   #1
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию Как быстро читать из Мемо?

Цитата:
Stroka:=Source.Strings[i];
Мне надо быстрей получать строки в цикле. Есть ли альтернативные варианты?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 01.12.2009, 15:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну разве что ты доберешся до адреса метода Get в котором углядишь адрес строки из FList^[Index].FString. а после через move получишь строку...
Но это хакерство скорее как из пушки по воробьям.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2009, 15:39   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Значит улучшению не подлежит?
А если я тяпну всю строку из свойства Text и потом оттуда буду выдергивать, будет ли это быстрей или шило на мыло?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 01.12.2009, 16:10   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А если я тяпну всю строку из свойства Text и потом оттуда буду выдергивать, будет ли это быстрей или шило на мыло?
дык, проверять надо...
мне кажется, что зависит ещё от того, как обрабатываются строчки.
если линейный цикл (ну типа for i:=0 to Memo1.Lines.Count-1 do Stroka:=Source.Strings[i] ...)
то в той строке, которую Вы получили как .Text достаточно найти следующий перевод строки от текущей позиции. Думаю, что это будет достаточно быстро...
А если обращение идёт случайным образом - то затраты на "выдёргивание" перекроют всю эту "оптимизацию"...
всё это, имхо, разумеется..

ВО! Обязательно попробуйте вместо Memo воспользоваться TStringList:
Код:
var TS : TStringList;
begin
  TS :=  TStringList.Create;
  TS.Text := Source.Lines.Text;
  for i:=0 to TS.Count-1 do
    Stroka := TS.Strings[i]; 
  FreeAndNil(TS);
NB. а мне казалось, что обращение к строке в TString достаточно "шустрое"! может Вы потом ещё что-то со строкой "долгоиграющее" делаете?...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.12.2009, 16:12   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну теоретически это будет быстрей.
Ведь тогда ты будешь работать со строкой ню, без функции.
Но только если через низкоуровневые функи,move или Win APIшные, или ассемблерные команды.
Цитата:
вместо Memo воспользоваться TStringList:
Шилона мыло. дружище. оно на нем и работает
Впрочем че это я - загляни в генофонд. сам все увидишь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2009, 16:20   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Для парсера команд? Я б не стал держать это все в визуализации, а поступал как с канвой - в памяти соорудил тескт и одним большим движением закинул его в MEMO
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 01.12.2009, 17:11   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Для парсера команд? Я б не стал держать это все в визуализации, а поступал как с канвой - в памяти соорудил тескт и одним большим движением закинул его в MEMO
Зачем???
Вопрос-то звучит - "Как быстро читать из Мемо?"...
mihali4 вне форума Ответить с цитированием
Старый 01.12.2009, 18:20   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Stilet
Шило на мыло. дружище. оно на нем и работает
угу. знаю. но есть одно весьма существенное отличие. По умолчанию - Memo - визуальный компонент, и ещё занимается отрисовкой..
впрочем, согласен с Вами... думаю, что это будет влиять только на изменение данных в Memo, на чтение не должно никак влиять... тогда мой совет "мимо"... ;(
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.12.2009, 18:43   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
А если я тяпну всю строку из свойства Text и потом оттуда буду выдергивать, будет ли это быстрей или шило на мыло?
GetTickCount даст ответ на этот вопрос.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 01.12.2009, 18:46   #10
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
А если я тяпну всю строку из свойства Text и потом оттуда буду выдергивать, будет ли это быстрей или шило на мыло?
И попробуйте сотворить те же операции над TStringList, мне, например, тоже интересно, будет ли ощутимая разница.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как быстро перемешать строки? zver777 Общие вопросы Delphi 5 23.08.2009 20:50
Как скопировать текст из мемо одной формы в мемо другой CraZZy RabbIt Общие вопросы Delphi 4 27.02.2009 00:01
Нужно найти папку быстро но как? zotox Помощь студентам 3 21.09.2008 13:35
Как быстро переверннуть(отразить) изображение? Paul Hindenburg Мультимедиа в Delphi 2 10.01.2008 12:51