Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Ярославвв
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 38
#1

Проверка символа на вхождение - Delphi

06.10.2016, 21:07. Просмотров 702. Ответов 11

решил я такой проверить
Pascal
1
2
if not(stroka[i] in ['А'..'Я']) then
    flag:=False;
при этом stroka[i]='М'
по сути влазить и менять флаг не должно, но оно залазило в условие .
я решил посмотреть в дебагере ,когда stroka[i]='М'----ord(stroka[i]='М').
выдало код 1052,в аски даже такого нет. Где я ошибся
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2016, 21:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проверка символа на вхождение (Delphi):

Дан символ C и строка S. Удвоить каждое вхождение символа C в строку S - Delphi
буду весьма благодарен))

Проверка первого символа в Edit - Delphi
Привет всем! Вообщем такой вопрос, как сделать чтобы в Edit первый символ был только цифрой, а дальше и буквы и цифры? Вот такой код...

Мгновенная проверка на корректность вводимого символа - Delphi
Хочу прикрутить защиту от введения неправильных данных, причём так, чтобы ввести некорректные данные было в принципе невозможно (проверять...

Как читать строку в массив до определенного символа и после продолжить чтение опять до символа - Delphi
Как читать строку в массив до определенного символа и после продолжить чтение опять до символа. к примеру считывать фразы до символа '|'...

Как удалить от символа и до символа - Delphi
В общем из названия темы все понятно. Как удалить при помощи функции Delete от символа и до символа. Например начнем удаление от !...

Дана строка. Вывести первые три символа и последние три символа - Delphi
Доброе утро, господа. Необходима Ваша помощь по решению этого вопроса, вроде как и не сложно, но в Delphi только-только начал разбираться,...

11
Arcor
4815 / 1816 / 162
Регистрация: 20.11.2009
Сообщений: 5,769
Записей в блоге: 1
06.10.2016, 21:15 #2
чтобы так писать надо чтобы stroka была типа AnsiString

Добавлено через 3 минуты
вот простой пример для теста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
var SA: AnsiString;
    S: String;
begin
  SA := 'ПРИВЕТ МИР';
  if CharInSet(SA[1], ['А'..'Я']) then
    ShowMessage('1) OK')
  else
    ShowMessage('1) NOT OK');
 
  S := 'ПРИВЕТ МИР';
  if CharInSet(S[1], ['А'..'Я']) then
    ShowMessage('2) OK')
  else
    ShowMessage('2) NOT OK');
end;
CharInSet тоже самое по сути что и у вас с in, только мой компилятор XE говорит что лучше использовать так, как я написал
2
Ярославвв
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 38
06.10.2016, 21:18  [ТС] #3
вот уж не знал, спасибо.
0
krapotkin
3250 / 2890 / 785
Регистрация: 14.04.2014
Сообщений: 14,025
Записей в блоге: 12
07.10.2016, 00:15 #4
вообще для версий делфи старше 2007 проще так

Delphi
1
2
3
const Ltrs='АБВГДЕЁЖ...';
....
if (Ltrs.Contains(ch)) then
0
MyEternity
96 / 96 / 20
Регистрация: 25.04.2016
Сообщений: 525
07.10.2016, 00:21 #5
Цитата Сообщение от krapotkin Посмотреть сообщение
вообще для версий делфи старше 2007 проще так
Что я делаю не так?
0
Миниатюры
Проверка символа на вхождение  
Arcor
07.10.2016, 00:46
  #6

Не по теме:

потому что не с версии 2007, а выше, думаю с XE2, по крайней мере в документации начало лежит для этого метода с XE2

0
northener
07.10.2016, 01:08
  #7

Не по теме:

Цитата Сообщение от krapotkin Посмотреть сообщение
вообще для версий делфи старше 2007 проще так
Ну это ты хватил! Разрабы после перехода на Юникод ещё долго не могли справиться с этой проблемой. Чего только стоит их постоянные дурные советы использовать CharInSet вместо in. Хотя из самого кода CharInSet видно было что это одно и тоже. Вспомню еще и попытки замены in и CharInSet на inOpArray Function, которая тоже выглядела костылем.

0
krapotkin
3250 / 2890 / 785
Регистрация: 14.04.2014
Сообщений: 14,025
Записей в блоге: 12
07.10.2016, 10:02 #8
никто не мог смириться с потерей Set Of Char
но это уже не изменить ))

Добавлено через 5 минут
по версиям
тут все либо на д7 либо на 10-10.1. Откуда взялась XE, неясно. Да и неинтересно. Раз автор не сообщает, придумываю сам.
Телепатировать не хочу. Помнить год подключения той или иной фичи - тоже.

для версий, где еще нет system.SysUtils.TStringHelper
используем олдскульное
Delphi
1
if pos(ch, ltrs)<>0
0
Arcor
07.10.2016, 10:08
  #9

Не по теме:

Если вы на этих версиях работаете, это не значит что все...не надо за всех говорить

0
MyEternity
96 / 96 / 20
Регистрация: 25.04.2016
Сообщений: 525
07.10.2016, 11:00 #10
Цитата Сообщение от Arcor Посмотреть сообщение
Если вы на этих версиях работаете, это не значит что все...не надо за всех говорить
Поддерживаю.
Цитата Сообщение от krapotkin Посмотреть сообщение
тут все либо на д7 либо на 10-10.1. Откуда взялась XE, неясно
Вот нравится мне ХЕ (Юникод с 2009 уже есть, следовательно в ХЕ тоже есть ). Семерка уже старовата, а в ХЕ еще не раздули RTTI до такой степени, что EXE с пустой формой весит под 2 метра.
0
krapotkin
3250 / 2890 / 785
Регистрация: 14.04.2014
Сообщений: 14,025
Записей в блоге: 12
07.10.2016, 11:13 #11
Цитата Сообщение от Arcor Посмотреть сообщение
не надо за всех говорить
Я и не говорю за всех. Я говорю, что ТС должен заботиться сам указывать версию, а если не указал, то можно брать из головы.

MyEternity, нынче даже в музыкальной открытке можно найти пару метров памяти. что это оптимизирует?
0
Arcor
4815 / 1816 / 162
Регистрация: 20.11.2009
Сообщений: 5,769
Записей в блоге: 1
07.10.2016, 18:52 #12
Цитата Сообщение от krapotkin Посмотреть сообщение
нынче даже в музыкальной открытке можно найти пару метров памяти. что это оптимизирует?
никто не запрещал еще оптимально программировать - так как это не каждому дано, вот и прогать сали ващще не оптимально, а если речь идет об открытке.. то тут явно си или ася, на них прогают в основном МК, а вот прогресс двинулся. и придумали такой бред как Arduino с высокоуровневой системой программирования МК... это бред для программеров-электриков - домохозяек только лишь и придумали... что касается оптимизации это было.

Не по теме:


А на счет брать из головы... вы тут сидите уже долго, я сижу долго в курсе вродже как всей текучки, а вот приходит студент, задачу надо решить.. а тут ему бац и так "надо позаботиться о версии самому ТС"..... Та ну че тут распинаться.. Ясно все и так.. как не Contsins Тогда полюбому JSON!!

0
07.10.2016, 18:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2016, 18:52
Привет! Вот еще темы с ответами:

Дана строка символов. Заменить все вхождения символа '{' на 'begin' , а каждое вхождение символа '}' - на 'end' - Turbo Pascal
дана строка символов. Заменить все вхождения символа '{' на 'begin' , а каждое вхождение символа '}' - на 'end' блок-схему плиз!

Дана строка символов. Заменить все вхождения символа ‘{’ на ‘begin’, а каждое вхождение символа ‘}’ – на ‘end’ - Turbo Pascal
3. Дана строка символов. Заменить все вхождения символа ‘{’ на ‘begin’, а каждое вхождение символа ‘}’ – на ‘end’. Добавлено через 1...

Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке - C++
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить последнее вхождение символа “р” в строке и вывести строку, начиная с...

Повторное вхождение символа - Java
Доброго времени суток. Можете помочь с задачей? Нужно заменить повторное (подряд) вхождение символа в слове его количеством. Например, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru