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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2013, 20:47   #1
andrewsereda
 
Регистрация: 11.11.2013
Сообщений: 6
Восклицание удаление из текстового файла!

есть файл
есть записи
типа: № | товар | кол-ство | дата | цена
в файле данные выводятся построчно, например:

Цитата:
1111
масло
20
11.11.13
20


мне нужно удалить запись по номеру
как сделать что бы удалялась вся запись, а не только номер?
andrewsereda вне форума Ответить с цитированием
Старый 11.11.2013, 20:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Только переписав файл без нее. Т.е.
1) Считываешь строку
2) Если она не равна 1111 записываешь в другой файл
3) Если равна то 4-е раза считываешь из файла, и идешь на пункт 1
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.11.2013, 21:05   #3
andrewsereda
 
Регистрация: 11.11.2013
Сообщений: 6
По умолчанию

может есть исходник какой-то?
andrewsereda вне форума Ответить с цитированием
Старый 11.11.2013, 21:54   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ты можешь показать код считывания данных из файла, или даже это для тебя недосягаемо? Спрашиваю потому что я бы сделал тупо:
Код:
With TStringList.Create do begin
 LoadFromFile('файл');
 i:=IndexOf('1111');
 if i<>-1 then begin
  Delete(i);Delete(i);Delete(i);Delete(i);Delete(i);
 end;
 SaveToFile('файл');
 Free;
end;
Но будь я твоим преподавателем, у меня бы появилось после такого кода пара вопросов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.11.2013, 22:16   #5
andrewsereda
 
Регистрация: 11.11.2013
Сообщений: 6
По умолчанию

вот
program storage1;
Код:
uses crt;
var f : text;
    i:integer;
    name, date: string;
    price, nak, kst : integer;
begin
  clrscr;
  write('Склад №1');writeln;
  writeln('--------------------------------------------------------------');
  writeln('  №  |    Товар    |  Кол-ство  |   Дата поставки   |  Цена  ');
  writeln('--------------------------------------------------------------');
     assign(f,'storage1.txt');
  reset(f);
 while not eof(f) do begin
   readln(f,nak);
   write(nak:5);
   readln(f,name);
   write(name:14);
   readln(f,kst);
   write(kst:13);
   read(f,date);
   write(date:16);
   readln(f,price);
   write(price:12);
   writeln;
end;
  close(f);
  readln;
end.

Последний раз редактировалось Stilet; 11.11.2013 в 22:44.
andrewsereda вне форума Ответить с цитированием
Старый 11.11.2013, 22:49   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ясно. Если не ошибаюсь:
Код:
uses crt;
var f : text;
    i:integer;
    name, date: string;
    price, nak, kst : integer;
begin
  clrscr;
  write('Склад №1');writeln;
  writeln('--------------------------------------------------------------');
  writeln('  №  |    Товар    |  Кол-ство  |   Дата поставки   |  Цена  ');
  writeln('--------------------------------------------------------------');
  assign(f,'storage1.txt');  reset(f);
  assign(f,'storage2.txt');  rewrite(f2);
 while not eof(f) do begin
   readln(f,nak);   write(nak:5); if nak<>'1111' then writeln(f2,nak:5);
   readln(f,name);   write(name:14); if nak<>'1111' then writeln(f2,name:5);
   readln(f,kst);   write(kst:13); if nak<>'1111' then writeln(f2,kst:5);
   read(f,date);   write(date:16); if nak<>'1111' then writeln(f2,date:5);
   readln(f,price);   write(price:12); if nak<>'1111' then writeln(f2,price:5);
   writeln;
   
end;
  close(f);
  rename(f2,'storage1.txt');
  close(f2);
  readln;
end.
А вообще реализация печальная печальная... Если интересует мое мнение конечно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.11.2013, 22:59   #7
andrewsereda
 
Регистрация: 11.11.2013
Сообщений: 6
По умолчанию

печальная?
предоставь свою версию, а я посмотрю на "гуру"...
andrewsereda вне форума Ответить с цитированием
Старый 12.11.2013, 00:39   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Посмотреть, говоришь? Что-ж это можно устроить.
Знакомься: http://www.programmersforum.ru/showthread.php?t=17165
Наш гуру Alter.
Вполне неплохое решение. Не единственное, но схема достаточно надежна, с проверками на ошибки и исключения.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2013, 01:33   #9
andrewsereda
 
Регистрация: 11.11.2013
Сообщений: 6
По умолчанию

это с типизированными файлами
а с текстовыми?
andrewsereda вне форума Ответить с цитированием
Старый 12.11.2013, 01:44   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А с текстовыми читай про XML, CSV, INI. А то что у тебя строка определяет как поле так и запись одновременно чревато совершенно плохими последствиями.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка текстового файла Dimabara Помощь студентам 0 19.11.2012 15:09
Чтение из текстового файла Form_13 Помощь студентам 0 01.11.2011 03:16
Из текстового файла в бд!!! Poltev86 БД в Delphi 5 16.05.2010 23:18
Считывание из текстового файла PlumBoom Общие вопросы C/C++ 8 21.03.2010 20:41