Здравствуйте, уважаемые эксперты! Помогите найти ошибку в программе, при записи данных из коллекции в файл выдается ошибка, подскажите, как исправить. Заранее благодарен!!!!
Приветствую Вас, Fess! Элементарно. У тебя в подпрограмме PrintKnigi вводится локальная файловая переменная f. После чего ты пытаешься записать с ее помощью, но она у тебя ни с чем не связана. Тебе вообще в этой процедуре не нужна локальная переменная. Так как у тебя описана локальная процедура PrintKnigi в процедуре PrintKnigiList, то все переменные из процедуры PrintKnigiList являются глобальными для процедуры PrintKnigi. В том числе и переменная f. Ответ отправлен: 18.05.2003, 23:10 Отправитель: Ayl Отвечает BOLT
Доброе время суток, Fess! У меня нет компилятора Delphi.Скажи название ошибки и где курсор устанавливается, тогда помогу чем смогу.
Ответ отправлен: 19.05.2003, 17:50 Отправитель: BOLT Отвечает _vt
Здравствуйте, Fess! В конструкторе Tcol.init вместо New(...) напиши inherited Init(3,1){к примеру} и удали var f:text из процедуры PrintKnigi, и всё!!! p.s. А названия книг я так и не расшифровал... :(
Ответ отправлен: 19.05.2003, 02:10 Отправитель: _vt Отвечает Bill
Доброе время суток, Fess! Да..., проблем при чтении две - кодировки и длинные строки. Из-за кодировки не уверен, что правильно поступаю - я нажимаю F3 (cmOpen). Так? Сначала о недостатках: 1) Напрасно двум различным переменным типа Text присвоили одинаковые имена. Это не ошибка, но Вам труднее будет разобраться, с какой работаете. Ошибки: 1) У меня ошибка была Error 202: Stack overflow error. и естественно - вот рекурентный вызов constructor TCol.Init(KL:PCol); begin KL:=New(PCol,Init(nil)); из констрактора Вы вызываете этот же констрактор. Достаточно было Inherited Init(10, 5); Первый параметр - начальный размер коллекции, второй - на сколько увеличиать, когда будет достигнута граница. Следовательно, в Вашем случае конструктору не нужны параметры вообще. 2) Далее, удали в этом констракторе . Он и так знает, что
о каком Insert идет речь. 3) Теперь ошибки в procedure TMyAppl.PrintKnigiList; Их много. 3-1) Первая большая связана с моим первым замечанием (то есть недостаток привел к ошибке!): У вас две переменных f типа Text (!!!!!!!!...). Одна в procedure TMyAppl.PrintKnigiList;, а вторая в procedure PrintKnigi(P:PKnigi);far; Но это две разные переменные! Только названы одинаково. Следовательно, обязательно появление ошибки: Error 105: File not open for output. Чтобы убедиться, пройдитесь отладчиком с показом f (CTRL+F7) и F7/F8.
Ответ отправлен: 19.05.2003, 10:20 Отправитель: Bill
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.