Показать сообщение отдельно
  #2  
Старый 25.06.2013, 04:54
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Каков принцип копирования этого
Код:
...
St:=Copy(Memo4.Lines.Strings[i],11,length(Memo4.Lines.Strings[i])-12);
...
и этого
Код:
...
Sa:=Copy(Memo6.Lines.Strings[j],5,length(Memo6.Lines.Strings[j])-6);
...
в смысле, как выглядит содержимое строк в мемо полностью? 11 и 5 понятно, а вот 12 и 6 не совсем, зачем столько символов от конца строки вырезается при копировании, просветите пжлст. Похоже что-то или слишком мало или слишком много обрезается при этой операции.

Да и потом, вот в этом месте
Код:
...

       for i := 0 to memo5.lines.Count - 1 do
         if memo5.Lines.Strings[i]=memo7.Lines.Strings[j] then
         memo8.Lines.Add(st);
         for j := 0 to memo7.Lines.Count - 1 do
           if memo7.Lines.Strings[j]=memo5.Lines.Strings[i] then
         memo8.Lines.Add(sa);
...
происходит следующее - j не изменяется, она остаётся в значении присвоенном ей в предыдущем цикле на последней итерации, а когда прокручивается j, с i происходит тоже самое, она не изменяется, потому как вот
Код:
procedure TForm1.SpeedButton3Click(Sender: TObject);
var
 j, i: integer;
 sa, st: shortstring;
 begin

   for i := 0 to Memo4.Lines.Count - 1 do
    begin
     if (Pos('package_n_',Memo4.Lines.Strings[i]) <> 0) then
      begin
       St:= Copy(Memo4.Lines.Strings[i],11,Length(Memo4.Lines.Strings[i])-12);
       Memo5.Lines.Add(st);
      end;{if}

     for j := 0 to Memo6.Lines.Count - 1 do
      begin
       if (Pos('req_', Memo6.Lines.Strings[j]) <> 0) then
        begin
         Sa:= Copy(Memo6.Lines.Strings[j], 5, Length(Memo6.Lines.Strings[j]) - 6);
         Memo7.Lines.Add(sa);
        end; {if}
      end; {for j}
    end; {for i}

//begin
   for i := 0 to memo5.lines.Count - 1 do
    if Memo5.Lines.Strings[i] = Memo7.Lines.Strings[j] then
     Memo8.Lines.Add(st);

   for j := 0 to Memo7.Lines.Count - 1 do
    if Memo7.Lines.Strings[j] = Memo5.Lines.Strings[i] then
         Memo8.Lines.Add(sa);
//end;
 end;
отсюда и совпадение только в конце. Нужно ещё пару циклов добавить или объединить существующие.
Ответить с цитированием