![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
||||
|
||||
|
Цитата:
Цитата:
Цитата:
ну я просто не из таких которые хотят написать только программу(Ctrl+c затем Ctrl+v вот и все написание) немог бы ты разжувать мне этот код я его просто совсем не понимаю))) ещё если убрать Код:
Memo1.Lines.Add(fel.Text); и еще вопросик а не мог бы ты мне показать еще как ЗАМЕНИТЬ текст (не дописать=)) |
|
#17
|
|||
|
|||
|
Что касается:
Код:
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
|
||||
|
||||
|
Цитата:
прошу подсказать как его не дополнять а заменять на текст введенный в мемо(заменять текст который стоит между боди) Цитата:
всякие wysiwyg редакторы вообще не в кайф,они добавляет свой мусор все время... ну и в конце концов опыта набраться)))) + Цитата:
ну если поставить Код:
procedure TForm1.Memo1Click(Sender: TObject); begin memo1.Clear; end; end. ![]() |
|
#19
|
|||
|
|||
|
Цитата:
Полностью весь текст между body заменять? Сейчас гляну. |
|
#20
|
|||
|
|||
|
Код:
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
|
||||
|
||||
|
Вот так устроит?
Код:
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.Код:
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
|
||||
|
||||
|
Цитата:
Код:
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; что добавить в мой код? что такое Код:
<>0 then можно с комментариями пожалуйста=)полегче что нибудь))) очень благодарен за код m1sclick Работает=) ![]() Страдалецъ,нет такой код не пойдет он слишком большой +непонятный,я придерживаюсь "меньше кода" и "понятного"типа как у m1sclick=) |
|
#23
|
|||
|
|||
|
Я вроде писал комментарии....
Для того что бы написать после <body> нужно использовать insert - там синтаксис такой: insert(что вписать, куда вписать, с какой позиции вписать); pos вернул тебе позицию начала <body>, чтобы вписать после него нужно до pos добавить еще 6 символов, длину <body>. Цитата:
Я так понял это с твоего примера. В той строчке я так понимаю ты хотел сделать проверку, существует тэг или нет. Если существует тебе pos вернет допустим 46, то есть >0, а если не существует вернет ноль. Вот ты и проверяешь, если вернуло НЕ (<>) 0 то значит тэг найден. Повторюсь, у меня вроде весь код с комментариями, должно быть понятно. |
|
#24
|
||||
|
||||
|
ммм..если я правильно тебя понел нужно сделать так?(добавить длину боди(+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
|
|||
|
|||
|
Мог бы потестить и не спрашивать.
Только я совсем ничего не понял. Ты дописал в переменную s текст с Edit1 а в файл сохранил содержимое Memo1. Кокой смысл то? Или это я, совсем уже не соображаю? |
|
#26
|
||||
|
||||
|
нет,я пытаюсь взять основу твоего кода(тот минимум который полностью повторилбы функцию,неважно как она работает добавляет или заменяет)
Цитата:
Цитата:
(эта переменная 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
|
|||
|
|||
|
Цитата:
Я не пойму проблемы. Если мой код работает зачем писать еще что то? Я так понимаю ты совсем не Delphi программист, а HTML? |
|
#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.просто не понемал(хотя может быть и сейчас не понимаю)=) Цитата:
Цитата:
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
|
|||
|
|||
|
Молодец, все правильно вроде: только можно обойтись без переменной s, но это не смертельно.
|