Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Fylhtqman
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 18
1

Удаление данных из типизированного файла по условию

14.06.2015, 04:09. Просмотров 862. Ответов 20
Метки нет (Все метки)

Всем привет!Такой вопрос, мне нужно удалять данные за промежуток времени выбранный в датапикерах,так вот, код написал..переписываем данные(которые не нужно удалять) в новый файл, потом перекидываем их обратно но уже удалив те которые не прошли по условию, удаляет вообще всё, в чём ошибка, знает кто?заранее спасибо!
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
procedure TForm12.BitBtn1Click(Sender: TObject);
begin
if (datetimepicker1.date>datetimepicker2.Date) then begin Showmessage('ГЌГҐ ГўГҐГ°Г*Г*Гї Г¤Г*ГІГ*!');
exit;
end
else
AssignFile(f3,'333.dat');
Rewrite(f3);
Reset(f1);
While not Eof(f1) do
begin
read(f1,d);
if (d.datareg<datetimepicker1.date) and (d.datareg>datetimepicker2.date)  then
begin
o.predmetdg:=d.predmetdg;
o.sernom:=d.sernom;
o.podradtch:=d.podradtch;
o.regnomer:=d.regnomer;
o.datareg:=d.datareg;
o.srnach:=d.srnach;
o.srkonc:=d.srkonc;
o.stoimost:=d.stoimost;
o.stadiadg:=d.stadiadg;
write(f3,o);
end;
end;
CloseFile(f1);
CloseFile(f3);
Rewrite(f1);
Reset(f3);
While not Eof(f3) do
begin
read(f3,o);
begin
d.predmetdg:=o.predmetdg;
d.sernom:=o.sernom;
d.podradtch:=o.podradtch;
d.regnomer:=o.regnomer;
d.datareg:=o.datareg;
d.srnach:=o.srnach;
d.srkonc:=o.srkonc;
d.stoimost:=o.stoimost;
d.stadiadg:=o.stadiadg;
write(f1,d);
end;
end;
CloseFile(f3);
closefile(f1);
deletefile('333.dat');
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2015, 04:09
Ответы с готовыми решениями:

Удаление из типизированного файла по условию
Надо сделать удаление по условию, то есть несколько записей сразу. Ошибку...

Удаление из типизированного файла
Уважаемые, помогите разобраться. При удалении записи из типизированного файла...

Удаление из типизированного файла
Привет, Ребятки!))) Столкнулся вот с какой проблемой!( Есть процедура...

Удаление записи из типизированного файла (StringGrid)
Подскажите, пожалуйста, как удалить запись по номеру? Сам пробовал, но после...

Удаление строки из типизированного файла в StringGrid-е
Здравствуйте. Подскажите пожалуйста, где ошибка... Процедура должна удалить...

20
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
14.06.2015, 12:54 2
не видно описания типов, но если d и o одного типа, то нет никакого смысла в переписвании отдельных полей
вместо этого достаточно написать
Delphi
1
 o := d;
но и это делать нет смысла.
достаточно:
Delphi
1
2
3
4
5
6
7
8
9
AssignFile(f3,'333.dat');
Rewrite(f3);
Reset(f1);
While not Eof(f1) do
begin
  read(f1,d);
  if (d.datareg<datetimepicker1.date) and (d.datareg>datetimepicker2.date)  then
      write(f3, d);
end;
ну и ещё. после того, как ты создал новый файл с выбранным содержимым, то старый файл можно просто удалить,
но временный переименовать в то имя, что было у исходного файла.
Кстати, исходный файл можно (для надёжности и безопасности) не удалять, а переименовать во сохранённую копию (в .BAK, для примера).
0
Fylhtqman
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 18
14.06.2015, 15:39  [ТС] 3
Да, они одного типа. Спасибо, буду пробовать.
0
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
14.06.2015, 17:03 4
Цитата Сообщение от Fylhtqman Посмотреть сообщение
Спасибо, буду пробовать
ну, как говорится - "желаю успеха"!

если вопросы будут, ты спрашивай!
0
Fylhtqman
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 18
14.06.2015, 17:06  [ТС] 5
Получилось что-то вроде этого..
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (datetimepicker1.date>datetimepicker2.Date) then begin Showmessage('ГЌГҐ ГўГҐГ°Г*Г*Гї Г¤Г*ГІГ*!');
exit;
end
else
AssignFile(f3,'333.dat');
Rewrite(f3);
Reset(f1);
While not Eof(f1) do
begin
read(f1,d);
if (d.datareg<datetimepicker1.date) and (d.datareg>datetimepicker2.date)  then
write(f3,o);
end;
CloseFile(f1);
CloseFile(f3);
DeleteFile(name1);
Rename(f3, name1);
Всё равно всё удаляется

Добавлено через 2 минуты
Меня всегда смущала работа с датапикерами, что-то с условиями не клеится всегда, может в нём дело?
0
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
14.06.2015, 17:16 6
сложи исходники проекта (по минимуму unit12 (или где у тебя TForm12 описана)) в архив. и прикрепи архив к сообщению на форуме.
да. туда же положи в архив файл с данными 333.dat
посмотрю, что там у тебя не так..
0
Fylhtqman
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 18
14.06.2015, 17:28  [ТС] 7
Все файлы создаются программно, по-этому не могу их скинуть. Вот архив с 12 юнитом и с модулем где все переменные
0
Вложения
Тип файла: rar ррр.rar (5.6 Кб, 2 просмотров)
Fylhtqman
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 18
14.06.2015, 17:43  [ТС] 8
Вот файл с тремя записями, из него удаляем
0
Вложения
Тип файла: rar twrt.rar (265 байт, 2 просмотров)
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
14.06.2015, 18:20 9
у тебя в файле Unit12.pas в строке 54 такое написано:
Delphi
1
if (d.datareg<DateToStrdatetimepicker1.date) and (d.datareg>datetimepicker2.date)  then
"DateToStrdatetimepicker1" это что за ужас?! Ошибок при компиляции нет?!

Добавлено через 5 минут
ну и условие однозначно неверное.
Ни одна дата не может быть ОДНОВРЕМЕННО меньше date1 И (AND) больше date2.date
0
Fylhtqman
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 18
14.06.2015, 18:22  [ТС] 10
Это я затирал, видимо не дотёр)
хм, как тогда быть с условием?
0
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
14.06.2015, 18:31 11
рекомендую заменить эту строчку на такой код:
Delphi
1
    if (trunc(d.datareg)<trunc(datetimepicker1.date)) or (trunc(d.datareg)>trunc(datetimepicker2.date))  then
Добавлено через 1 минуту
предвосхищаю следующий вопрос - trunc() для переменной типа TDateTime возвращает целую часть = т.е. отсекает часы/минуты/секунды/миллисекунды...
0
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
14.06.2015, 18:33 12
и заметь, у тебя в файле тоже присутствуют часы/минуты:
Удаление данных из типизированного файла по условию
0
Fylhtqman
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 18
14.06.2015, 18:38  [ТС] 13
хм, спасибо, понял. по всей видимости проблема в этих часах/минутах/секундах?
0
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
14.06.2015, 18:40 14
нет, проблема прежде всего в неверном логическом условии!!!
заметь, я заменил AND на OR

а присутствие времени даст себя знать на граничных датах...
в общем случае, это не так критично.
0
Fylhtqman
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 18
14.06.2015, 18:56  [ТС] 15
Теперь вот что получается..
У меня две записи,
Удаление данных из типизированного файла по условию
удаляю ту которая 7 июня сделана.Название: Снимокппппп.PNG
Просмотров: 14

Размер: 7.4 Кб
И в итоге получается черт - те что
Удаление данных из типизированного файла по условию
0
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
14.06.2015, 19:32 16
ох.. кто же знает, что ты там начудил!
давай архив с исходниками проекта!
0
Fylhtqman
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 18
14.06.2015, 19:40  [ТС] 17
Для начала работы в пункте файл/создать или открыть
Логин/пасс admin/admin..
Я уже наверно надоел тебе?
Вложение 542668
0
Fylhtqman
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 18
14.06.2015, 19:41  [ТС] 18
Что-то видать криво залил в предыдущем посте
0
Вложения
Тип файла: rar практика.rar (556.0 Кб, 3 просмотров)
Fylhtqman
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 18
15.06.2015, 00:32  [ТС] 19
В общем спасибо тебе за советы, разобрался, всё работает)
0
Sergio Leone
15.06.2015, 00:37     Удаление данных из типизированного файла по условию
  #20

Не по теме:

да не за что! Молодец, что сам разобрался!
Ты прости, я не мог ответить, занят был, комп курочил...

0
15.06.2015, 00:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2015, 00:37
Привет! Вот еще темы с ответами:

Удаление и редактирование записи из типизированного файла
Здравствуйте! Я хотел бы узнать, возможно ли удалить запись из типизированного...

Вывод данных из типизированного файла
Здравствуйте! У меня такой вопрос. Имеется типизированный файл след. стр-ры:...

Сортировка данных типизированного файла
здравствуй... хотелось бы узнать как осуществить событие.. выбор даты...и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru