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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2009, 14:31   #11
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Еще одна проблемка . Введите 1 апостроф и функция даст верный результат...
Что значит один апостроф. Приведите пример если не трудно
SERG1980 вне форума Ответить с цитированием
Старый 05.08.2009, 14:57   #12
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Stroka('''') - даст Труе (в принципе логично), а оно должно быть в этом случае не TRUE
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 05.08.2009, 15:06   #13
NieL
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 116
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Stroka('''') - даст Труе (в принципе логично), а оно должно быть в этом случае не TRUE
добавь проверку:
Код:
(Length(S) > 1)
NieL вне форума Ответить с цитированием
Старый 05.08.2009, 15:18   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
добавь проверку:
Нельзя учитывать только крайние символы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.08.2009, 15:44   #15
NieL
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 116
По умолчанию

А что, если вот так:
Код:
  
function ContainsApostrophes(const S: string): Boolean;
  var
    Count, L: Integer;
    P: PChar;
  begin
    P := PChar(S);
    L := StrLen(P);
    Result := (L > 1) and (P[0] = P[L - 1]) and (P[0] = '''');
    if Result then
    begin
      Count := 0;
      while P^ <> #0 do
      begin
        if P^ = '''' then
          Inc(Count);
        Inc(P);
      end;
      if not Count mod 2 = 0 then
        raise Exception.Create('Syntax error');
    end;
  end;

Последний раз редактировалось NieL; 05.08.2009 в 15:47.
NieL вне форума Ответить с цитированием
Старый 05.08.2009, 16:02   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А что, если вот так:
Как по мне слишком громоздко...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.08.2009, 23:39   #17
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Вот я читаю, читаю, а что нужно сделать так и не понял. Тов. Уткин, приведите пример что-ли Или же я понял, а остальные не поняли
Насколько я понял границами "параметра" являются первый и последний апостроф. Все что внутри, включая внутренние апострофы - это параметр, я правильно понял?

2 Стилет, Почему нельзя проверять только крайние?

Цитата:
Я предлагаю решение: проверить крайние элементы, являются ли они апострофами. Имеется ли более красивое и главное более быстрое решение? Скорость в данном случае приоритетней.
Вполне разумное и имхо лучшее решение, чем оно вам не нравится? Куда лучше выполнить доступ всего к двум элементам массива, чем рыться в нем поиском неизвестно зачем.

Вот вы говорите об одном апострофе, а в примерах используете то два а то и три, сбивает с толку.
Если это нужно чтобы отличить строку от других нестроковых параметров, то условие тут такое - если длина >= 2 то возможно это строка, проверяем дальше - если первый и последний элемент апострофы, то это точно строка, причем если длина = 2, то это пустая строка.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 05.08.2009 в 23:45.
mutabor вне форума Ответить с цитированием
Старый 06.08.2009, 09:11   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если первый и последний элемент апострофы, то это точно строка,
А это как интерпретировать?
S='5'+56+'48';
Разве это можно назвать правильным строковым выражением, и ведь крайними символами стоят апострофы.

Или вот пример еще прикольный:
s='это строка с переводом каретки'#13
Как с этим работать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.08.2009, 13:32   #19
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
А это как интерпретировать?
S='5'+56+'48';
Разве это можно назвать правильным строковым выражением, и ведь крайними символами стоят апострофы.
Это вопрос не ко мне, а к автору темы. Я понятия не имею что у него можно а что нельзя, а только предполагаю. Если рассматривать значения S как простые параметры то это вполне нормальная строка. А если разрешается производить арифметические и другие операции, тогда нужно разделять операнды, а потом уже определять что с чем пытаются сложить или умножить, причем определять по тому же алгоритму что я выше привел.

В этих прикольных примерах использован синтаксис паскаля, а не "синтаксис Уткина" =), может у него все по другому.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 06.08.2009, 14:58   #20
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

В данном случае в S должен быть помещен результат 109 (не знаю точно, вроде в пхп так).
Для строки S='5' & 56 & '48' результат 55648
Числа в апострофах считаются числами . Нечисло в арифметических операциях считается нулем.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Значение в DBEdit artemavd БД в Delphi 1 15.05.2009 18:17
Вычислить значение Наталья111 Общие вопросы Delphi 17 25.12.2008 08:43
Значение DBLookupComboBox MARCH Компоненты Delphi 58 16.11.2008 20:45
значение из подстроки GazimagomedovM Помощь студентам 2 10.07.2008 08:50
среднее значение tonic Microsoft Office Excel 1 04.01.2008 00:20