Показать сообщение отдельно
  #5  
Старый 14.10.2013, 11:50
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

У тебя
Код:
    a:array[1..1000] of string;
    drl_string: array [1..1000] of string;
Используется не динамический массив.
Ошибка что выскакивает говорит - что выход за пределы ареса выделенной памяти, - доступ запрещен. (вычерный перевод).
Это бывает по нескольким причинам, в данном случае у тебя больше всего смахивает на то, что при цикле:
Код:
 for i := 1 to N do
      begin
        flag := true;
        for l := 1 to N_strok do
          if drl_string[l] = a[i] then
            flag := false;
        if flag = true then
        begin
          drl_string[N_strok] := a[i];
          N_strok := N_strok + 1;
        end;
      end;
      closefile(f); {закрываем исходный файл}
    end;
или при цикле:
Код:
 begin
          i := i + 1; { увеличиваем переменную на единицу }
          a[i] := st; { записываем строки в массив }
        end;
        until i = N; { условие для окончания циклы }
переменная i или N_strok становится больше чем 1000. т.е. программа пытается получить ячейку номером более 1000 из массива, а он состоит из 1000 ячеек (например drl_string[1001] или a[1001]) и в следствии - ошибка. Думаю суть понятна. Используй какой-нибудь примитивный showmessage(inttostr(i)) перед записью/считыванием в массив - что бы видеть какой номер ячейки используется. Более чем уверен, что 1001 будет.
__________________
Програмистами не рождаются, ими становятся!
Ответить с цитированием