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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2014, 18:47   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Делфи ХЕ5 удаляет не те символы в строке.

Здравствуйте! У меня проблема с Делфи ХЕ5, удаляет не то, что нужно, оставляя пустую строку, а делфи 7 удаляет не нужные символы отлично, не знаю в чем может быть проблема, в общем в строке нужно убрать весь мусор, кроме букв и цифр, делаю так:
Код:
 for ii :=length(s) downto 1 do
          if  not (s[ii] in ['A'..'Z','a'..'z','А'..'Я','а'..'я','0'..'9']) then  delete(s,ii,1);
на делфи 7 работает отлично, на Делфи хе5-нет(( в чем может быть проблема?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 12.04.2014, 18:59   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
оставляя пустую строку
Значит в этой строке нет указанных символов
Почему? Возможно потому что эти символы в исходнике в юникоде, а сама строка ANSI. Это к примеру.

Кстати: Используй регулярные выражения, это сейчас модно, да и надежнее будет их для такой задачи использовать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.04.2014, 19:12   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

думаю это не представляется возможным, мне нужно убрать все символы, чтобы tstringlist сохранил файл, ну есть идея коненчо проверить всю строку без удаления чего-то, и вывести ошибку с выходом из процедур, но лучше удалять конечно, посмотрите проект, на 7 работает отлично, но внешний вид не айс, а на ХЕ5 ступор, кнопка "Создать смету"
Вложения
Тип файла: rar создатель смет.rar (261.5 Кб, 7 просмотров)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 12.04.2014, 20:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Можешь рассказать зачем удалять все символы алфавита?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.04.2014, 20:12   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Там не удаляются все символы алфавита, а наоборот, удаляется все кроме цифр букв английского и русского алфавита
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 12.04.2014, 20:14   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а наоборот, удаляется все кроме цифр букв английского и русского алфавита
Ой, ну извини, перепутал когда писал.
Все равно вопрос: Зачем.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.04.2014, 20:20   #7
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

я же ведь объяснял зачем, если есть символы типа ., "";''" файл не сохраняется (через Tstringlist)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 12.04.2014, 21:01   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
Здравствуйте! У меня проблема с Делфи ХЕ5, удаляет не то, что нужно, оставляя пустую строку, а делфи 7 удаляет не нужные символы отлично, не знаю в чем может быть проблема, в общем в строке нужно убрать весь мусор, кроме букв и цифр, делаю так:
Код:
 for ii :=length(s) downto 1 do
          if  not (s[ii] in ['A'..'Z','a'..'z','А'..'Я','а'..'я','0'..'9']) then  delete(s,ii,1);
на делфи 7 работает отлично, на Делфи хе5-нет(( в чем может быть проблема?
Проблема в использовании set of char в дельфи2009+. Ну никак не влезают неанглийские символы во множество.

Последний раз редактировалось northener; 12.04.2014 в 21:51.
northener вне форума Ответить с цитированием
Старый 12.04.2014, 21:40   #9
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

и что вы предлагаете?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 12.04.2014, 21:55   #10
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
и что вы предлагаете?
Не знаю, может кто-нибудь уже нашел красивое решение такой проблемы. Я сам с юникодом не работаю. Попробуй так
Код:
if  not (AnsiChar(Lo(Ord(s[ii]))) in ['A'..'Z','a'..'z','А'..'Я','а'..'я','0'..'9']) then  delete(s,ii,1);
northener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сдвинуть символы в строке danil123 Общие вопросы Delphi 4 25.01.2013 15:49
Символы в строке. Predator199 PHP 1 21.10.2012 14:42
ограничить символы в строке richedit s1s1s1 Общие вопросы Delphi 0 07.06.2011 21:38
Какая функция удаляет последние символы kity Microsoft Office Access 5 19.11.2010 02:59