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

Delphi Sources



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

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

Цитата:
Код наверно не самый оптимальный, но работает чудесно
работает и впрям Чудесно!!!

Цитата:
Касательно интерфейса не так как ты просил
пустяк=)))


Цитата:
думаю разберешься.
извини пользоваться как-я понел.
ну я просто не из таких которые хотят написать только программу(Ctrl+c затем Ctrl+v вот и все написание)
немог бы ты разжувать мне этот код я его просто совсем не понимаю)))

ещё если убрать
Код:
Memo1.Lines.Add(fel.Text);
то программа не будет дублировать то что написано в memo1, а будет дописывать текст к тексту между тегами боди=)
и еще вопросик а не мог бы ты мне показать еще как ЗАМЕНИТЬ текст (не дописать=))
Ответить с цитированием
  #17  
Старый 19.10.2011, 19:00
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Что касается:
Код:
Memo1.Lines.Add(fel.Text);

Совершенно не понял что ты написал, если убрать ту строчку в конце содержимое твоего файла не покажется в memo и все, я её написал ради теста не больше.
Вот код с комментариями:
Код:
  fel:= TStringList.Create;   // Создаю StringList
  fel.LoadFromFile('index.html'); // Загружаю файл
  i:= pos('</body>', fel.Text); // Ищу позицию закрывающего тэга Body
  code:= fel.Text; // Присваиваю переменной содержимое файла
  Insert(Memo1.Lines.Text+#13#10, code, i); // Дописываю в файл данные с Memo
  fel.Text:=code; // Записываю в файл уже измененный текст
  Memo1.Lines.Add(fel.Text); // Вывожу м Мемо содержимое файла
  fel.SaveToFile('index.html'); // Сохраняю файл
  fel.Clear;  // Освобождаю память

Про заменить прошу подробнее. Что именно заменить, где?

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

Цитата:
Про заменить прошу подробнее. Что именно заменить, где?
m1sclick,твой код дополняет то что написано между тегами боди=)
прошу подсказать как его не дополнять а заменять на текст введенный в мемо(заменять текст который стоит между боди)

Цитата:
И меня до сих пор интересует - как эта программа упрощает жизнь веб программистам?
ну знаешь я просто уже давно статичные страницы пишу=)и вот каждый раз открывать код искать где там написано содержимое страницы(вставлять <br>'ы,редактировать содержимое страницы заменяя его новым),мне надоело!!!хочу написать себе программу а по совместительству и партнеру по такой же участи(писать на html статички).
всякие wysiwyg редакторы вообще не в кайф,они добавляет свой мусор все время... ну и в конце концов опыта набраться))))


+
Цитата:
Совершенно не понял что ты написал, если убрать ту строчку в конце содержимое твоего файла не покажется в memo и все, я её написал ради теста не больше.
введя в мемо текст(дополняемый) между боди и нажав button он дополнится,но не очистив memo от кода index.html дополнить его еще одной строчкой и нажать опять button он начинает сорить в хтмл код дублируя его(простоесли не очистить и нажать 2 раз) =)
ну если поставить
Код:
procedure TForm1.Memo1Click(Sender: TObject);
begin
memo1.Clear;
end;

end.
все норм работает и не "гадит" в index.html
Ответить с цитированием
  #19  
Старый 19.10.2011, 21:47
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Цитата:
введя в мемо текст(дополняемый) между боди и нажав button он дополнится,но не очистив memo от кода index.html дополнить его еще одной строчкой и нажать опять button он начинает сорить в хтмл код дублируя его(простоесли не очистить и нажать 2 раз) =)
ну если поставить
А...ну это понятно.

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

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  fel: TStringList;
  i, j: integer;
  code: string;
begin
  fel:= TStringList.Create;   // Создаю StringList
  fel.LoadFromFile('index.html'); // Загружаю файл
  i:= pos('</body>', fel.Text); // Ищу позицию закрывающего тэга Body
  j:= pos('<body>', fel.Text)+6; // Ищу позицию открывающего тэга Body
  code:= fel.Text; // Присваиваю переменной содержимое файла
  if i-j <> 1 then  // Проверяю есть что удалять или нету
  begin
    Delete(code, j, i-j); // Удаляю все лишнее
    i:= pos('</body>', code); // Ищу новую позицию закрывающего тэга Body
  end;
  Insert(#13#10+Memo1.Lines.Text+#13#10, code, i); // Дописываю в файл данные с Memo
  fel.Text:=code; // Записываю в файл уже измененный текст
  Memo1.Lines.Add(fel.Text); // Вывожу в Мемо содержимое файла
  fel.SaveToFile('index.html'); // Сохраняю файл
  fel.Clear;  // Освобождаю память
end;

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

Для того что бы не было лишних пустых строк сделай кнопку чтобы чистила Memo.
Ответить с цитированием
  #21  
Старый 20.10.2011, 11:26
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Вот так устроит?
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Button2: TSpeedButton;
    Button3: TSpeedButton;
    RichEdit1: TRichEdit;
    RichEdit2: TRichEdit;
    Button4: TButton;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 if not OpenDialog1.Execute then Exit;
 RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos: Integer;
begin
  if RichEdit1.SelLength <> 0
  then StartPos := RichEdit1.SelStart + RichEdit1.SelLength
  else StartPos := 0;
  FoundAt := RichEdit1.FindText('<body>', StartPos, Length(RichEdit1.Text), [stMatchCase]);
  if FoundAt <> -1
  then begin
       RichEdit1.SetFocus;
       RichEdit1.SelStart := FoundAt + Length('<body>');
       RichEdit1.SelLength := RichEdit1.FindText('</body>', RichEdit1.SelStart, Length(RichEdit1.Text), [stMatchCase]) - RichEdit1.SelStart;
       end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 RichEdit1.SelText := RichEdit2.Text
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
 SaveDialog1.FileName := OpenDialog1.FileName;
 if not SaveDialog1.Execute then Exit;
 RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
end;

end.
и dfm-файл
Код:
object Form1: TForm1
  Left = 350
  Top = 114
  Width = 870
  Height = 640
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  DesignSize = (
    862
    606)
  PixelsPerInch = 96
  TextHeight = 13
  object Button2: TSpeedButton
    Left = 8
    Top = 480
    Width = 75
    Height = 25
    Anchors = [akLeft, akBottom]
    Caption = 'Find'
    OnClick = Button2Click
  end
  object Button3: TSpeedButton
    Left = 96
    Top = 480
    Width = 75
    Height = 25
    Anchors = [akLeft, akBottom]
    Caption = 'Replace'
    OnClick = Button3Click
  end
  object Button1: TButton
    Left = 8
    Top = 8
    Width = 75
    Height = 25
    Caption = 'Load...'
    TabOrder = 0
    OnClick = Button1Click
  end
  object RichEdit1: TRichEdit
    Left = 8
    Top = 40
    Width = 849
    Height = 433
    Anchors = [akLeft, akTop, akRight, akBottom]
    ScrollBars = ssBoth
    TabOrder = 1
  end
  object RichEdit2: TRichEdit
    Left = 8
    Top = 512
    Width = 849
    Height = 89
    Anchors = [akLeft, akRight, akBottom]
    TabOrder = 2
  end
  object Button4: TButton
    Left = 88
    Top = 8
    Width = 75
    Height = 25
    Caption = 'Save as...'
    TabOrder = 3
    OnClick = Button4Click
  end
  object OpenDialog1: TOpenDialog
    Filter = '*.htm|*.htm'
    Left = 152
    Top = 80
  end
  object SaveDialog1: TSaveDialog
    Filter = '*.htm|*.htm'
    Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]
    Left = 232
    Top = 80
  end
end
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #22  
Старый 20.10.2011, 16:48
Аватар для Acid_Burn123
Acid_Burn123 Acid_Burn123 вне форума
Прохожий
 
Регистрация: 17.10.2011
Сообщения: 28
Репутация: выкл
По умолчанию

Цитата:
Для того что бы не было лишних пустых строк сделай кнопку чтобы чистила Memo.
добавил в код,в конец кнопки
Код:
memo1.clear;


Цитата:
На самом деле тебе нужно было почитать про работу со строками и все написал бы сам, здесь все элементарно.
думаю да!но появились вопросы:
изучил pos научился находить!в edit1 пишу тег каторый надо мне найти(просто тренировка)вот:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Lines.LoadFromFile('C:\index.html');
memo1.Visible:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if pos(edit1.text,memo1.text)<>0 then
    ShowMessage('Найден тег!')
    else showmessage('НЕ найден Тег!!!=(');
end;
ну вот не могу понять:вот я нашел(с помощью pos) тег <body> как после него написать что нибудь???что добавить в мой код?


что такое
Код:
<>0 then
???
можно с комментариями пожалуйста=)полегче что нибудь)))
очень благодарен за код m1sclick Работает=)

Страдалецъ,нет такой код не пойдет он слишком большой +непонятный,я придерживаюсь "меньше кода" и "понятного"типа как у m1sclick=)
Ответить с цитированием
  #23  
Старый 20.10.2011, 20:05
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Я вроде писал комментарии....
Для того что бы написать после <body> нужно использовать insert - там синтаксис такой:
insert(что вписать, куда вписать, с какой позиции вписать);
pos вернул тебе позицию начала <body>, чтобы вписать после него нужно до pos добавить еще 6 символов, длину <body>.
Цитата:
что такое
Код:
<>0 then

Я так понял это с твоего примера. В той строчке я так понимаю ты хотел сделать проверку, существует тэг или нет. Если существует тебе pos вернет допустим 46, то есть >0, а если не существует вернет ноль. Вот ты и проверяешь, если вернуло НЕ (<>) 0 то значит тэг найден.

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

ммм..если я правильно тебя понел нужно сделать так?(добавить длину боди(+6)):
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
j: integer;
begin
s:='<body>';
j:= pos('<body>',memo1.Text)+6;
insert(edit1.text,s,j);
memo1.Lines.SaveToFile('C:\index.html');
end;

end.
Ответить с цитированием
  #25  
Старый 20.10.2011, 21:02
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Мог бы потестить и не спрашивать.

Только я совсем ничего не понял. Ты дописал в переменную s текст с Edit1 а в файл сохранил содержимое Memo1. Кокой смысл то? Или это я, совсем уже не соображаю?
Ответить с цитированием
  #26  
Старый 20.10.2011, 21:07
Аватар для Acid_Burn123
Acid_Burn123 Acid_Burn123 вне форума
Прохожий
 
Регистрация: 17.10.2011
Сообщения: 28
Репутация: выкл
По умолчанию

нет,я пытаюсь взять основу твоего кода(тот минимум который полностью повторилбы функцию,неважно как она работает добавляет или заменяет)

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

Цитата:
Ты дописал в переменную s текст с Edit1 а в файл сохранил содержимое Memo1

(эта переменная s должна ,если я правильно понимаю вставать после <body>)
да,по ходу чуть приукрашиваю,направляюсь этим кодом(насчет insert):
Код:
Вставка подстроки в строку

Если требуется в имеющуюся строку вставить другую строку, можно использовать процедуру Insert(). Первый параметр - строка для вставки, второй - переменная, содержащая строку, куда нужно вставить, третий - позиция (номер символа), начиная с которого будет вставлена строка. Пример:

procedure TForm2.Button1Click(Sender: TObject);
var S: String;
begin
  S:='1234567890';
  Insert('000',S,3);
  ShowMessage(S)

end;
В данном случае результатом будет строка "1200034567890".

Последний раз редактировалось Acid_Burn123, 20.10.2011 в 21:09.
Ответить с цитированием
  #27  
Старый 20.10.2011, 21:13
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Цитата:
я конечно же потестил,перед тем как спросить,эээ вообщем результат нуль!ничего в файле не изменилось
С чего бы ему изменяться если ты в нем ничего не менял. Покажи мне кусок кода где ты в файл присваиваешь новое значение? А лучше весь код покажи но выдели строчку которой присваиваешь.

Я не пойму проблемы. Если мой код работает зачем писать еще что то? Я так понимаю ты совсем не Delphi программист, а HTML?
Ответить с цитированием
  #28  
Старый 22.10.2011, 13:14
Аватар для Acid_Burn123
Acid_Burn123 Acid_Burn123 вне форума
Прохожий
 
Регистрация: 17.10.2011
Сообщения: 28
Репутация: выкл
По умолчанию Вполне понел=)

Цитата:
Цитата:
я конечно же потестил,перед тем как спросить,эээ вообщем результат нуль!ничего в файле не изменилось
С чего бы ему изменяться если ты в нем ничего не менял. Покажи мне кусок кода где ты в файл присваиваешь новое значение?

хаха,извини m1sclick,мой прошлый код :
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
j: integer;
begin
s:='<body>';
j:= pos('<body>',memo1.Text)+6;
insert(edit1.text,s,j);
memo1.Lines.SaveToFile('C:\index.html');
end;

end.
и правда смешной (и воообще глупость-ниочём)

просто не понемал(хотя может быть и сейчас не понимаю)=)

Цитата:
Я не пойму проблемы. Если мой код работает зачем писать еще что то?
Хочу понять от первой до последней буквы,и строго написать,сам головой подумать=)

Цитата:
Я так понимаю ты совсем не Delphi программист, а HTML?
в точку=)

m1sclick,ну вот я подумал,вроде накидал(который бы дополнял) что-то проверь пожалуйста проверь правильно ли я понимаю что натворил?:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var text,s:string; //обозначаю пременную  text и s как строку
i:integer; //переменную i как целое число
begin
text:=memo1.lines.text; //гружу в переменную text все что в memo1(гружу для обработки)
s:=edit1.Text; //s будет все что я напишу в edit1
i:=pos('<body>',text)+6; //переменная i вернет цифру когда начнется <body> и прибавит к этой цифре 6 символов вперед(чтоб писалось после <body>) 
insert(s,text,i); //вставляю то что в edit1 в переменную text(в ней содержимое всего memo1) ,указываю позицию сколько отступить(6) прежде чем вставить
memo1.Lines.Text:=text;//гружу обратно все что в переменной text(уже измененный и вставленный edit1'ом) в memo1
memo1.Lines.SaveToFile('C:\index.html');// сохраняю в файл все что в memo1
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Lines.LoadFromFile('C:\index.html');// гружу в memo1 содержимое файла каторый находиться по адресу C:\index.html
end;

end.

поправь,обясни пожалуйста если я что то неправильно понимаю.

Последний раз редактировалось Acid_Burn123, 22.10.2011 в 13:18.
Ответить с цитированием
  #29  
Старый 22.10.2011, 17:45
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Молодец, все правильно вроде: только можно обойтись без переменной s, но это не смертельно.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter