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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2009, 01:05   #11
diliana
Форумчанин
 
Аватар для diliana
 
Регистрация: 24.05.2009
Сообщений: 119
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
чтобы всё заработало добавить VAR в описание процедуры Load:
Код:
Procedure Load (Var F:typlist; var curTmp ,HeadTmp: plist);
да. и ещё.
перед Close(f) в последнем элементе неплохо было бы добавить ссылочку на nil:
Код:
vsp^.next:=nil;
close(f);
Спасибо, спасибо!!!!!!
Да теперь я кажется поняла

ранее у меня были обьявлены формальние параметры, при которых механизм передачи был таков

Код:
Procedure Load (Var F:typlist;{параметр-переменная} curTmp ,HeadTmp: plist{параметр-значение});
Код:
{вызов программы}
Load (A, cura,HeadA);фактические параметры
Но ведь на самом деле фактические параметры переданные из основной программы в процедуру изменялись ею, поэтому надо было использовать параметры-переменные

Код:
Procedure  Load (Var F:typlist;{параметр-переменная} var curTmp ,HeadTmp: plist{параметр-переменная});
Код:
{вызов программы}
Load (A, cura,HeadA);фактические параметры
Во всяком случае я так поняла, если ничего опять не перепутала

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
diliana, я не знаю, сами ли Вы писали данную программу, если да - респект!
Писала-то сама, но благодаря подсказкам мастеров своего дела, как вы.
Спасибо большое-пребольшое.
diliana вне форума Ответить с цитированием
Старый 25.05.2009, 09:14   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

diliana - большое пожалуйста. всегда - Welcome!

ещё несколько замечаний.
1) параметер CurTMP в процедуре Load вообще не нужен.
там он не используется!
2) и вообще,по поводу параметров - на будущее, старайтесь не использовать формальные параметры с именами переменных, с которыми потом эти процедуры будут вызываться. С точки зрения компилятора (программы) всё будет в порядке, а вот Вам проще будет запутаться... особенного, если какой-то формальный параметер называется по одному, а в теле процедуры работа идёт с глобальными переменными.
поясню свою мысль на конкретном примере:
процедура Load:
Код:
Procedure Load (Var FLoad:typlist; var LocalHeadTmp: plist);
...
assign(fLoad,'mylist.dat');
...
reset(fLoad);
...
LocalHeadTmp:=vsp; // начало списка
3) Обработка ошибок - при вызове Load не проверяется наличие файла и то, что он может быть пустым!

4) при вызове Load было неплохо проверять и, если список не пустой, либо спрашивать пользователя - грузить или нет, либо - полностью ОЧИЩАТЬ старый список.
Иначе, при каждой загрузке списка, в случае уже имеющего списка будет происходить утечка памяти (каждый раз теряются ссылки на уже имеющийся список).
Или, как вариант, Load можно переписать, чтобы элементы добавлялись в конец уже имеющегося списка.

Удачи.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.05.2009, 12:22   #13
diliana
Форумчанин
 
Аватар для diliana
 
Регистрация: 24.05.2009
Сообщений: 119
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
1) параметер CurTMP в процедуре Load вообще не нужен.
там он не используется!
2) и вообще,по поводу параметров - на будущее, старайтесь не использовать формальные параметры с именами переменных, с которыми потом эти процедуры будут вызываться. С точки зрения компилятора (программы) всё будет в порядке, а вот Вам проще будет запутаться... особенного, если какой-то формальный параметер называется по одному, а в теле процедуры работа идёт с глобальными переменными.
Спасибо, я также сообразила как загрузить списки 1 и 2, надо-то просто изменить фактические параметры и подправить «инициализацию» файла...И все работает!

Код:
     assign(A,'mylist1.dat');
     Load (A,HeadA);

     assign(A,'mylist2.dat');
     Load (A,HeadB);
Спасибо вам, когда становиться понятно, программировать одно удовольствие

Последний раз редактировалось diliana; 25.05.2009 в 12:25.
diliana вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение и загрузка строк из listbox Anfall Компоненты Delphi 4 12.05.2009 13:52
Загрузка/сохранение рисунков Marsik Помощь студентам 20 20.11.2008 18:09
Загрузка и сохранение в файл rainbow Общие вопросы Delphi 16 27.09.2008 11:35
HRGN сохранение-загрузка? Comer_Jus Общие вопросы Delphi 5 21.05.2008 20:12
Сохранение и загрузка информации Slash Общие вопросы Delphi 9 04.02.2007 22:01