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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2012, 12:58   #1
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию Чтение из файла

вот процедура заполнения массива из файла
Код:
type
  TDetails = record
    code: string[10];
    shop_code: string[11];
    area_code: string[11];
    prod_count: integer;
    acept_count: integer;
  end;

type
  Arr_Det = array of TDetails;

procedure fill(var mas: Arr_Det; path: string);
var
  f: text;
  count: integer;
begin
  assign(f, path);
  reset(f);
  while not eof(f) do
  begin
    count := length(mas) + 1;
    setlength(mas, count);
    with mas[count - 1] do
      readln(f, code, shop_code, area_code, prod_count, acept_count);    
  end;
  close(f);
end;
на pascalABC. net компилируется, онлайн компилятор тоже без проблем... а вот Turbo Pascal отказывается понимать
если length(mas) можно заменить на high(mas), то для setlength() и array of <тип данных> замены не нашел
unbanned вне форума Ответить с цитированием
Старый 03.03.2012, 18:47   #2
Ivanhoe
 
Регистрация: 02.03.2012
Сообщений: 4
По умолчанию

на правах совета. Автор не отвечает за его валидность

массив должен иметь строго определённое число элементов
type
Arr_Det = array of TDetails; {не годится}

меняем на
Arr_Det = array[1..100] of TDetails; {массив на 100 записей}
следующая ошибка
count := length(mas) + 1; {length(mas) - как я понял количество элементарных
записей в массиве} надо заменить на присваивание
count := число элементов в mas +1 {попробуй 101}

раз в твоём pascalABC. net размер массива TDetails не устанавливается, то надо думать что setlength(mas, count); устанавливает длину
массива mas и на каждом этапе чтения файла увеличивает это значение на 1.
Далее осталось поменять
Ivanhoe вне форума Ответить с цитированием
Старый 03.03.2012, 18:48   #3
Ivanhoe
 
Регистрация: 02.03.2012
Сообщений: 4
По умолчанию

на правах совета. Автор не отвечает за его валидность

массив должен иметь строго определённое число элементов
type
Arr_Det = array of TDetails; {не годится}

меняем на
Arr_Det = array[1..100] of TDetails; {массив на 100 записей}
следующая ошибка
count := length(mas) + 1; {length(mas) - как я понял количество элементарных
записей в массиве} надо заменить на присваивание
count := число элементов в mas +1 {попробуй 101}

раз в твоём pascalABC. net размер массива TDetails не устанавливается, то надо думать что setlength(mas, count); устанавливает длину
массива mas и на каждом этапе чтения файла увеличивает это значение на 1.
Далее осталось поменять
Ivanhoe вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из файла pinkiller Общие вопросы C/C++ 3 07.01.2012 07:48
С++ Чтение из файла sir.andrey Помощь студентам 9 15.10.2010 16:00
чтение из файла maxandmin Общие вопросы C/C++ 1 21.07.2010 17:40
Чтение из файла DimOn4Ik PHP 1 02.01.2010 22:41
Чтение файла [Smarik] Помощь студентам 8 28.04.2008 22:15