1 (edited by RZ-007 2017-02-10 10:10:06)

Topic: Скрипт...

Здравствуйте Дмитрий!!!
Помогите пожайлуста объеденить эти два одинаковых по структуре скрипта...

procedure Form1_Button61_OnClick (Sender: string; var Cancel: boolean);
 var
    HTML : TStringList;
    RegExp: TRegExp;                       
    S,LIST,REZYLTAT: String;
    i: integer;
    d,n: integer;
begin
         HTML := TStringList.Create;

         RegExp := TRegExp.Create(Form1.Edit5.Text); 
         RegExp.InputString := (Form1.Memo1.Text);

         if RegExp.Exec then
         repeat

         for i := 1 to RegExp.Match.Count-1 do

  begin

         if RegExp.Match[i]<>'' then
            HTML.Add(RegExp.Match[i]);

   end;
         until not RegExp.ExecNext;
         RegExp.Free;
//---------------------------------------------- ТЕГИ ---------------------------------------------------------------------------
 begin
         if  HTML.Text <>''   then  S:= HTML.Text;

             S:= ReplaceStr(S, '"', '*');  // ОБЯЗАТЕЛЬНО..., иначе выдаёт ошибку при записи в ( Б.Д. )....

             S:= ReplaceStr(S, Form1.Edit6.Text,  Form1.Edit7.Text);
             S:= ReplaceStr(S, Form1.Edit8.Text,  Form1.Edit9.Text);
             S:= ReplaceStr(S, Form1.Edit12.Text, Form1.Edit13.Text);
             S:= ReplaceStr(S, Form1.Edit14.Text, Form1.Edit15.Text);
             S:= ReplaceStr(S, Form1.Edit16.Text, Form1.Edit17.Text);
             S:= ReplaceStr(S, Form1.Edit18.Text, Form1.Edit19.Text);
             S:= ReplaceStr(S, Form1.Edit20.Text, Form1.Edit21.Text);
             S:= ReplaceStr(S, Form1.Edit22.Text, Form1.Edit23.Text);
             S:= ReplaceStr(S, Form1.Edit24.Text, Form1.Edit25.Text);
             S:= ReplaceStr(S, Form1.Edit26.Text, Form1.Edit27.Text);

             HTML.Free;
//-------------------------------------- нет пустых строчек --------------------------------------------------------------------
 begin
           if  S <>''   then    S:=Trim(S);
               S := ReplaceStr(S,#13#10#13#10, #13#10);
               S := ReplaceStr(S,#13#10#13#10, #13#10);
               S := ReplaceStr(S,#13#10#13#10, #13#10);

//---------------------------------------------- ПЕРЕНОС С НОВОЙ СТРОЧКИ -------------------------------------------------------
  begin
           if  S <>''   then    S:=Trim(S);
               S:= ReplaceStr(S, Form1.Edit28.Text, #13#10);
               S:= ReplaceStr(S, Form1.Edit29.Text, #13#10);
               S:= ReplaceStr(S, Form1.Edit30.Text, #13#10);

//-------------------------------------------------- ЕЩЁ РАЗ ТЕГИ ---------------------------------------------------------------
  begin
               if  S <>''   then    S:=Trim(S);
                   S:= ReplaceStr(S, Form1.Edit31.Text, Form1.Edit32.Text);
                   S:= ReplaceStr(S, Form1.Edit33.Text, Form1.Edit34.Text);
                   S:= ReplaceStr(S, Form1.Edit35.Text, Form1.Edit36.Text);

//--------------------------------------------- ЕЩЁ РАЗ нет пустых строчек -------------------------------------------------------
 begin
           if  S <>''   then    S:=Trim(S);
               S := ReplaceStr(S,#13#10#13#10, #13#10);
               S := ReplaceStr(S,#13#10#13#10, #13#10);
               S := ReplaceStr(S,#13#10#13#10, #13#10);

//------------------------------- ВЫРАВНИВАЕМ В ПЕРЕМЕННОЙ << S >> ВСЁ ПО ЛЕВОМУ КРАЮ -------------------------------------------
 begin
               if  S <>''   then    S:=Trim(S);

//--------------------------------- какое значение...если данных << НЕТУ >> -----------------------------------------------------

 begin
                if S <>''  then   // если данные есть   
           LIST :=(S)      else  LIST:= Form1.Edit37.Text;  //какое значение...если данных НЕТ..

//--------------------------------- какое значение...если данные длиннее указанной длины --------------------------------
  begin
                  n := trunc(Form1.Edit38.Value); // длинна строки постояная....( по умолчанию 10.000 символов )...
                  d :=Length(LIST);  //длинна строки
          if d > n  then REZYLTAT:= (Form1.Edit39.Text)  else  REZYLTAT:=(LIST); // если  длинна строки > 70 тогда ....

                    Form7.Memo1.Text:=(REZYLTAT);
                    Form1.Button62.Click ;
 end;end;end;end;end;end;end;end;end;

и

procedure Form1_Button62_OnClick (Sender: string; var Cancel: boolean);
 var
    HTML_1 : TStringList;
    RegExp_1: TRegExp;                        
    S_1,LIST,REZYLTAT_1: String;
    i_1: integer;
    d_1,n_1: integer;

begin
         HTML_1 := TStringList.Create;

         RegExp_1 := TRegExp.Create(Form1.Edit41.Text); 
         RegExp_1.InputString := (Form1.Memo1.Text);

         if RegExp_1.Exec then
         repeat

         for i := 1 to RegExp_1.Match.Count-1 do

  begin

         if RegExp_1.Match[i]<>'' then
            HTML_1.Add(RegExp_1.Match[i]);

   end;
         until not RegExp_1.ExecNext;
         RegExp_1.Free;
//---------------------------------------------- ТЕГИ ---------------------------------------------------------------------------
 begin
         if  HTML_1.Text <>''   then  S_1:= HTML_1.Text;

             S_1:= ReplaceStr(S_1, '"', '*');  // ОБЯЗАТЕЛЬНО..., иначе выдаёт ошибку при записи в ( Б.Д. )....

             S_1:= ReplaceStr(S_1, Form1.Edit42.Text,  Form1.Edit43.Text);
             S_1:= ReplaceStr(S_1, Form1.Edit44.Text,  Form1.Edit45.Text);
             S_1:= ReplaceStr(S_1, Form1.Edit46.Text, Form1.Edit47.Text);
             S_1:= ReplaceStr(S_1, Form1.Edit48.Text, Form1.Edit49.Text);
             S_1:= ReplaceStr(S_1, Form1.Edit50.Text, Form1.Edit51.Text);
             S_1:= ReplaceStr(S_1, Form1.Edit52.Text, Form1.Edit53.Text);
             S_1:= ReplaceStr(S_1, Form1.Edit54.Text, Form1.Edit55.Text);
             S_1:= ReplaceStr(S_1, Form1.Edit56.Text, Form1.Edit57.Text);
             S_1:= ReplaceStr(S_1, Form1.Edit58.Text, Form1.Edit59.Text);
             S_1:= ReplaceStr(S_1, Form1.Edit60.Text, Form1.Edit61.Text);

             HTML_1.Free;
//-------------------------------------- нет пустых строчек --------------------------------------------------------------------
 begin
           if  S_1 <>''   then    S_1:=Trim(S_1);
               S_1 := ReplaceStr(S_1,#13#10#13#10, #13#10);
               S_1 := ReplaceStr(S_1,#13#10#13#10, #13#10);
               S_1 := ReplaceStr(S_1,#13#10#13#10, #13#10);

//---------------------------------------------- ПЕРЕНОС С НОВОЙ СТРОЧКИ -------------------------------------------------------
  begin
           if  S_1 <>''   then    S_1:=Trim(S_1);
               S_1:= ReplaceStr(S_1, Form1.Edit62.Text, #13#10);
               S_1:= ReplaceStr(S_1, Form1.Edit63.Text, #13#10);
               S_1:= ReplaceStr(S_1, Form1.Edit64.Text, #13#10);

//-------------------------------------------------- ЕЩЁ РАЗ ТЕГИ ---------------------------------------------------------------
  begin
               if  S_1 <>''   then    S_1:=Trim(S_1);
                   S_1:= ReplaceStr(S_1, Form1.Edit65.Text, Form1.Edit66.Text);
                   S_1:= ReplaceStr(S_1, Form1.Edit67.Text, Form1.Edit68.Text);
                   S_1:= ReplaceStr(S_1, Form1.Edit69.Text, Form1.Edit70.Text);

//--------------------------------------------- ЕЩЁ РАЗ нет пустых строчек -------------------------------------------------------
 begin
           if  S_1 <>''   then    S_1:=Trim(S_1);
               S_1 := ReplaceStr(S_1,#13#10#13#10, #13#10);
               S_1 := ReplaceStr(S_1,#13#10#13#10, #13#10);
               S_1 := ReplaceStr(S_1,#13#10#13#10, #13#10);

//------------------------------- ВЫРАВНИВАЕМ В ПЕРЕМЕННОЙ << S >> ВСЁ ПО ЛЕВОМУ КРАЮ -------------------------------------------
 begin
               if  S_1 <>''   then    S_1:=Trim(S_1);

//--------------------------------- какое значение...если данных << НЕТУ >> -----------------------------------------------------

 begin
                if S_1 <>''  then   // если данные есть     
           LIST_1 :=(S)      else  LIST_1:= Form1.Edit71.Text;  //какое значение...если данных НЕТ..

//--------------------------------- какое значение...если данные длиннее указанной длины -------------------------------
  begin
                  n_1 := trunc(Form1.Edit72.Value); // длинна строки постояная....( по умолчанию 10.000 символов )...
                  d_1 :=Length(LIST_1);  //длинна строки
          if d_1 > n_1  then REZYLTAT_1:= (Form1.Edit73.Text)  else  REZYLTAT_1:=(LIST_1); // если  длинна строки > 70 тогда ....

                    Form7.Memo2.Text:=(REZYLTAT_1);
                    Form1.Button63.Click ;
 end;end;end;end;end;end;end;end;end;

- У меня проблемка, где правилно раставить  <<begin>> и <<end>>
- и RegExp по хоже не уничтожает своё значения изо моих растоновок <<begin>> и <<end>>
при новом парсинге если он значения не нашёл, от подставляет предыдущее!!!
Помогите пожайлуста объеденить эти два одинаковых по структуре скрипта в один...

Re: Скрипт...

Я могу помочь только с конкретным вопросом.


В вашем скрипте не нужны все эти многочисленные begin end;


Begin и end применяется чтобы обозначить где начинается и где заканчивается процедура,
пример

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin

end;


Также используется для условий, когда нужно выполнять несколько строк кода при выполнении условия,
пример

   if b = true then
   begin
       ShowMessage('');
       ShowMessage('');
       ShowMessage('');
   end;


Для циклов, чтобы определить, какие именно строки будут учавствовать в цикле
пример

   for i := 0 to 10 do
   begin
       ShowMessage('');
       ShowMessage('');
       ShowMessage('');
   end;

Больше нет случаев, когда нужен begin и end;


Рекомендую вам прочитать данные материалы
http://myvisualdatabase.com/forum/viewt … 462#p13462


А именно эту часть
http://www.snkey.net/books/delphi/ch1-4.html

Dmitry.

3 (edited by RZ-007 2017-02-10 16:02:48)

Re: Скрипт...

ОК!!! Спасибочки ЗА ценную информацию!!!
Дмитрий, а подскажите в моём выше стоящем скрипте ПОСТ № 1...
RegExp по хоже не уничтожает своё значения изо моих растоновок <<begin>> и <<end>>
при новом парсинге если он значения не нашёл, от подставляет предыдущее!!!
Где его правильно расположить вот эту часть в скрипте:

until not RegExp.ExecNext;
         RegExp.Free;

Re: Скрипт...

Разместите в самом конце

RegExp.Free;
HTML.Free;



Смысл в том, что когда вы создаете объекты, такие так

HTML := TStringList.Create;
RegExp := TRegExp.Create(Form1.Edit5.Text);

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

Dmitry.

Re: Скрипт...

Дмитрий у меня их АЖ:

end;end;end;end;end;end;end;end;end;

подскажитете между какими???

6 (edited by RZ-007 2017-02-10 18:48:44)

Re: Скрипт...

DriveSoft wrote:

Я могу помочь только с конкретным вопросом.

Извените за назойливость...
Куда я только невстовлял свой любимый RegExp.Free; в конце скрипта(всеравно помнит своё значения...!!!
ВОПРОС-просьба:
Пожайлуста помогите объеденить(правильно записать)  два одинаковых по структуре скрипта в один скрипт...ПОСТ № 1