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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2012, 03:08   #1
Painkiller_13
Пользователь
 
Регистрация: 07.07.2011
Сообщений: 58
По умолчанию StringReplace

есть функция в которой нужно заменить знак ' на пробел
Код:
mar_name:=StringReplace(mar_name,''','',[rfReplaceAll]);
Но delphi воспринимает этот знак как не как символ а как откритие новой дужки как это исправить?
Painkiller_13 вне форума Ответить с цитированием
Старый 24.12.2012, 05:14   #2
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Вот так:
Код:
mar_name:=StringReplace(mar_name,'''',' ',[rfReplaceAll]);
Delphi_ProGer вне форума Ответить с цитированием
Старый 24.12.2012, 10:37   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Глупо так.
Просто пропишите #39 или Chr(39) и меньше путаницы будет.
Человек_Борща вне форума Ответить с цитированием
Старый 24.12.2012, 11:37   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Глупо так.
ничего глупого в этом нет.
Это стандартный штатный способ записать апостроф в строковой константе.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.12.2012, 12:10   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
ничего глупого в этом нет.
Это стандартный штатный способ записать апостроф в строковой константе.
ошибка компилятора скорее всего.
Как по мне, то самый не удобный способ записи. Ошибся и все, ищи ветра в поле, а если и текст большой то вообще караул.

#39 выглядит куда приятнее =)
Человек_Борща вне форума Ответить с цитированием
Старый 24.12.2012, 12:21   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А можно ли эту функцию применить в цикле и в цикле произвести замену символов?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 24.12.2012, 12:25   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
А можно ли эту функцию применить в цикле и в цикле произвести замену символов?
Можно все. Было бы желание попробовать.

Я бы все строки скопом передал бы в функцию, зачем циклы пускать.
Человек_Борща вне форума Ответить с цитированием
Старый 24.12.2012, 13:06   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Например так? Допустим я хочу все ненужные мне символы убрать, т.е. заменить их на пустоту в строке-примере:
Код:
var
 k: TStringList;
 i: integer;
 stroka: string;
begin
 stroka:='Какая-то длинная предлинная строка';
 k:=TStringList.Create;
 for i:=0 to k.Count - 1 do
 begin
  StringReplace(stroka,k.Strings[i],'',[rfReplaceAll];
  Application.ProcessMessages;
 end;
 k.Free;
end;
Типа такого? Писал прямо тут, может ошибся где-то. Так, интересно просто.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 24.12.2012, 13:12   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Вы вообще справку по функциям не открываете? http://www.delphibasics.ru/StringReplace.php
Надо вам по-чаще в "Основы delphi" смотреть(ссылка в шапке страницы).

В вашем коде как минимум 2 ошибки:
1. Не правильно используете функцию.
-A. StringReplace возвращает строку с внесенными туда изменениями, у вас возврат в никуда.
-B. <Результат будет здесь>:=StringReplace(<Где заменяем>,<Что ищем>,<Чем заменяем>,<Настройки функции>);
2. Зачем вы цикл по строкам пустили? Передавайте TStringList.Text и все.

Последний раз редактировалось Человек_Борща; 24.12.2012 в 13:29.
Человек_Борща вне форума Ответить с цитированием
Старый 24.12.2012, 13:25   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

+3 ошибка.
нет смысла обращаться к k.Count и k.Strings[i] - Вы же объект только создали, он пустой, ни одной строчки в нём нет.


Вы какую задачу (изначально) хотите своим циклом решить то?!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delph/CodeGear/StringReplace замена &_#039; на символ ' AlienNation Общие вопросы Delphi 3 11.09.2011 02:12
StringReplace s1s1s1 Общие вопросы Delphi 12 28.03.2011 16:26
Почему ошибка? [DCC Error] main.pas(99): E2250 There is no overloaded version of 'StringReplace' ... TwiX Общие вопросы Delphi 5 19.11.2009 03:25
Не заменяет StringReplace Alex Cones Общие вопросы Delphi 2 03.09.2009 21:00