|
Делфи. Ищу функцию типа Pos(s1,s2), но со стартом поиска не с 1 символа |
|
|
|
 |
Ответов
|
Jan 23 2012, 16:58
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(ARV @ Jan 23 2012, 21:46)  а что за версия Delphi у вас такая?! подключать надо StrUtils. Делфи 5. StrUtils не найден. Для начала попробую поискать. Цитата(AHTOXA @ Jan 23 2012, 21:52)  Нет, это просто преобразование типов, никаких копий. Не может быть. Явно создаётся копия с #0 в конце строки. Даже указатель индивидуальный, явно будет отличаться от оригинальной строки. Цитата(AHTOXA @ Jan 23 2012, 21:52)  Элементарно: Ок. А удалять Token я сам потом должен? Потому как, когда один раз, то не ... жалко, а когда миллион раз, то надо об этом 7 раз подумать. ЗЫ. Самое главно, что хотелось бы иметь допустимость #0 байт внутри строк и при этом нормальной работы. Так что Сишные строки - это самый крайний ущербный вариант. PosEx запустить было бы идеально.
Сообщение отредактировал GetSmart - Jan 23 2012, 17:01
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jan 23 2012, 17:10
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(GetSmart @ Jan 23 2012, 22:58)  Не может быть. Явно создаётся копия с #0 в конце строки. Даже указатель индивидуальный, явно будет отличаться от оригинальной строки. Да нет же  Это просто указатель на char. Мы его наводим на первый символ строки. И начинаем по ней елозить. Всё. Цитата Ок. А удалять Token я сам потом должен? Нет. Это просто указатель в середину строки. (Начинаю чувствовать себя попугаем  ) Цитата Самое главно, что хотелось бы иметь допустимость #0 байт внутри строк и при этом нормальной работы. Так что Сишные строки - это самый крайний ущербный вариант. PosEx запустить было бы идеально. Насчёт нуля - не уверен, надо проверять. PosEx могу запостить, но только завтра
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jan 23 2012, 17:23
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(AHTOXA @ Jan 23 2012, 22:10)  Да нет же  Это просто указатель на char. Мы его наводим на первый символ строки. И начинаем по ней елозить. Всё. А откуда берётся #0 в конце этой же строки, если его там не было? Цитата(AHTOXA @ Jan 23 2012, 22:15)  Вот, нашёл, strutils специально для D5: тыц!Скопировал к себе в проект только одну функцию. Скомпилилась. Последний вопрос - она точно будет нормально работать со строками с #0-символами, разбросанными по строке? Дальше первого #0 будет продолжаться поиск? Я чего-то сильно сильно сомневаюсь
Сообщение отредактировал GetSmart - Jan 23 2012, 17:27
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jan 23 2012, 17:32
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(GetSmart @ Jan 23 2012, 23:23)  А откуда берётся #0 в конце этой же строки, если его там не было? Вот тут не знаю. Возможно он в string предусмотрен изначально. Цитата(GetSmart @ Jan 23 2012, 23:23)  Последний вопрос - она точно будет нормально работать со строками с #0-символами, разбросанными по строке? Дальше первого #0 будет продолжаться поиск? Если через StrPos - то вряд ли. Иначе как он определит конец строки? Имхо, проще написать свою функцию
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jan 25 2012, 07:45
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(AHTOXA @ Jan 23 2012, 22:32)  Вот тут не знаю. Возможно он в string предусмотрен изначально. Действительно, за последним символом Делфа намеренно ставит #0. Обрезая строку на 1 символ несколько раз, на месте обрезанного появляется ноль. А уже за нулём может быть мусор. Недокументированная фича? PosEx из десятки отлично работает. Тем более на асме. Самый fast.
Сообщение отредактировал GetSmart - Jan 25 2012, 08:42
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jan 26 2012, 05:32
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(GetSmart @ Jan 25 2012, 13:45)  Недокументированная фича? Я где-то про это читал, так что немножко документированная  Но где читал - не помню. Цитата(GetSmart @ Jan 25 2012, 15:11)  Не. В делфе не так. ИМХО этот ноль - просто костыль для си-совместимости строк, которые могут выводиться куда-то функциями (винды) с сишными аргументами. Именно. Дельфя обеспечивает ноль на позиции (длина строки + 1). При этом нули в самой строке вполне допустимы (но они обманут функции, принимающие в качестве аргумента PChar).
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
GetSmart Делфи. Ищу функцию типа Pos(s1,s2), но со стартом поиска не с 1 символа Jan 23 2012, 15:50 _Артём_ Цитата(GetSmart @ Jan 23 2012, 17:50) Сущ... Jan 23 2012, 16:11 GetSmart Ну ведь это на 99% такой же код, что и Pos(), толь... Jan 23 2012, 16:16 AHTOXA StrPos:
Что-то типа такого:
Кодfunction CountToken... Jan 23 2012, 16:29 GetSmart Цитата(AHTOXA @ Jan 23 2012, 21:29) StrPo... Jan 23 2012, 16:40  AHTOXA Цитата(GetSmart @ Jan 23 2012, 22:40) А т... Jan 23 2012, 16:52 ARV Цитата(GetSmart @ Jan 23 2012, 19:50) Сущ... Jan 23 2012, 16:41 GetSmart Цитата(ARV @ Jan 23 2012, 21:41) не катит... Jan 23 2012, 16:44 GetSmart Цитата(ARV @ Jan 23 2012, 21:41) не катит... Jan 23 2012, 17:53  AHTOXA Цитата(GetSmart @ Jan 23 2012, 23:53) А н... Jan 24 2012, 03:33  _Pasha Цитата(GetSmart @ Jan 23 2012, 20:58) Дел... Jan 23 2012, 17:02 ARV вы бы еще 3-ю версию юзали! самая ходовая 7-я ... Jan 23 2012, 16:59 GetSmart Цитата(ARV @ Jan 23 2012, 21:59) вы бы ещ... Jan 23 2012, 17:02 ARV не советую. в 7-й версии заметно откорректирована ... Jan 23 2012, 17:13 AHTOXA Вот, нашёл, strutils специально для D5: тыц! Jan 23 2012, 17:15  AHTOXA Цитата(AHTOXA @ Jan 23 2012, 23:15) Вот, ... Jan 23 2012, 17:16 GetSmart Цитата(ARV @ Jan 23 2012, 22:13) не совет... Jan 23 2012, 17:16  ARV Цитата(GetSmart @ Jan 23 2012, 21:16) Фун... Jan 23 2012, 17:25   GetSmart Цитата(ARV @ Jan 23 2012, 22:25) я вам и ... Jan 23 2012, 17:27 _Ivana Цитата(GetSmart @ Jan 23 2012, 19:27) Но ... Jan 23 2012, 17:30 sigmaN ЦитатаПринимаются - Да, Нет, Не знаю я выбираю вар... Jan 24 2012, 02:19 GetSmart AHTOXA, спасибо большое.
Так и вставлю эту функцию... Jan 24 2012, 05:27 AHTOXA Цитата(GetSmart @ Jan 24 2012, 11:27) Но ... Jan 24 2012, 05:33 ARV 1. функции, работающие со строками ПАСКАЛЕВСКОГО т... Jan 24 2012, 06:20 _Pasha Pchar или string?
Напомню, если включено {$H+... Jan 25 2012, 08:19 GetSmart Цитата(_Pasha @ Jan 25 2012, 13:19) Pchar... Jan 25 2012, 08:31  _Pasha Цитата(GetSmart @ Jan 25 2012, 11:31) H+ ... Jan 25 2012, 08:56   GetSmart Цитата(_Pasha @ Jan 25 2012, 13:56) Значи... Jan 25 2012, 09:11 sigmaN А там где-то в настройках компилятора есть что-то ... Jan 25 2012, 14:02
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|