Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2014, 20:52   #1
mt10forex
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 14
Радость





собствено вот код
Код:
procedure TForm1.Button4Click(Sender: TObject);


var
Str   : string;
 i:Integer;
tt, t:TStringList;
begin
 t:= TStringList.Create;
 t.Add(Memo2.Lines.Text);
 tt:= TStringList.Create;
  t:= TStringList.Create;
 Str:=t.Strings[i];
  for I := 0 to Memo2.Lines.Count - 1 do
   begin
    if Length(Str)<55 then tt.Add(Str);
end;
  Memo2.Clear;
  Memo2.Lines.Add(tt.Text);
  t.Free;
    tt.Free;
 end;
end.
ошибка вылетает
компилятор д7 хе3

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

Последний раз редактировалось Stilet; 16.07.2014 в 21:16.
mt10forex вне форума Ответить с цитированием
Старый 16.07.2014, 20:57   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Фрагмент вашего кода
Код:
 t:= TStringList.Create; 
 t.Add(Memo2.Lines.Text); 
 tt:= TStringList.Create; 
  t:= TStringList.Create; // зачем второй раз ?
 Str:=t.Strings[i];  // чему равно i ?
type_Oleg вне форума Ответить с цитированием
Старый 16.07.2014, 21:06   #3
mt10forex
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 14
По умолчанию

t:= TStringList.Create; // зачем второй раз ? это убрал веровно ошибка


Str:=t.Strings[i]; // чему равно i ? //
for i := 0 to Memo2.Lines.Count - 1 do
mt10forex вне форума Ответить с цитированием
Старый 16.07.2014, 21:20   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В чем состоит задача кода? Убрать все строки менее 55 символов?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.07.2014, 21:22   #5
mt10forex
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
В чем состоит задача кода? Убрать все строки менее 55 символов?
да, убрать из стринг листа

закоментил for и вроде работает, значит дело в цикле, не фига не пойму чем цикл помешал то

Последний раз редактировалось Stilet; 16.07.2014 в 21:33.
mt10forex вне форума Ответить с цитированием
Старый 16.07.2014, 21:34   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
with  Memo2.Lines do
 for i:=count-1 downto 0 do
  if Length(Strings[i])<55 then Delete(i);
И более ничего не надо.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.07.2014, 21:38   #7
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Я не догадался о downto. У меня длиннее получилось
Код:
 i:=0;
 repeat
  if Length(Memo2.Lines.Strings[i])<55
   then  Memo2.Lines.Delete(i)
   else Inc(i);
 until i>=Memo2.Lines.Count;
Не надо никаких Str, tt, t

PS Кстати, удалить строки короче или длинне 55 ?

Последний раз редактировалось type_Oleg; 16.07.2014 в 21:45.
type_Oleg вне форума Ответить с цитированием
Старый 16.07.2014, 22:09   #8
mt10forex
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 14
По умолчанию

Цитата:
PS Кстати, удалить строки короче или длинне 55 ?
длинее
ну ладно мемо так мемо, а если у меня 5000 строк этож тормаза будут
спс всем, где тут кнопка спасибо? нет( ну ладно
mt10forex вне форума Ответить с цитированием
Старый 16.07.2014, 22:16   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
with  Memo2.Lines do begin
 BeginUpdate;
 for i:=count-1 downto 0 do
  if Length(Strings[i])>55 then Delete(i);
 EndUpdate;
End;
И никаких тормозов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.07.2014, 03:05   #10
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 240
По умолчанию

mt10forex, как минимум, "Str:=t.Strings[i];" надо было засунуть внутрь цикла. Иначе i перед циклом (перед for) не имеет определенного значения и на строке Str:=t.Strings[i]; выполнение спотыкается. Просто отладчик, получается, вылетел позднее, и напугал вас ошибкой в цикле.
blackstrip вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввести строку символов, если ее длина>8, удалить все буквы – A..Z. (С++) Misha_Sil Помощь студентам 1 16.02.2013 17:55
Поиск символов в строке. Удалить строку, если их нет gauss_gauss Microsoft Office Word 4 24.03.2012 14:37
как удалить строку из combobox, если такая уже есть и добавить в начало новую? codermoder Общие вопросы Delphi 6 14.01.2011 17:33
Как ввести строку больше 255 символов? slips Общие вопросы C/C++ 11 26.04.2009 19:53
как удалить анти вирус( касперский 2006)если она не работает и ее не возможно удалить Alar Общие вопросы Delphi 0 29.10.2006 21:36