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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2013, 15:25   #1
Jugger
Пользователь
 
Регистрация: 30.01.2008
Сообщений: 99
По умолчанию Invalid qualifier

Вот такой небольшой код, возникает ошибка Error 121 : Invalid qualifier в выделенной строчке
Подскажите в чем проблема
Гуглил, рылся, в чем дело не понял
Код:
program mememe;
  type
   vect=object
    private
     pInt : ^integer;
          i : integer;
     public
     constructor create;
     constructor initzero(const size: integer);
     constructor init(const value,size: integer);
     function get(a:integer):integer;
     destructor killall;
     procedure compare(a,b:integer);
 end;


constructor vect.create;
                    begin
                      {inherited create;  }
                       i := 1;
                          New (pInt);
                             pInt^ := i;
                          end;

constructor vect.initzero(const size: integer);
begin
                          GetMem(pInt, size * SizeOf(integer));
                             pInt^ := 0;
                    end;

constructor vect.init(const value,size: integer);
                    begin
                     { inherited Create;  }
                     GetMem(pInt, size * SizeOf(integer));
                             pInt^ := value;

                          end;

 procedure vect.compare(a,b:integer);
                            begin
                           if pInt^[a]>pInt^[b] then       /*<------------------------------------------------------------------------------------------*/
                            writeln('element nomer ',a,' bolse elementa nomer',b);
                              end;
function get(a:integer):integer;
       begin
       get:=pInt^[a];
       end;
 destructor vect.killall;
 begin
 freemem(pInt,i);
 end;

 var
 a:vect;
   begin


                                       end.
Jugger вне форума Ответить с цитированием
Старый 19.02.2013, 15:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

pInt : ^integer; подразумевается динамический массив?
Если да то наверное стоит описать его такInt : array[0..0] of integer;
Хотя вот не помню как в старом паскале это точно делалось.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.02.2013, 20:00   #3
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если да то наверное стоит описать его такInt : array[0..0] of integer;
Примерно так.. Ошибка - потому что он пытается индексировать не массив.
Можно как-нибудь так попробовать:
Код:
type myarr = array of integer;

...
   pInt : ^myarr;
...
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Старый 19.02.2013, 20:16   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Посмотрите на пример из книги Т.А. Павловская, Паскаль. Программирование на языке высокого уровня. стр.128 - книга есть в списке литературы. Стр. с описанием см. во вложении.


Вроде так ...
Вложения
Тип файла: rar pr.rar (54.8 Кб, 13 просмотров)
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 19.02.2013, 20:23   #5
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Посмотрите на пример из книги...
Собственно, то же, что и у меня.
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Старый 19.02.2013, 20:50   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
array of integer
Та вот я боюсь что в Турбопаскале еще не существовало открытых массивов... Память уже не та...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.02.2013, 20:55   #7
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Та вот я боюсь что в Турбопаскале еще не существовало открытых массивов... Память уже не та...
Вот насчет турбо паскаля я тоже не уверен.. У меня-то тут FPC, я на нем и проверил.
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Старый 19.02.2013, 21:25   #8
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Приведённый пример, с явным описанием размера массива - для TP.



Вроде так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 19.02.2013, 21:37   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
type myarr = array of integer;
Как уже сказали предыдущие ораторы : В турбо динамика не прокатит. А Вот Вариант с MaxInt'ом турбушка с радостью скушает..

Виталий, спасибо! Не знал что динамические массивы можно так объявлять
Poma][a вне форума Ответить с цитированием
Старый 19.02.2013, 21:38   #10
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Хм.. интересно.. Никогда на паскале не писал ничего динамического.. а тут такие тонкости.
Век живи - век учись =)
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
invalid numeric input Fri Помощь студентам 5 13.11.2011 15:05
invalid number MrBobyara SQL, базы данных 4 28.02.2011 04:49
Rave Reports 5.0 (invalid) -Хан- БД в Delphi 0 23.06.2010 00:39
Invalid Filename LobsterOK Общие вопросы Delphi 7 27.04.2010 16:56
invalid class typecast heart Общие вопросы Delphi 8 09.01.2010 21:09