|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.03.2011, 23:24 | #1 |
Новичок
Джуниор
Регистрация: 27.03.2011
Сообщений: 2
|
Delphi 7; Динамические переменные + вектор + строки.
Доброго времени суток. Помогите пожалуйста с заданием:
Одно из возможных представлений "длинного" (не более N строк) текста – это разделить его на строки и создать массив ссылок на эти строки (тип Tekst): Const N = 100; Type Ref = ^String; Tekst = array [1..N] of Ref; (если в тексте менее N строк, то последние элементы массива равны nil; в начале массива ссылок nil не должно быть). а) Напишите процедуру Input(f,T), считывающую строки из текстового файла f и помещающую их в кучу (адреса будут храниться в элементах вектора T типа Tekst). б) Напишите процедуру Output(T), выводящую на устройство Con текст Т построчно (т.е. выводит строки, которые расположены по адресам, хранящимся в элементах вектора Т). Свой вариант: program Class26_zad5; {$APPTYPE CONSOLE} uses SysUtils; const N = 5; Type Ref = ^String; Tekst = array [1..N] of Ref; procedure ImPut(var f:text; T : Tekst); var i : Integer; x : string; begin Reset(f); For i:=1 to n do if not Eof(f) then begin read(f,x); New(T[i]); if x='' then T[i]:=nil else T[i]^:=x; end; Close(f); end; procedure OutPut(T:Tekst); var i : Integer; begin for i:=1 to n do writeln(T[i]^); end; var f : Text; T : Tekst; begin Assign(f,'a.txt'); ImPut(f,T); OutPut(T); Readln; end. Вроде бы правильно, но программа не работает. (В файле a.txt несколько строк на латинице) При запуске моргает окно консоли, успел читануть что-то про адресса. SOS Заранее спасибо |
28.03.2011, 22:26 | #2 |
Новичок
Джуниор
Регистрация: 27.03.2011
Сообщений: 2
|
Ну не все сразу!!!
|
29.03.2011, 11:21 | #3 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
а ты остряк ))
возможно косяки есть в файле, но, думаю, главный косяк(из-за которого говорит про адреса) - вывод нила, переделай так Код:
и во всех процедурах, куда передаёшь Т надо указать var T: tekst , потому что надо передавать по ссылке (раз уж ты себе придумал процедуры которым надо указать, с чем работать), а не по значению(при этом вся работа производится над копией данных, и реально ты не увидишь ничего) и 2 тебе наставления: 1 юзай специальный тег code для вставки кода (он есть также и в расширенной правке сообщения, кнопочка #) 2 юзай пошаговую трассировку (в дельфи F7), проще будет видно, что и как выполняет прога и где мб ошибка Ну и велкам на форум )) Последний раз редактировалось phomm; 29.03.2011 в 11:32. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамические переменные | Likan15 | Помощь студентам | 1 | 24.05.2010 13:15 |
Динамические переменные | Desha | Помощь студентам | 8 | 07.09.2009 18:36 |
Динамические переменные.. | NSvirus | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 08.06.2009 22:56 |
Динамические переменные. Delphi | svobodys | Помощь студентам | 0 | 10.05.2009 16:06 |
Динамические переменные | BIS88 | Помощь студентам | 3 | 05.03.2009 17:35 |