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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2010, 18:22   #1
sunman
 
Регистрация: 08.03.2010
Сообщений: 8
По умолчанию Списки

Добрый вечер уважаемые.
Не подскажите разумно ли данное действие к текстовым файлам?
Код:
type
TIgr=record
  name : string[25];
  cost : string[8];
  age : string[3];
  amount : string[8];
end;
PList = ^TList;
TList = record
  Data : TIgr;
  Next,Prev : PList;
end;

procedure LoadRec(R:TIgr);
begin
AssignFile(f,'D:\Kurs\Igr.txt');
while not Eof(F) do
begin
  Read(F,R.Name);
  Read(F,R.cost);
  Read(F,R.age);
  Read(F,R.amount);
  AddRec(R);
end;
end;

procedure AddRec(R:TIgr);
begin
  if Head = Nil then
  begin
    New(Cur);
    Head := Cur;
    end  else
  begin
    New(Cur^.Next);
    Cur := Cur^.Next;
  end;
  Cur^.Next:=Nil;
  Cur^.Data.Name:=R.Name;
  Cur^.Data.cost:=R.cost;
  Cur^.Data.age:=R.age;
  Cur^.Data.amount:=R.amount;
end;
Код мой (правда написан все же с помощью одного очень доброго человека), но до этого был типизированный файл и в нем (если я не ошибаюсь в терминах) хранятся компоненты, т.е. запись которую можно легко опознать. В общем в чем проблема.. как правильно прочитать файл, чтобы не получилось так, что половина одной записи и половина другой вывелась (понимаю, что для текстовика признак конца строки EOLN, но у меня сейчас только идея читать по 4 строки)? Плюс мне нужно, допустим первую запись выводить в поля(формы) едит(ну с этим я думаю сам разберусь, но если есть нюансы, то был бы благодарен за их описание) Писать в текстовик, одно из требований курсовой.

И если есть какая нибудь инфа по тому как перемещаться по списку, то очень прошу поделиться.

Последний раз редактировалось sunman; 17.05.2010 в 18:33.
sunman вне форума Ответить с цитированием
Старый 17.05.2010, 18:51   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Ну если файл типизированный, то считывай структурами!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 17.05.2010, 18:55   #3
sunman
 
Регистрация: 08.03.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
Ну если файл типизированный, то считывай структурами!
Если бы был типизированный то хлопот не было бы файл текстовый.
забыл добавить описание:
var
Head,cur:PList; f:Text; R:TIgr;

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

Последний раз редактировалось sunman; 17.05.2010 в 18:59.
sunman вне форума Ответить с цитированием
Старый 17.05.2010, 19:03   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Я чтоб не мучиться с текстовиками на курсовой обошёл эту проблему путём создания главного файла базы и его зависимого текстового.
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 18.05.2010, 12:55   #5
sunman
 
Регистрация: 08.03.2010
Сообщений: 8
По умолчанию

Все еще остается вопрос, как организовать перемещение по двусвязному списку с помощью кнопок TButton?
sunman вне форума Ответить с цитированием
Старый 18.05.2010, 13:56   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну вот смотри, предположим Cur указыват на элемент списка
Тогда по нажатию на кнопку "вперед"
Код:
 if cur^.next<>nil then cur:=cur^.Next;
А "назад"
Код:
 if cur^.Prev<>nil then cur:=cur^.Prev;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.05.2010, 19:03   #7
sunman
 
Регистрация: 08.03.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну вот смотри, предположим Cur указыват на элемент списка
Тогда по нажатию на кнопку "вперед"
Код:
 if cur^.next<>nil then cur:=cur^.Next;
А "назад"
Код:
 if cur^.Prev<>nil then cur:=cur^.Prev;
Отлично большое спасибо)
sunman вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Списки Walter Помощь студентам 1 06.12.2009 16:03
(C++) списки Troi666 Помощь студентам 6 13.05.2009 00:47
Списки Bremlin Microsoft Office Excel 10 04.11.2008 15:13
На списки... Neznau Паскаль, Turbo Pascal, PascalABC.NET 1 02.07.2008 19:49