|
|
Регистрация | << Правила форума >> | 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, но это не смертельно.
|