Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
28 / 29 / 5
Регистрация: 17.10.2009
Сообщений: 739
1

Запись двусвязного списка в файл и чтение

19.04.2013, 13:49. Показов 2911. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите как записывать в файл список а потом его считывать и уже работать с ним,весь форум обрыл не нашел
Delphi
1
2
3
4
5
6
7
8
9
10
11
  TPElem = ^TElem;
  TElem = record
    Data : integer;
    PNext : TPElem;
    PPrev : TPElem;
  end;
 
  TList = record
    PFirst : TPElem;
    PLast : TPElem;
  end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.04.2013, 13:49
Ответы с готовыми решениями:

Запись списка в файл и чтение из него
суть в чем. у меня в файле хранится должны login и пароль. Я первоначально создал файл. Он пустой....

Сохранение/чтение двусвязного списка в/из файла
Собственно в заголовке задача: сохранить двусвязный список в файл, считать из файла. Ввожу...

Запись элемента (в начало и в конец) и доступ к i-ому элементу двусвязного списка
Народ!Помогите написать прожку на С++ - двусвязный список из целочисленных элементов. Надо...

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

10
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
19.04.2013, 14:05 2
Покажи как ты это делаешь в случее с экранным вводом-выводом - будет и помощь по файловому вводу выводу.
0
28 / 29 / 5
Регистрация: 17.10.2009
Сообщений: 739
19.04.2013, 16:07  [ТС] 3
mss,
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure Ttable.writefile(filename:string; Edit1: TEdit;Edit2: TEdit;Edit3: TEdit;Edit4: TEdit;Edit5: TEdit);
begin
  if count=0 then
  begin
  AssignFile(SaveF,filename);
  if FileExists(filename) then
     reset(SaveF);
  end;
  inc(count);
  New(PElem);
PElem^.name:= Edit1.Text;
PElem^.id:=strtoint(Edit2.Text);
PElem^.ves:=strtofloat(Edit3.Text);
PElem^.count:=strtoint(Edit4.Text);
PElem^.namefirma:=Edit5.Text;
write(SaveF,Pelem^);вот тут не знаю как записывать 
showmessage('Çàïèñü óñïåøíî çàïèñàíà â ôàéë');
end;
вот так ввод ввожу при нажатии на кнопку сохранить в файл


Delphi
1
2
3
4
5
6
7
8
9
10
procedure Ttable.createfile(filename:string);  //ñîçäàíèå ôàéëà
var
SaveF:  File of Detal;
begin
    AssignFile(SaveF,filename);
    rewrite(SaveF);
    count:=0;
  List.PFirst := nil;
  List.PLast := nil;
end;
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
19.04.2013, 16:14 4
и ?
0
28 / 29 / 5
Регистрация: 17.10.2009
Сообщений: 739
19.04.2013, 16:21  [ТС] 5
хочу сохранить в файл список этот а потом считать в список что бы потом можно было с ним работать не могу понять как сделать запись и чтение

Добавлено через 50 секунд
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Type  //ñòðóêòóðà  äâóõñâÿçíîãî ñïèñêà
 
  TPElem = ^Detal;
  Detal = record
  name:string[10];
  id:integer;
  ves:real;
  count:integer;
  namefirma:string[10];
  PNext : TPElem;
  PPrev : TPElem;
  end;
 
  TList = record
    PFirst : TPElem;
    PLast : TPElem;
  end;
вот структура

Добавлено через 5 минут
вроде получилось
сделал вот так при записи
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
var
 count:integer;
  List : TList;
  PElemsave,PElemload : TPElem;
procedure Ttable.createfile(filename:string);  //ñîçäàíèå ôàéëà
var
SaveF:  File of Detal;
begin
    AssignFile(SaveF,filename);
    rewrite(SaveF);
    count:=0;
  List.PFirst := nil;
  List.PLast := nil;
end;
 
procedure Ttable.writefile(filename:string; Edit1: TEdit;Edit2: TEdit;Edit3: TEdit;Edit4: TEdit;Edit5: TEdit);
begin
  if count=0 then
  begin
  AssignFile(SaveF,filename);
  if FileExists(filename) then
     reset(SaveF);
  end;
  inc(count);
  New(PElemsave);
PElemsave^.name:= Edit1.Text;
PElemsave^.id:=strtoint(Edit2.Text);
PElemsave^.ves:=strtofloat(Edit3.Text);
PElemsave^.count:=strtoint(Edit4.Text);
PElemsave^.namefirma:=Edit5.Text;
write(SaveF,PElemsave^);
showmessage('Çàïèñü óñïåøíî çàïèñàíà â ôàéë');
end;
 
procedure Ttable.AddL(var aList : TList; const aPElem : TPElem);
begin
  if aPElem = nil then Exit;
 
  aPElem^.PNext := nil;
  aPElem^.PPrev := nil;
  if aList.PFirst = nil then begin
    aList.PFirst := aPElem;
    aList.PLast := aPElem;
  end else begin
    aList.PLast^.PNext := aPElem;
    aPElem^.PPrev := aList.PLast;
    aList.PLast := aPElem;
  end;
end;
 
 
procedure Ttable.readfile(filename:string;StringGrid1: TStringGrid);
var
i:integer;
begin
CloseFile(saveF);
AssignFile(SaveF,filename);
if FileExists(filename) then
reset(SaveF);
 
For i:=0 to StringGrid1.RowCount-1 do
 StringGrid1.Rows[i].Clear;
For i:=0 to StringGrid1.ColCount-1 do
 StringGrid1.Cols[i].Clear;
 StringGrid1.Cells[1,0]:='Íàèìäåò';
 StringGrid1.Cells[2,0]:='Èíäèâèäíîìåð';
 StringGrid1.Cells[3,0]:='Âåñ';
 StringGrid1.Cells[4,0]:='Êîëäåòàëè';
 StringGrid1.Cells[5,0]:='Ïîñòàâùèê';
 
for i:=0 to count-1 do
    begin
  new(PElemload);
 read(SaveF,PElemload^); //÷èòàåì çàïèñè èç ôàéëà â ìàññèâ
 AddL(List, PElemload);
 StringGrid1.Cells[0,i+1]:=inttostr(i+1);
 StringGrid1.Cells[1,i+1]:=PElemload^.name;
 StringGrid1.Cells[2,i+1]:=inttostr(PElemload^.id);
 StringGrid1.Cells[3,i+1]:=floattostr(PElemload^.ves);
 StringGrid1.Cells[4,i+1]:=inttostr(PElemload^.count);
 StringGrid1.Cells[5,i+1]:=PElemload^.namefirma;
 
 
    end;
 
 
 
 
end;
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
19.04.2013, 16:25 6
Цитата Сообщение от sergeu90 Посмотреть сообщение
читаем записи из файла в массив
Нет у тебя никакого массива.
0
28 / 29 / 5
Регистрация: 17.10.2009
Сообщений: 739
19.04.2013, 16:26  [ТС] 7
mss, это я забыл убрать я раньше через массив просто делал,сейчас просто надо через список,забыл удалить,а так идея правильная?
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
19.04.2013, 16:32 8
Неправильная.

Перед записью списка в файл он уже должен быть сформирован полностью
0
28 / 29 / 5
Регистрация: 17.10.2009
Сообщений: 739
19.04.2013, 16:33  [ТС] 9
mss, как понять сформирован полностью?не могу понять обьясните пожалуйста
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
19.04.2013, 16:47 10
Без дословной формулировки задания разговор лишен смысла.
0
28 / 29 / 5
Регистрация: 17.10.2009
Сообщений: 739
19.04.2013, 20:55  [ТС] 11
задача решена кому надо вот проект
Вложения
Тип файла: rar лаба 6.rar (213.6 Кб, 68 просмотров)
1
19.04.2013, 20:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2013, 20:55
Помогаю со студенческими работами здесь

Открыть текстовый файл в необходимом режиме (на чтение, на чтение и запись, на добавление)
Открыть текстовый файл в необходимом режиме (на чтение, на чтение и запись, на добавление). (В...

Чтение файла, чтение названия папки где находится файл, запись данных на PHP
Допустим у нас есть структура с папками типа Large -> Vehicles -> Firetruck_0 В этой папке лежит...

Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран
1.Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран...

Напишите для двусвязного списка процедуры вставки и удаления перед заданным элементом списка
Напишите для двусвязного списка процедуры вставки и удаления перед заданным элементом списка...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru