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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2007, 17:55   #1
Soso
Пользователь
 
Регистрация: 08.08.2007
Сообщений: 12
Печаль Проблеммы с использованием функций работы со строками Copy и Pos

Всем привет!
У следующая проблема. Я программирую на Delphi 7. Возникла необходимость работать со строкой. Ищу позицию нужного мне слова в фразе при помощи функции Pos , а потом с этой позиции копирую слово определенной длины при помощи функции Copy. Весь код работы со строкой у меня находится в отдельной процедуре.
Проблемма вот в чем. Когда я вызываю эти функции первый раз, то все работает, но когда я пытаюсь повторить с поиском нового слова, то номер позиции указывается, а вот скопировать часть текста из фразы не получается. После повторного вызова функции Copy у меня она возвращает пустую строку, строка, из которой копировалось тоже пустая и выполнение программы сразу перескакивает к концу процедуры. Как ни пробывал, не могу понять в чем проблемма.
Может уже кто сталкивался с такой проблеммой? Подскажите, как решить!
Soso вне форума Ответить с цитированием
Старый 08.08.2007, 18:00   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

мы не медиумы, год показывайте
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 08.08.2007, 18:00   #3
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

"Моя программа орёт access violation и посылает всех матом. что делать?"
Код в студию!
пыщь
JTG вне форума Ответить с цитированием
Старый 08.08.2007, 18:51   #4
pinhead
Пользователь
 
Аватар для pinhead
 
Регистрация: 08.12.2006
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
мы не медиумы, год показывайте
Для СоСо: Может не поймёте год=код!
Знание этого – Мудрость.
Умение этим пользоваться – Искусство.
pinhead вне форума Ответить с цитированием
Старый 08.08.2007, 23:17   #5
Soso
Пользователь
 
Регистрация: 08.08.2007
Сообщений: 12
По умолчанию

pinhead, спасибо за подсказку!

А код достаточно простой.

// StrRing := Оазис (уровень 5) 0:23:46 ч. Готово в 16:18

i := Pos(')', StrRing);
Note := Copy(StrRing, 1, i);

i := Pos('Готово в', StrRing);
TimeRing := Copy(StrRing, i+9, Length(StrRing)-(i+9));


Вот что еще. Я обошел проблему тем, что разбил поиск каждой из фраз в отдельные функции. Сейчас попробывал опять объединить все в одну и ... о чудо. Все заработало. Что было? Может кто знает? Компьютер не перезагружал. Перезапускал Delphi, но вроде это я пробывал и раньше - не помогало.
Soso вне форума Ответить с цитированием
Старый 09.08.2007, 08:49   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Мда... скажи лучше что тебе надо выделить из этой строки ? "Оазис (уровень 5) 0:23:46 ч. Готово в 16:18 "
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 09.08.2007, 09:43   #7
Soso
Пользователь
 
Регистрация: 08.08.2007
Сообщений: 12
По умолчанию

Да дело не в том, что я не могу выделить. Я уже много раз пользовался функциями работы со строками.

Но а так вот, что будет в переменных:
Note := 'Оазис (уровень 5)';
TimeRing := '16:18';

Проблемма в том, что второе копирование не хотело выполняться и дальнейший код, что следовал после второго вызова функции Copy, проскакивыл и не выпалнялся. В чем проблемма была - не знаю.
Soso вне форума Ответить с цитированием
Старый 09.08.2007, 10:53   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Сообщение от Soso Посмотреть сообщение
Проблемма в том, что второе копирование не хотело выполняться и дальнейший код, что следовал после второго вызова функции Copy, проскакивыл и не выпалнялся. В чем проблемма была - не знаю.
Возможно оптимизатор срабатывал, если ты нигде больше ни раньше ни позже не используеш вторую пременку, то и компилить ее незачем.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2007, 11:02   #9
Aristarh Dark
Форумчанин
 
Регистрация: 07.08.2007
Сообщений: 154
По умолчанию

Цитата:
Note := 'Оазис (уровень 5)';
TimeRing := '16:18';
Код:
uses StrUtils;
...
Note:=LeftStr(SomeVar,pos(')',SomeVar));
TimeRing := RightStr(Trim(SomeVar),5);
Aristarh Dark вне форума Ответить с цитированием
Старый 09.08.2007, 12:14   #10
Soso
Пользователь
 
Регистрация: 08.08.2007
Сообщений: 12
По умолчанию

Aristarh Dark, спасибо! Буду иметь в виду данныйе функции.
Soso вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка программ с использованием функций. Табулирование функции одного и двух переменных кася Паскаль, Turbo Pascal, PascalABC.NET 5 07.05.2008 20:11
использование процедур и функций для работы с массивами.....Паскаль.... КиношкА Помощь студентам 6 13.01.2008 14:23