Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.10.2011, 20:31
Аватар для Acid_Burn123
Acid_Burn123 Acid_Burn123 вне форума
Прохожий
 
Регистрация: 17.10.2011
Сообщения: 28
Репутация: выкл
Восклицание Связать memo с текстом между тегами (html)

Хочу написать программу каторая бы облегчила жизнь HTML'щиков(и самому просто для себя).Суть:
Допустим есть Html-страница(index.html) с таким содержанием:

Код:
<html>
<title>Главная тестовая</title>
<body>
ТЕСТОВАЯ СТРАНИЦА
</body>
</html>

и есть оболочка программы(скрин во вложении screen.jpg)
для нее действует код(пока что знаю,то написал):

Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
opendialog1.execute;
Memo1.lines.loadfromfile(opendialog1.FileName);
end;

end.

цель:Нужно чтобы введя в memo2 любой текст(и нажав Button1 "изменить содержание страницы" этот текст направлялся в область между тегами <body> Текст из Memo2 </body>

были мысли насчет assignfile...

вопрос :
как мне реализовать это?обясните пожалуста,исходники бы очень помогли=)непинайте в гугл))
решив даннуюзадачу я аналогично построю все и для <title> текст </title>
Заранее Спасибо откликувшимся на мой долговременно нерешаемый вопрос!
Изображения
Тип файла: jpg screen.jpg (33.9 Кбайт, 24 просмотров)

Последний раз редактировалось Acid_Burn123, 17.10.2011 в 20:34.
Ответить с цитированием
  #2  
Старый 18.10.2011, 08:21
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

если текст из Memo заместит текст body "ТЕСТОВАЯ СТРАНИЦА" из открытого файла, как собственно и другие секции, то вообще зачем файл открывать?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 18.10.2011, 08:55
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

я делал при помощи Format

PHP код:
css.Lines.LoadFromFile('css.txt');
css.text := Format(css.Text, [Font.NameFont.Size]);
css.Lines.SaveToFile('style.css');
// css - tmemo 

PHP код:
// css.txt
body {
  
background-colorwhite;
    
font-family: %s Verdana;
    
font-size: %dpt;} 

есть ещё разные кайфовые шаблонизаторы, но это не delphi
http://slim-lang.com/

Последний раз редактировалось Pyro, 18.10.2011 в 08:58.
Ответить с цитированием
  #4  
Старый 18.10.2011, 09:24
Аватар для Acid_Burn123
Acid_Burn123 Acid_Burn123 вне форума
Прохожий
 
Регистрация: 17.10.2011
Сообщения: 28
Репутация: выкл
По умолчанию

Цитата:
Сообщение от NumLock
если текст из Memo заместит текст body "ТЕСТОВАЯ СТРАНИЦА" из открытого файла, как собственно и другие секции, то вообще зачем файл открывать?
нужно чтобы не замещал))нужно чтоб в области между тегами <body>область</body>
в области все заменялось)))
не могу реализовать
Ответить с цитированием
  #5  
Старый 18.10.2011, 09:42
Аватар для Acid_Burn123
Acid_Burn123 Acid_Burn123 вне форума
Прохожий
 
Регистрация: 17.10.2011
Сообщения: 28
Репутация: выкл
По умолчанию

Pyro,если я правильно понел твой код,ты загружаеш в мемо css,созданный тобой файл css.txt затем его же сохраняеш в эту же папку токо с с расширением style.css?(просто содержимое css.txt переноситься в создаваемый программой файл style.css)если я праильно понел тебя то ты меня не понел=)
нужно чтобы заменялся текст между тегами <body>заменяемый текст</body>

Последний раз редактировалось Acid_Burn123, 18.10.2011 в 09:45.
Ответить с цитированием
  #6  
Старый 18.10.2011, 10:07
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

%s заменяется на значение строковых переменных
txt это шаблон
PHP код:
var mybodystring;
mybody := '<h1>123</h1>';
caption := Format('<body>%s</body>', [mybody]); 
Ответить с цитированием
  #7  
Старый 18.10.2011, 15:19
Аватар для Acid_Burn123
Acid_Burn123 Acid_Burn123 вне форума
Прохожий
 
Регистрация: 17.10.2011
Сообщения: 28
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Pyro
%s заменяется на значение строковых переменных
txt это шаблон
PHP код:
var mybodystring;
mybody := '<h1>123</h1>';
caption := Format('<body>%s</body>', [mybody]); 

Pyro, не мог бы обяснить код?при вставке в button1 он меняет caption главной формы на <body><h1>123</h1></body>
обьясните по порядку пожалуйста
Ответить с цитированием
  #8  
Старый 18.10.2011, 16:02
Аватар для Acid_Burn123
Acid_Burn123 Acid_Burn123 вне форума
Прохожий
 
Регистрация: 17.10.2011
Сообщения: 28
Репутация: выкл
По умолчанию

Пробовал использовать :
Код:
Memo1.Text:=StringReplace(Memo1.Text,'ТЕСТОВАЯ СТРАНИЦА',Memo2.Text,[rfReplaceAll,rfIgnoreCase]);
но этот код реализует следующее:
он после загрузки страницы в Memo1,берет из Memo1 текст "ТЕСТОВАЯ СТРАНИЦА" и изменяет его на текст введеный в memo2

но у меня в html документе могут встретиться похожие словосочетания.Например если я захочу заменить надпись на странице "ТЕСТОВАЯ СТРАНИЦА НЕ НАЙДЕНА!" и в memo2 введу "Страница Востановленна" то код найдет и заменит ТЕСТОВАЯ СТРАНИЦА!!!на выходе получаю вот что:
СТРАНИЦА ВОССТАНОВЛЕННА НЕ НАЙДЕНА!


как в таком случае быть?подскажите пожалуста
Ответить с цитированием
  #9  
Старый 18.10.2011, 16:09
Аватар для Acid_Burn123
Acid_Burn123 Acid_Burn123 вне форума
Прохожий
 
Регистрация: 17.10.2011
Сообщения: 28
Репутация: выкл
По умолчанию

Пробовал использовать :
Код:
Memo1.Text:=StringReplace(Memo1.Text,'ТЕСТОВАЯ СТРАНИЦА',Memo2.Text,[rfReplaceAll,rfIgnoreCase]);
но этот код реализует следующее:
он после загрузки страницы в Memo1,берет из Memo1 текст "ТЕСТОВАЯ СТРАНИЦА" и изменяет его на текст введеный в memo2

но у меня в html документе могут встретиться похожие словосочетания.Например если я захочу заменить надпись на странице "ТЕСТОВАЯ СТРАНИЦА НЕ НАЙДЕНА!" и в memo2 введу "Страница Востановленна" то код найдет и заменит ТЕСТОВАЯ СТРАНИЦА!!!на выходе получаю вот что:
СТРАНИЦА ВОССТАНОВЛЕННА НЕ НАЙДЕНА!


как в таком случае быть?подскажите пожалуста
Ответить с цитированием
  #10  
Старый 19.10.2011, 05:28
Аватар для Acid_Burn123
Acid_Burn123 Acid_Burn123 вне форума
Прохожий
 
Регистрация: 17.10.2011
Сообщения: 28
Репутация: выкл
По умолчанию

Может быть хоть функция какая нибудь ??...тескт введеный в мемо должен занеститсь в область <body>текст набраный в мемо</body>
Ответить с цитированием
  #11  
Старый 19.10.2011, 05:43
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

можно скачать книгу по регулярным выражениям и освоить любой текстовый редактор, который умеет с ними обращаться
http://rubular.com/r/aaGsjVMsBm
Ответить с цитированием
  #12  
Старый 19.10.2011, 06:14
Аватар для Acid_Burn123
Acid_Burn123 Acid_Burn123 вне форума
Прохожий
 
Регистрация: 17.10.2011
Сообщения: 28
Репутация: выкл
По умолчанию

там что то не все понятно=(
обьясни что это?о чем?
Ответить с цитированием
  #13  
Старый 19.10.2011, 06:18
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

http://ru.wikipedia.org/wiki/%D0%92%...BB%D0%BE%D0%BD
http://ru.wikipedia.org/wiki/%D0%A0%...BD%D0%B8%D1%8F
где конкретно непонятно?
Ответить с цитированием
  #14  
Старый 19.10.2011, 09:30
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

А зачем нужно то? Почему нельзя открыть этот файл каким нибудь текстовым редактором и изменить? Как она облегчит жизнь?
Ну если уж так это сильно нужно то в теории можно это как то осуществить, например узнать положение тэга </body> через pos и перед ним вставить нужный тебе текст например с использованием copy, не думаю что это так сложно сделать.... но блин, зачем?
Ответить с цитированием
  #15  
Старый 19.10.2011, 10:53
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  fel: TStringList;
  i: integer;
  code: string;
begin
  fel:= TStringList.Create;
  fel.LoadFromFile('index.html');
  i:= pos('</body>', fel.Text);
  code:= fel.Text;
  Insert(Memo1.Lines.Text+#13#10, code, i);
  fel.Text:=code;
  Memo1.Lines.Add(fel.Text);
  fel.SaveToFile('index.html');
  fel.Clear;
end;

end.

Код наверно не самый оптимальный, но работает чудесно. Касательно интерфейса не так как ты просил, но думаю разберешься.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter