Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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


Ответ
 
Опции темы
Старый 02.03.2010, 18:19   #1
diliana
Форумчанин
 
Аватар для diliana
 
Регистрация: 23.05.2009
Сообщений: 119
Вопрос Загрузка данных из текстового файла

приветик всем!

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

Код:
{сохранение в файл}
Procedure Save;
var
  temp: TItem;
  F: text;
begin
  Assign(F, FName);
  reset(F);
  write(F,  nomer ); // записали номер  очереди
  writeln (F); //переход на новую строку
  temp := First;
  while temp <> nil do //проход по очереди
    begin
     write(F, temp.MyString, temp.MyInteg); // записали строку и число
     writeln(F);// переход на новую строку
     temp := temp.next; // проходим до конца
    end;
   Close (F);
    writeln;
end;
В текстовый файл это пишется так

100
number55
number22
number99

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

Последний раз редактировалось diliana; 02.03.2010 в 18:22.
diliana вне форума Ответить с цитированием
Старый 02.03.2010, 18:27   #2
Codemaster_N1
Новичок
Джуниор
 
Регистрация: 01.03.2010
Сообщений: 18
По умолчанию

я бы советовал при записи в файл отделить значение переменной типа string от значения переменной типа integer чем нибудь (пробелом, например, но лучше - переводом строки), так будет проще считывать

Последний раз редактировалось Codemaster_N1; 02.03.2010 в 18:30.
Codemaster_N1 вне форума Ответить с цитированием
Старый 02.03.2010, 18:34   #3
diliana
Форумчанин
 
Аватар для diliana
 
Регистрация: 23.05.2009
Сообщений: 119
По умолчанию

Цитата:
Сообщение от Codemaster_N1 Посмотреть сообщение
я бы советовал при записи в файл отделить значение переменной типа string от значения переменной типа integer чем нибудь (пробелом, например, но лучше - переводом строки), так будет проще считывать
ну это не проблема, это легко можно сделать.
а дальше, как это считывать?
diliana вне форума Ответить с цитированием
Старый 02.03.2010, 18:38   #4
Codemaster_N1
Новичок
Джуниор
 
Регистрация: 01.03.2010
Сообщений: 18
По умолчанию

в файл только одна очередь записывается?
ваша процедура Save сохраняет, судя по всему, только одну очередь.
Если вы ее поочередно вызываете для всех очередей и хотите писать в один файл, то нужно вместо Reset(F) писать Append(F). Иначе вы сможете записать в один файл только одну очередь.

Последний раз редактировалось Codemaster_N1; 02.03.2010 в 18:42.
Codemaster_N1 вне форума Ответить с цитированием
Старый 02.03.2010, 18:52   #5
diliana
Форумчанин
 
Аватар для diliana
 
Регистрация: 23.05.2009
Сообщений: 119
По умолчанию

Цитата:
Сообщение от Codemaster_N1 Посмотреть сообщение
в файл только одна очередь записывается?
ваша процедура Save сохраняет, судя по всему, только одну очередь.
Если вы ее поочередно вызываете для всех очередей и хотите писать в один файл, то нужно вместо Reset(F) писать Append(F). Иначе вы сможете записать в один файл только одну очередь.
у меня много очередей (хранятся в динам. списке), я прохожу циклом и они все записываются в один файл (я выложила кусок кода для примера).
С записью очередей в файл - проблемы нет!
Вы лучше подскажите как считать записанные данные.
diliana вне форума Ответить с цитированием
Старый 02.03.2010, 19:02   #6
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Циклом
Цитата:
while not eof(F) do
бежите по файлу и считываете строку целиком. Дальше смотрите, если в ней есть разделитель MyString и MyInteg (пробел не самый хороший вариант), значит это элемент списка, если нет - значит идентификатор списка
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 02.03.2010, 19:10   #7
Codemaster_N1
Новичок
Джуниор
 
Регистрация: 01.03.2010
Сообщений: 18
По умолчанию

вот аналогично вашей Save, для считывания одной очереди, при этом String от Integer переводом строки отличаются:
Код:
procedure _Read_(var Temp: TItem);
var
  F: Text;
  prev, head: TItem;
begin
  Assign(F, 'base.txt');
  Rewrite(F);
  ReadLn(Num);
  New(head);
  Temp := head;
  while not EOF(F) do
  begin
    prev := Temp;
    New(Temp);
    Temp^.next := nil;
    prev^.next := Temp;
    ReadLn(Temp^.MyString);
    ReadLn(Temp^.MyInteger);
  end;
  Temp := head^.next;
  Dispose(head);
end;
P. S. не компилировал =)

Последний раз редактировалось Codemaster_N1; 02.03.2010 в 19:27.
Codemaster_N1 вне форума Ответить с цитированием
Старый 02.03.2010, 19:17   #8
diliana
Форумчанин
 
Аватар для diliana
 
Регистрация: 23.05.2009
Сообщений: 119
По умолчанию

Greblin

да я пробовала таким циклом
Код:
while not eof(F) do 
 begin 
    while (Not Eoln(F))do
  begin
...
только у меня ничего не получилось (я уж прежде чем написать сюда, сама пытаюсь сначала разобраться!).
Теоретически все это я представляю, но правильно вот сделать не могу

Последний раз редактировалось diliana; 02.03.2010 в 19:19.
diliana вне форума Ответить с цитированием
Старый 02.03.2010, 19:28   #9
Codemaster_N1
Новичок
Джуниор
 
Регистрация: 01.03.2010
Сообщений: 18
По умолчанию

Так может скажете как у вас эти очереди хранятся?
если у вас их много, то должно быть что-то типа массива указателей, где индекс массива - номер очереди...
И я всё-таки не понимаю, как вы процедурой Save несколько очередей в файл записываете...
Codemaster_N1 вне форума Ответить с цитированием
Старый 02.03.2010, 19:40   #10
diliana
Форумчанин
 
Аватар для diliana
 
Регистрация: 23.05.2009
Сообщений: 119
По умолчанию

Codemaster_N1
Какой вы настойчивый
очереди хранятся в списке.
список прохожу циклом и сохраняю очереди.
diliana вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка данных из файла JIK Помощь студентам 4 19.05.2013 11:17
считывание данных из текстового файла Olejik Общие вопросы по Java, Java SE, Kotlin 3 03.10.2009 19:40
Загрузка данных из типизированного файла diliana Паскаль, Turbo Pascal, PascalABC.NET 33 30.07.2009 13:59
Проблема такова: язык:Delphi7; сохранения файла; загрузка файла в String Grid lightdevil Общие вопросы Delphi 3 06.03.2009 23:10
загрузка данных из тестового файла gribog БД в Delphi 16 19.07.2007 14:06


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS