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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2014, 16:16   #11
Thabian
Пользователь
 
Регистрация: 02.04.2014
Сообщений: 12
По умолчанию

С первым способом через доп. файл все получилось.
Спасибо!
Thabian вне форума Ответить с цитированием
Старый 07.04.2014, 16:23   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Thabian Посмотреть сообщение
Пробую второй способ с массивом.

Код:
   ....
Почему-то при таком чтении в массив, сохраняются строки через одну.
ни в коем разе!!
Вы смешали чтение и удаление!!!

попробуйте так:

Код:
 writeln ('What delete?'); read (a);
 i:=0;
 while not eof (d) do begin
        read(d, z);
        if z.marka<>a then begin
            i:=i+1;
            mas[i] := z;
        end;
   end;
   Close(d);

   {перезапишем файл}
   Rewrite(d);
   for j:=1 to i do Write(d, mas[i]);
   Close(d);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.04.2014, 16:24   #13
Thabian
Пользователь
 
Регистрация: 02.04.2014
Сообщений: 12
По умолчанию

А можно все-таки узнать, где ошибка при использовании seek? (код в сообщении #6)
Thabian вне форума Ответить с цитированием
Старый 07.04.2014, 16:31   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Thabian Посмотреть сообщение
А можно все-таки узнать, где ошибка при использовании seek? (код в сообщении #6)
о! Там много ошибок.
во-первых, вы забыли проиницилизовать переменную i

во-вторых, логика порочна.

Цитата:
Код:
while not eof (d) do begin
        read (d,z); // вы прочитали переменную (указатель в файле передвинулся на следующую запись.
        if a = z.marka then begin   // если марка совпадает
            seek(d,i+1);  // вы устанавливаете указатель на вторую запись в файле (ну, это мы считаем, что у нас i равно нулю
            read(d,z); // читаем значение второй записи из файла
            seek(d,i);  // устанавливаем указатель на начало файла
            write(d,z);  // записываем вторую запись на место первой
            end;
        seek(d,filesize(d)-1); // установили указатель на конец файла
        write (d,z);  // записали очередную запись в конец файла
        end;
    close(d);
это скорее странное перемешивание исходного файла, а не удаление нужной записи!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод данных из базы limon142 PHP 13 28.04.2014 15:09
Вывод из Базы данных GoodNight PHP 2 04.04.2014 09:02
Вывод данных из базы в матрицу Anya2012 PHP 5 29.11.2012 14:52
Вывод изображений из базы данных Princesse PHP 5 12.01.2010 10:09