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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2014, 11:35   #1
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию Удаление строк

Как удалить все строки из txt в которых нет символа "+" ?
UKRtortik вне форума Ответить с цитированием
Старый 30.05.2014, 11:40   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

читать каждую строку из источника, в приемник записывать только те строки, у которых есть символ +. Это же очевидно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.05.2014, 11:41   #3
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от UKRtortik Посмотреть сообщение
Как удалить все строки из txt в которых нет символа "+" ?
Как вариант:
1. Загрузить файл в StringList (LoadFromFile)
2. Пройтись циклом по всем строкам StringList проверяя фенкцией pos на наличие знака "+". Если присутствует - удалять строку из StringList
3. Сохранить содержимое StringList (SaveToFile) в нужный файл
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 30.05.2014, 12:16   #4
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию

Код:
j:='+';
OpenDialog1.execute;
if OpenDialog1.filename<>'' then begin
uploaded := tstringlist.Create;
uploaded.LoadFromFile(OpenDialog1.FileName);
for a:=uploaded.Count-1 downto 0 do
if pos(j, uploaded[a])<>0 then begin
uploaded.delete(a);
end;
end;
uploaded.SaveToFile('1.txt');
showmessage ('GOOD');
end;
Так?
UKRtortik вне форума Ответить с цитированием
Старый 30.05.2014, 12:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так. Только uploaded освободить не забывай.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.05.2014, 12:26   #6
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию

а точно, спасибо!
UKRtortik вне форума Ответить с цитированием
Старый 30.05.2014, 12:36   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
OpenDialog1.execute;
if OpenDialog1.filename<>'' then begin
OpenDialog.Execute так не используют!!

Кроме того, Вы же собирались удалить строки, в которых НЕТ знака '+'. А в коде наоборот, удаляются строки со знаком '+'...

рекомендую ваш код записать так:
Код:
if OpenDialog1.execute then begin
  uploaded := tstringlist.Create;
  uploaded.LoadFromFile(OpenDialog1.FileName);
  for a:=uploaded.Count-1 downto 0 do
      if pos('+', uploaded[a])=0 then uploaded.delete(a);
  uploaded.SaveToFile('1.txt');
  uploaded.Free; 
  showmessage ('GOOD');
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.05.2014, 12:49   #8
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию

я перепутал надо наоборот в которых есть +

а еще вопрос, а как определить есть ли после знака еще какие то (буквы/цифры/симолы), если нету то удалить?

Последний раз редактировалось Stilet; 31.05.2014 в 17:58.
UKRtortik вне форума Ответить с цитированием
Старый 30.05.2014, 13:24   #9
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от UKRtortik Посмотреть сообщение
а еще вопрос, а как определить есть ли после знака еще какие то (буквы/цифры/симолы), если нету то удалить?
- проверить наличие знака "+" в строке
- если присутствует - определить длину строки (length)
- если "+" последний - удалить строку
Код:
  s := 'asd+';
  if copy(s,length(s),1) = '+' then s := '';
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!

Последний раз редактировалось spirit-ua; 30.05.2014 в 13:29.
spirit-ua вне форума Ответить с цитированием
Старый 30.05.2014, 14:23   #10
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию

spirit-ua, спасибо, а еще вопрос сюда же, вот код:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
uploaded: tstringlist;
a,b: integer;
j:string;
begin
j:=edit1.text;
if OpenDialog1.execute then begin
uploaded := tstringlist.Create;
uploaded.LoadFromFile(OpenDialog1.FileName);
for a:=uploaded.Count-1 downto 0 do
if copy(uploaded[a],length(uploaded[a]),1) = j then begin
uploaded.delete(a);
b:=b+1;
end;
showmessage ('Удалено: '+inttostr(b));
if SaveDialog1.Execute then uploaded.SaveToFile (SAveDialog1.FileName+'.txt');
uploaded.Free;
end;
end;
Удаляет только если после указанного символа больше не чего не идет, а как еще сделать чтобы удалял строку если в ней вообще нет этого символа?
UKRtortik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление строк Артл Microsoft Office Excel 2 24.02.2013 13:37
Удаление строк из БД katerina_lili C# (си шарп) 2 09.11.2012 17:08
Удаление из строк Михаил_444 Паскаль, Turbo Pascal, PascalABC.NET 1 14.11.2011 21:23
Удаление строк Trimbl Microsoft Office Excel 13 18.10.2010 13:19
перенос строк удаление ненужных строк HelperAwM Microsoft Office Excel 5 26.06.2010 18:42