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

Вывод структуры данных в текстовый файл

09.03.2017, 21:34. Просмотров 855. Ответов 10
Метки нет (Все метки)

Добрый вечер. Прошу помощи в поиске ошибки при выводе структуры данных в txt файл. В чем состоит проблема: есть массив структур данных вида: ФИО, Дата рождения и т.п.(задача состоит в написании некоторого подобия телефонного справочника и вывода в файл) . При попытке его вывода, в последнее(первое, если единственный человек) поле фамилии выводится строчка вида: syn syn syn syn и какой-то непонятный набор символов, в котором так же содержится имя файла, а в конце иногда дописывается нужное поле. Хотя на экране все отображается нормально. В чем может быть проблема? Код процедур вывода данных(не все т.к. много писанины, строение однотипное):
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure PrintFullName(FIO:FullName; BookName:string);overload;
var
  f:text;
  Su: string[20];
  Na: string[10];
  Pa: string[10];
begin
  assign(f,BookName);
  append(f);
 
  Su:=Copy(FIO.Surname,1,20);
  Na:=Copy(FIO.Name,1,10);
  Pa:=Copy(FIO.Parent,1,10);
 
     // writeln('Surname: ', Su);
      writeln(f, 'Surname: ', Su);
    //  writeln('Name: ', Na);
      writeln(f, 'Name: ',Na);
    //  writeln(f, 'Parent: ', Pa);
      writeln(f, 'Parent: ', Pa);
 
  close(f);
end;

Кликните здесь для просмотра всего текста
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
procedure PrintPerson(Man:Person; index:integer; BookName:string);overload;
var
  f:text;
  Mf:Person;
begin
  assign(f,BookName);
  append(f);
  writeln(f, 'Person #', index,': ');
  close(f);
  Mf:=Man;
  with Mf do
    begin
      PrintFullName(FIO, BookName);
      PrintBirthday(B_day, BookName);
      PrintEmail(Mail, BookName);
      append(f);
      writeln(f);
      writeln(f, 'Home phone: ');
      close(f);
      PrintPhone(H_phone, BookName);
      append(f);
      writeln(f, 'Home address: ');
      close(f);
      PrintAddress(H_addr, BookName);
      append(f);
      writeln(f);
      writeln(f, 'Work phone: ');
      close(f);
 
      PrintPhone(W_phone, BookName);
      append(f);
      writeln(f, 'Work adress: ');
      close(f);
      PrintAddress(W_addr, BookName);
      append(f);
      writeln(f);
      close(f);   
    end;

Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure PrintHandbook(HandBook:People; BookName:string);overload;
var
  i, number:integer;
 
begin
 
  number:=Length(HandBook);
  for i:=1 to number do
    begin
      PrintPerson(HandBook[i], i, BookName);
    end;
  end;
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure SaveFile(HandBook:People);
var
  path:string;
  Book:text;
begin
  writeln('Enter file name: ');
  readln(path);
  assign(Book, path);
  rewrite(Book);
  writeln(Book, 'Handbook "', path,'"');
  writeln(Book);
  close(Book);
  PrintHandbook(Handbook, path);


Сама структура принимается в динамический массив из функций. Я так понимаю, что это где то происходит выход из области памяти, выделяемой под массив? Не могу понять почему, подскажите пожалуйста. Весь код - во вложении.
0
Вложения
Тип файла: docx FullCode.docx (17.4 Кб, 2 просмотров)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2017, 21:34
Ответы с готовыми решениями:

Вывод данных в текстовый файл - где ошибка?
По идее, должен создаваться текстовый файл (задан через параметры программы), куда записался бы...

Тема: Работа с внешними файлами. Ввод, вывод данных в текстовый файл
Файл прикреплен к сообщению, нужно написать программу: данные из текстового файла необходимо с...

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

Вывод StringGrid в текстовый файл
Как вывести значения с StringGrid в текстовый файл, например матрицу 4x4 ???

Вывод матрицы в текстовый файл
Здравствуйте! Помогите, пожалуйста, красиво записать матрицу 2х2 в текстовый файл. Матрица...

10
northener
пофигист широкого профиля
3451 / 2346 / 636
Регистрация: 15.07.2013
Сообщений: 13,921
09.03.2017, 21:57 2
Delphi
1
for i:=0 to number-1 do
1
xWhoAmIx
14 / 0 / 0
Регистрация: 09.03.2014
Сообщений: 33
09.03.2017, 22:57  [ТС] 3
Увы, нумерация массивов в паскале с 1
0
northener
пофигист широкого профиля
3451 / 2346 / 636
Регистрация: 15.07.2013
Сообщений: 13,921
09.03.2017, 23:12 4
Да нууу! С каких это пор в Дельфи нумерация динамических массивов с 1?
1
GoodWeather
10.03.2017, 02:20
  #5

Не по теме:

Цитата Сообщение от xWhoAmIx Посмотреть сообщение
нумерация массивов в паскале с 1
С какого перепугу?
Цитата Сообщение от xWhoAmIx Посмотреть сообщение
Вложения
FullCode.docx
Ворд? Почему не проект? Просто весь текст нельзя было процитировать?
И какая конкретно у вас IDE?

0
northener
пофигист широкого профиля
3451 / 2346 / 636
Регистрация: 15.07.2013
Сообщений: 13,921
10.03.2017, 02:30 6
Цитата Сообщение от GoodWeather Посмотреть сообщение
И какая конкретно у вас IDE?
А какая бы не была! TurboPascal не знает
Pascal
1
  People = array of Person;
А в Дельфи и во FPC динамические массивы нумеруются с 0.

Не по теме:

Почему Ворд? Ну наверно именно в таком виде и надыбал ТС этот проект

1
GoodWeather
10.03.2017, 02:41
  #7

Не по теме:

У меня есть "Турбо Паскаль 7", тока что проверил - с нуля нумеруются, чего им не нумероваться с него...

0
Puporev
Модератор
56293 / 43099 / 29806
Регистрация: 18.05.2008
Сообщений: 102,390
10.03.2017, 08:03 8
Лучший ответ Сообщение было отмечено xWhoAmIx как решение

Решение

Цитата Сообщение от GoodWeather Посмотреть сообщение
с нуля нумеруются, чего им не нумероваться с него...
Да статистические массивы хоть от -1000, хоть от 10000
Pascal
1
2
var a:array[-1000..1000] of integer;
     b:[0..99] of integer;
но не динамические
Цитата Сообщение от northener Посмотреть сообщение
People = array of Person;
1
xWhoAmIx
14 / 0 / 0
Регистрация: 09.03.2014
Сообщений: 33
10.03.2017, 11:22  [ТС] 9
Мм, я идиот Попробовал сейчас переписать циклы, да все верно, с 0 и все заработало. Спасибо большое за ответы. Не знаю, после каких ресурсов я решил, что они все с 1 нумеруются.
И да, GoodWeather и northener: почему ворд? Потому что я не вижу в разрешенных файлах ".dpr", а txt не проходил по размеру... Почему не в сообщение? Даже под спойлер 1000 с копейками строк кода, я считаю, не стоит запихивать, к чему этот мусор в сообщении. А проект писался самостоятельно, увольте, иначе я бы сюда с вопросами не лез.
0
Lirrk
Заблокирован
10.03.2017, 13:17 10
xWhoAmIx
Чот я не понял. Вы ведёте базу данных в консоли?

Даже если и в консоли... Зачем вам нужны массивы, да ещё динамические?
0
xWhoAmIx
14 / 0 / 0
Регистрация: 09.03.2014
Сообщений: 33
10.03.2017, 13:54  [ТС] 11
Lirrk, чудеса обучения в университете. Необходимо использовать структуры, массивы и хранить именно в text файле. Поэтому динамические массивы, т.к. количество людей может быть теоретически любым. А консоль - граф.оболочку ещё не "давали".
0
10.03.2017, 13:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2017, 13:54

Вывод размеров файлов и папок в текстовый файл
Здравствуйте уважаемые посетители, есть такая проблема: есть папка, в ней 'F' количество файлов,...

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

Вывод данных из StringGrid в текстовый документ
Подскажите пожалуйста,имеется StringGrid состоящий из двух строк и 22 столбиков, как сделать...


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

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

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