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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2016, 19:39   #1
Tony Hudson
Пользователь
 
Регистрация: 05.03.2015
Сообщений: 36
По умолчанию Строки Delphi. Удалить 6 первых строк из файла

Добрый вечер.Подскажите пожалуйста, как удалить 6 первых строк из файла, если число строк больше 6 и кратно 3?
Tony Hudson вне форума Ответить с цитированием
Старый 06.04.2016, 19:53   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Прочитать все строки и перезаписать файл выкинув первые 6 строк.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.04.2016, 22:32   #3
vlad1389
Форумчанин
 
Регистрация: 02.02.2016
Сообщений: 290
По умолчанию

Интересно, при чём тут кратность?
Код:
var
List: TStringList;
i:Integer;
begin
List:=TStringList.Create;
List.LoadFromFile("путь");
for i := 0 to 5 do List.Delete(List[0]);
List.SaveToFile("путь");
List.Free;
end;
vlad1389 вне форума Ответить с цитированием
Старый 07.04.2016, 08:46   #4
Tony Hudson
Пользователь
 
Регистрация: 05.03.2015
Сообщений: 36
Радость

Цитата:
Сообщение от vlad1389 Посмотреть сообщение
Интересно, при чём тут кратность?
Код:
var
List: TStringList;
i:Integer;
begin
List:=TStringList.Create;
List.LoadFromFile("путь");
for i := 0 to 5 do List.Delete(List[0]);
List.SaveToFile("путь");
List.Free;
end;
Задание такое, спасибое большое за код
Tony Hudson вне форума Ответить с цитированием
Старый 07.04.2016, 09:35   #5
vlad1389
Форумчанин
 
Регистрация: 02.02.2016
Сообщений: 290
По умолчанию

Tony Hudson то есть вообще по фиг, что задание содержит логическую ошибку, и на это можно указать преподавателю, и получить дополнительные баллы? Разучилась нынче молодёжь головой думать...
vlad1389 вне форума Ответить с цитированием
Старый 07.04.2016, 09:51   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Код:
procedure DelFirstLines(ALines: TStrings; const ACount: int32);
var
  idx: int32;
begin
  idx:= 0;
  while (ALines.Count <> 0) and (idx < ACount) do
    begin
      ALines.Delete(0);
      inc(idx);
    end;
end;

function FuckIt(const ASourceFileName, ADestFileName: string): boolean;
var
  List: TStringList;
  i: Integer;
begin
  Result:= false;
  List:= TStringList.Create();
  try
    try
      List.LoadFromFile(ASourceFileName);
      
      // удалить 6 первых строк из файла, если число строк больше 6 и кратно 3
      if (List.Count < 7) or (List.Count mod 3 <> 0)
        then Exit;
        
      DelFirstLines(List, 6);
      List.SaveToFile(ADestFileName);
      Result:= true;
    except on E: Exception do
      Application.MessageBox(PChar(E.Message), 'Error', MB_OK + MB_ICONSTOP);
    end;
  finally
    List.Free();
  end;
end;
ВНИМАНИЕ!
УВАГА!!
АХТУНГ!!!
АТТЕНШН!!!!

Shit-code detected!
Код не отлаживал. Писал на заборе!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 07.04.2016, 10:19   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от vlad1389 Посмотреть сообщение
[B]что задание содержит логическую ошибку
и какую же ошибку? Если Вы про кратность трём, то это не задание содержит ошибку, а Вы не смогли его правильно понять.
Вот, посмотри на решение от min@y™

А то, что студенты не пытаются вникнуть, это да, есть такая беда.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.04.2016, 14:21   #8
vlad1389
Форумчанин
 
Регистрация: 02.02.2016
Сообщений: 290
По умолчанию

Ясно...
vlad1389 вне форума Ответить с цитированием
Старый 07.04.2016, 14:35   #9
Tony Hudson
Пользователь
 
Регистрация: 05.03.2015
Сообщений: 36
По умолчанию

Цитата:
Сообщение от vlad1389 Посмотреть сообщение
Интересно, при чём тут кратность?
Код:
var
List: TStringList;
i:Integer;
begin
List:=TStringList.Create;
List.LoadFromFile("путь");
for i := 0 to 5 do List.Delete(List[0]);
List.SaveToFile("путь");
List.Free;
end;
зачем List.Delete(List[0]), нужно ведь List.Delete(i), не так ли?
Tony Hudson вне форума Ответить с цитированием
Старый 07.04.2016, 14:38   #10
Tony Hudson
Пользователь
 
Регистрация: 05.03.2015
Сообщений: 36
По умолчанию

Вот разобрался, на мой взгляд, можно не создавать лишние функции.
Отлаженный код:

Код:
procedure TMyThread2.Work;
var
List: TStringList;
i:integer;
begin
List:=TStringList.Create;
List.LoadFromFile('c:\1.txt');
if (list.Count>6) and ((list.Count mod 3)=0) then
begin
for i := 0 to 5 do List.Delete(i);
List.SaveToFile('c:\1.txt');
List.Free;
end;
______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) для вставки кода на форум.

Последний раз редактировалось Alex11223; 07.04.2016 в 14:46.
Tony Hudson вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Удалить из файла три первых числа. Найти в файле наибольшее число и два числа, стоящих перед ним. Бугра Помощь студентам 1 05.04.2016 16:08
Удаление первых n-строк из txt-файла Neksion Помощь студентам 2 10.07.2013 18:12
Дан двумерный массив. начиная с 1 строки сдвинуть все строки на 2 вниз, а последние 2 переместить на место первых двух строк. Proskurina Помощь студентам 5 03.03.2013 21:38
Удалить из файла похожие строки erzhik_s Общие вопросы Delphi 3 19.04.2012 09:57
Удалить из файла все строки содержащие 3 и 5 hon Общие вопросы Delphi 9 21.03.2012 21:55