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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 28.06.2015, 12:36   #1
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию Замена цен на сайте.

Добрый день, я получаю код страницы и там куча тегов
Код:
<div class="price-value">1296.41<span> р.</span></div>
это каталог цен беру отсюда
как можно заменить массово все цены только предварительно надо настоящую цену изменить таким способом: набавить 3% и умножить на 4 ? и получившуюся цену изменить на настоящую. и р. заменить на тг))))
Пример:
Соединитель с фаской Т-306 стоит 1296.41 прибавляю 3% получается 1335.30 и умножаю это на 4 и того 5341.20 . а так надо массово все цены изменить в тегах.... как это можно сделать?
99% ошибок компьютера сидит в полуметре от монитора.

Последний раз редактировалось Fahman; 28.06.2015 в 12:51.
Fahman вне форума
Старый 28.06.2015, 19:23   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
var
  myFormatSettings: TFormatSettings;
//...
procedure TForm1.Button1Click(Sender: TObject);
var
  RegEx: TRegEx;
begin
  RegEx := TRegEx.Create('(<div class="price-value">)(\d+|\d+\.\d+)(<span>)( р.)(</span></div>)');
  if RegEx.IsMatch(Memo1.Text) then
    Memo2.Text := RegEx.Replace(Memo1.Text, Evaluator);
end;

function TForm1.Evaluator(const Match: TMatch): string;
begin
  if Match.Groups.Count = 6 then
    Result := Match.Groups[1].Value + FormatFloat('0.##',
      StrToFloatDef(Match.Groups[2].Value, 0, myFormatSettings) * 4.12,
      myFormatSettings) + Match.Groups[3].Value + ' тг.' + Match.Groups[5].Value
  else
    Result := '';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  GetLocaleFormatSettings(GetThreadLocale, myFormatSettings);
  myFormatSettings.DecimalSeparator := '.';
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме
Старый 28.06.2015, 20:05   #3
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
var
  myFormatSettings: TFormatSettings;
//...
procedure TForm1.Button1Click(Sender: TObject);
var
  RegEx: TRegEx;
begin
  RegEx := TRegEx.Create('(<div class="price-value">)(\d+|\d+\.\d+)(<span>)( р.)(</span></div>)');
  if RegEx.IsMatch(Memo1.Text) then
    Memo2.Text := RegEx.Replace(Memo1.Text, Evaluator);
end;

function TForm1.Evaluator(const Match: TMatch): string;
begin
  if Match.Groups.Count = 6 then
    Result := Match.Groups[1].Value + FormatFloat('0.##',
      StrToFloatDef(Match.Groups[2].Value, 0, myFormatSettings) * 4.12,
      myFormatSettings) + Match.Groups[3].Value + ' тг.' + Match.Groups[5].Value
  else
    Result := '';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  GetLocaleFormatSettings(GetThreadLocale, myFormatSettings);
  myFormatSettings.DecimalSeparator := '.';
end;
Спасибо, не знал что можно регулярками решить но, у меня ругается на эту строку
Код:
RegExp := TRegExpr.Create('(<div class="price-value">)(\d+|\d+\.\d+)(<span>)( ð.)(</span></div>)');
типа я использую больше параметров(
[Error] Unit1.pas(42): Too many actual parameters
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума
Старый 29.06.2015, 02:33   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Я код писал в XE6. А вы какой версией пользуетесь?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме
Старый 29.06.2015, 06:29   #5
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Я код писал в XE6. А вы какой версией пользуетесь?
7 версия у меня.
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума
Старый 29.06.2015, 09:23   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну так наведи мышку на Create и посмотри сколько параметров туда передается.
I'm learning to live...
Stilet вне форума
Старый 29.06.2015, 12:23   #7
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну так наведи мышку на Create и посмотри сколько параметров туда передается.
Месяца 3-5 не программировал вообще) и что-то туплю) весь в работе по этой фурнитуре и стеклу))))

Не нашел что то в сети уроков про эти параметры блин люди с разным сталкивались но примерно даже не нашел.
99% ошибок компьютера сидит в полуметре от монитора.

Последний раз редактировалось Stilet; 30.06.2015 в 08:56.
Fahman вне форума
Старый 29.06.2015, 20:58   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Без уроков ни как, что ли? Их же не бывает на каждый чих. И нет в TRegExpr.Create ни каких параметров. У него выражение не в Create задается. Это не TRegEx
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 29.06.2015 в 21:01.
Аватар вне форума
Старый 30.06.2015, 02:08   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Аватар, в Delphi XE6 есть модуль System.RegularExpressions, в котором находится TRegEx типа "запись" с единственным конструктором:
Код:
constructor Create(const Pattern: string; Options: TRegExOptions = [roNotEmpty]);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме
Старый 30.06.2015, 06:24   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Я же не против. Только ТС вместо него использует TRegExpr, а это другое. И D7 у него как я понял, а не XE
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсер цен cfkhellboy1992 Microsoft Office Excel 0 24.02.2015 12:33
График цен s-t-r-i-k-e-r Софт 1 11.04.2014 15:19
Автоматическое обновление цен bitup PHP 14 03.04.2014 00:33
Визуальная замена чего угодна на любом сайте khabirov JavaScript, Ajax 5 29.08.2012 08:23