[Delphi] Удаление строк определенной длины!

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Sokol-117845, 10 Apr 2012.

  1. Sokol-117845

    Sokol-117845 New Member

    Joined:
    7 Jun 2011
    Messages:
    2
    Likes Received:
    1
    Reputations:
    0
    Как удалить строки из txt файла которые содержат более 10 символов и менее десяти символов с использованием TStringList? :confused:
     
  2. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19

    Code:
    StrList: TstringList;
    I: Integer;
    begin
    StrList := TstringList.Create;
    try
       for I:= 0; I < StrList.Count - 1 do 
      begin
         if (Length(StrList.Strings[I]) > 10) or (Length(StrList.Strings[I])  < 10) then
                StrList.Delete(I);
      end;
    finally
      StrList.Free;
    end;
    end;
    
    Удаляться все строки,
     
  3. Sokol-117845

    Sokol-117845 New Member

    Joined:
    7 Jun 2011
    Messages:
    2
    Likes Received:
    1
    Reputations:
    0
    Спасибо за содействие!
     
  4. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Code:
    StrList: TstringList;
     I: Integer;
     begin
     StrList := TstringList.Create;
     try
        for I:= 0; I < StrList.Count - 1 do
        begin
          if (Length(StrList.Strings[I]) > 10) [COLOR=Red]and[/COLOR] (Length(StrList.Strings[I])  < 10)
     then
                 StrList.Delete(I);
       end;
     finally
       StrList.Free;
     end;
     end;
     
  5. Sokol-117845

    Sokol-117845 New Member

    Joined:
    7 Jun 2011
    Messages:
    2
    Likes Received:
    1
    Reputations:
    0
    Код не компилился, сделал так:
    Code:
    var
    StrList: TstringList;
    I: Integer;
    begin
    StrList := TstringList.Create;
    try
    StrList.LoadFromFile('Исходный.txt');
    I:= 0; while I < StrList.Count - 1 do// mironich, ты не указал начало цикла
    begin
    if (Length(StrList.Strings[I]) > 13) and (Length(StrList.Strings[I])  < 13) then
    StrList.Delete(I)
    else
    inc(i); //иначе вперед
    end;
    StrList.SaveToFile('Исходный.txt');
    finally
    StrList.Free;
    end;
    end;
    Компилится, но не работает) Опять что-то не то! Как быть?
     
  6. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Приведи пример такого слова...

    Тебе нужно удалить все слова, длина которых не равняется 10, насколько я понимаю. Тогда:
    Code:
      ...
      for i := StringList.Count - 1 downto 0 do
        if Length(StringList[i]) <> 10 then
          StringList.Delete(i);
      ...
     
  7. Sokol-117845

    Sokol-117845 New Member

    Joined:
    7 Jun 2011
    Messages:
    2
    Likes Received:
    1
    Reputations:
    0
    Code:
    procedure TForm1.Del13;
    var
    StrList: TstringList;
    I: Integer;
    begin
    StrList := TstringList.Create;
    try
    StrList.LoadFromFile('Исходный.txt');
    I:= 0; for I := StrList.Count - 1 downto 0 do
    begin
    if (Length(StrList.Strings[I]) <> 10) then
    StrList.Delete(I);
    end;
    StrList.SaveToFile('Исходный.txt');
    finally
    StrList.Free;
    end;
    end;
    Может кому пригодится!
    Всем спасибо за помощь!