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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2014, 19:10   #21
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что и в этот раз, в четвёртый, ваш код TC не устроит..
Ответ тот же:
Цитата:
Я кагбэ не особо против.


Мну тоже предлагают взять автоматъ, я как и ТС упираюсь, так что не проблема.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.06.2014, 00:46   #22
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Цитата:
Как удалить все строки из txt в которых нет символа "+" ?
...плюс удаляет если знак "+" последний, не обязательно "+",другой знак, указанный в edit1.text

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  uploaded: tstringlist;
  a, b, i, k: integer;
  s, j: string;
begin
  j := Trim(edit1.text);
  if j = '' then
  begin
    ShowMessage('Заполните образец!');
    edit1.SetFocus;
    exit;
  end;
  if not OpenDialog1.execute then Exit;
  b := 0;
  uploaded := tstringlist.Create;
  uploaded.LoadFromFile(OpenDialog1.FileName);
  for a := 0 to uploaded.Count - 1 do
  begin
    k := 0;
    s := uploaded[a];
    if Trim(S) = '' then Continue;
    for i := 1 to Length(s) do
    begin
      if s[i] <> j then inc(k);
      if i = Length(s) then
        if s[i] = j then
        begin
          ShowMessage(s[Length(s) - 1]);
          uploaded.delete(a);
          inc(b);
        end
        else
          if k = Length(s) then
          begin
            uploaded.delete(a);
            inc(b);
            continue;
          end;
    end;
  end;
  showmessage('Удалено;: ' + inttostr(b));
if  SaveDialog1.Execute then uploaded.SaveToFile (SAveDialog1.FileName+'.txt');
  uploaded.Free;
end;

Цитата:
а еще вопрос, а как определить есть ли после знака еще какие то (буквы/цифры/симолы), если нету то удалить?
Автор, не морочь людям головы, пришли задание целиком, а то так правильного ответа не добьешься и вопросник не закончится твой)

Писал на скорую руку, соответственно без оптимизации по коду, должно работать.

з.ы. работает только по одному символу, введенному в образец, для того, чтобы работало как полноценная программа замените в условии s[i] кодом, содержащем pos,copy.
from dark to light)

Последний раз редактировалось Алексей_2012; 01.06.2014 в 00:55.
Алексей_2012 вне форума Ответить с цитированием
Старый 01.06.2014, 01:05   #23
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Алексей_2012, жуткий код..
я его, разумеется, не проверял, но практически уверен, что он будет работать криво.
Например, крайне не рекомендуется удалять в прямом цикле for строки.
Очевидно же, что не все строки будут обработаны (будет перескакивать через строку).
Да и проверка того, что последний символ строки равен заданному символу производит гнетущее впечатление!
Copy(s, Length(s), 1) = j - не проще?!


извините, если был слишком резок в суждениях...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.06.2014, 17:57   #24
WhiskasTM
Подтвердите свой е-майл
 
Регистрация: 11.04.2012
Сообщений: 85
По умолчанию

Цитата:
Сообщение от UKRtortik Посмотреть сообщение
Мне нужна удалять строку в 2-х случаях, если заданный символ последний в строке или его вообще нет.
Код:
procedure ProccessFile(const FileName:string);
var
list  : TStringList;
c     : Char;
i     : Integer;
j     : Integer;
begin
c := '+';
list := TStringList.Create;
list.LoadFromFile(FileName);
for i := list.Count-1 downto 0 do
begin
  j := Length(list[i]);
  if (j=0) or (list[i][j]=c) or (Pos(c,list[i])=0) then list.Delete(i);
end;
list.SaveToFile('D:\out.txt');
list.Free;
list := nil;
end;
Холостое копирование вредно)
WhiskasTM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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