Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Функции для работы со строками.


Страницы:   1 2 3

Просто_новичок ©   (2007-05-31 13:02:00) 

Подскажите плиз, какие есть функии для работы со строками, но чтобы были как можно быстрее в выполнении. Функция copy как я понял очень медленная, как и Pos.
А задача вобщем в следующем, есть строка, например: s="00101010010111001010101001101001010100101010101011010010111011000010101101011 0101001010110000001111010101", только раз так в 1000 подлиннее, а то и больше...
И есть вторая строка, например: s1="00101". Так вот, мне нужно найти в первой строке комбинацию "00101" и удалить её, она будет первой, так построен алгоритм, все другие комбинации исключены, я делаю так:
s:=copy(s,length(s1)+1,length(s)); Эта функция выполняется в программе очень много раз и очень тормозит её выполнение, как можно сделать тоже самое, но с помощью других функций, болеебыстродействующих, какие есть болеебыстродействующие функции?


Плохиш   (2007-05-31 13:34:00) [21]


> G_M_S ©   (31.05.07 13:24) [17]
>
> > Проверить - это твоё домашнее задание.
>
> Издеваешься над чайником?!!

Ну судя по [16] чайника здесь нет...


Сергей М.   (2007-05-31 13:33:00) [22]

Мда ..


Просто_новичок   (2007-05-31 13:33:00) [23]

Сергей М., "Хафман, наверно, завещал тебе работать с бин.данными не иначе как в строковом виде ?)" - а как ещё можно, пример....


Просто_новичок   (2007-05-31 13:32:00) [24]

DVM, "Откуда такая строка? Почему там одни нули и единицы?" - я пишу архиватор, сжатие реализовал, разархивирование тоже. Так вот разархивирование и проходит таким способом, что беру первый байт в файле в символе ASCII и перевожу его в двоичное представление (8 бит), добавляю в строку, потом следующий байт и также добавляю в строку, затем след. и так пока не закончится весь файл, все байты в нём, в итоге в строке очень длинная последовательность нудей и единиц. А потом уже рабоаю с этой строкой.


Сергей М.   (2007-05-31 13:32:00) [25]


> таблице перекодировки алгоритма Хаффмана


Хафман, наверно, завещал тебе работать с бин.данными не иначе как в строковом виде ?)


Сергей М.   (2007-05-31 13:28:00) [26]


> Просто_новичок   (31.05.07 13:23) [16]


> Вы вообще программировать умеете


Да куда уж нам, крестьянам, в лаптях по асфальту)


Просто_новичок   (2007-05-31 13:28:00) [27]

G_M_S, "А, случайно, ты перед этим не конвертишь битовое число в строку?" - что ты подразумеваешь под битовым числом? Переменную s1? Я не понял.
"Ты из строки, которая представляет битовое представление неких данных в виде символов "0" и "1" вырезаешь первый байт?" - можно и так сказать, вырезаю первые n-символов, символов может быть не только 8, в зависимости от представления в таблице перекодировки алгоритма Хаффмана.


default   (2007-05-31 13:27:00) [28]

я к тому, что у тебя есть цель и есть её решение
так вот я к тому что ты выбрал не лучшее решение
и предлагается выбрать иное решение, чем пытаться вывести на должный уровень скорости плохое решение


G_M_S   (2007-05-31 13:27:00) [29]


> И строка s1 постоянно меняется, с каждым новым удалением.

Чего ты ваяешь-то?!! Если что-то с битами - то битовые операции САМЫЕ БЫСТРЫЕ, и потому переводить что-то встроки глупо.


> Ребят! Вы вообще программировать умеете))

Нет, нам платят на работе бабки за то, что мы целый день висим на форумах и отвечаем навопросы :)))


DVM   (2007-05-31 13:25:00) [30]


> Просто_новичок  

Откуда такая строка? Почему там одни нули и единицы?


G_M_S   (2007-05-31 13:24:00) [31]


> Проверить - это твоё домашнее задание.

Издеваешься над чайником?!!


Просто_новичок   (2007-05-31 13:23:00) [32]

default, какую яму? Какая ошибка проектирования?
G_M_S, "да и вызов у нее будет всего 1, а немного раз" - какой один раз? Это зависит от того какая длина строки s, говорю же, там может быть до 1 миллиона символов 0 й 1. А в строке s1 от 1-го симваола до 12-ти к примеру. И строка s1 постоянно меняется, с каждым новым удалением.

Сергей М.
"> после выполнения: s:=copy(s,length(s1)+1,length(s)); - у
> меня в s хранится уже "001101"
Сам-то убедился в том что утверждаешь ?"
Сергей М. - конечно убедился!! Вот напиши вот так, если в уме не можешь) и посмотри...
procedure TForm1.Button1Click(Sender: TObject);
var
s,s1:string;
begin
s:='0010100110';
s1:='00101';
s:=copy(s,length(s1)+1,length(s));
Edit1.Text:=s;
end;
Ребят! Вы вообще программировать умеете))


G_M_S   (2007-05-31 13:21:00) [33]


>  length(s1) во время работы меняется, всего может быть до
> 255 различных комбинаций.

Ты из строки, которая представляет битовое представление неких данных в виде символов "0" и "1" вырезаешь первый байт? А, случайно, ты перед этим не конвертишь битовое число в строку? Тогда до конвертации можно было бы битовую операцию сделать, это во МНОГО РАЗ быстрее.


> А как пользоваться StringReplace?

Пишешь в редакторе: "StringReplace", давишь Ctrl+F1

PS: пиши ТЗ внятнее. Может, подскажут более простой способ решить проблему.


Плохиш   (2007-05-31 13:20:00) [34]


> Просто_новичок   (31.05.07 13:12) [7]
> Плохиш, ты думаешь эта функция работать бустрее будет, чем
> copy?

Проверить - это твоё домашнее задание.


G_M_S   (2007-05-31 13:16:00) [35]

Вдогонку:


> да и вызов у нее будет всего 1, а немного раз.


Лажанулся.


Сергей М.   (2007-05-31 13:16:00) [36]


> после выполнения: s:=copy(s,length(s1)+1,length(s)); - у
> меня в s хранится уже "001101"


Сам-то убедился в том что утверждаешь ?


Amoeba   (2007-05-31 13:16:00) [37]


> Просто_новичок   (31.05.07 13:02)
>
> Подскажите плиз, какие есть функии для работы со строками,
>  но чтобы были как можно быстрее в выполнении.

Вагон и маленькая тележка всевозможных хорошо оптимизированных ф-ий для работы со строками содержится в этой библиотеке:
http://www.torry.net/vcl/vcltools/text/adqstrings.zip


default   (2007-05-31 13:16:00) [38]

Просто_новичок   (31.05.07 13:15) [9]
ошибка проектирования
то есть ты загнал себя в яму, а теперь ищёшь способ оттуда вылезти вместо того чтобы обойти яму


Просто_новичок   (2007-05-31 13:15:00) [39]

default, в смысле ошибка дизайна?


Просто_новичок   (2007-05-31 13:14:00) [40]

G_M_S, нет, length(s1) во время работы меняется, всего может быть до 255 различных комбинаций.
А как пользоваться StringReplace?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо