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

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

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2015, 08:58   #1
GreenFox
Новичок
Джуниор
 
Регистрация: 02.04.2015
Сообщений: 2
По умолчанию Что не так с массивами ? помогите понять ошибку

В процессе изучения фри паскаля на лазарусе процесс встал на первой же задаче с массивами.

Код:
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads, crt, FileUtil
  {$ENDIF}{$ENDIF}
  Classes, SysUtils, CustApp ,CRT ,FileUtil ,LCLProc ,LConvEncoding;
  { you can add units after this }
   var
    name: array[1..50] of string[30];
    tel: array[1..50] of string[3];
    k: Integer;
    s : string;
    phone: string[3];

 begin
     for k:=1 to 50 do
      begin
        writeln(UTF8ToConsole('Введите фамилию'));
        readln (name[k]);
        writeln(UTF8ToConsole('ведите номер тедлефона'));
        readln (tel[k]);
        tel[k]:= Trim(tel[k]);
      end;
     writeln(UTF8ToConsole('ввод даных закончен'));
     writeln(UTF8ToConsole('Для поиска абонента введите '));
     writeln(UTF8ToConsole('номер его телефона '));
     writeln(UTF8ToConsole('для выхода из программы '));
     writeln(UTF8ToConsole('введите "***"'));
     phone:='';
     while phone <> '***' do
       begin
         writeln(UTF8ToConsole('Введите номер телефона '));
         readln(phone);
         for k:=1 to 50 do
          if tel [k] = phone then
            writeln(UTF8ToConsole('фамилия  этого абонента'), name[k]);
       end;


   end;
выдаёт следующую ошибку
ConsoleLoginTest.pas(61,17) Error: Can't take the address of constant expressions

Что компилятор от меня хочет ?

_______
код на форуме нужно форматировать тегами
Модератор

Последний раз редактировалось Serge_Bliznykov; 02.04.2015 в 09:26.
GreenFox вне форума Ответить с цитированием
Старый 02.04.2015, 09:22   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Наверное дело в том что мтрока ограничена 30 знаками, а readln это никак не проконтролирует.

читайте в строку, проверяйте размер прочитанного, записывайте в массив.
Код:
readln(s);
if (Length(s) < 31) then
name[k] := s;
Человек_Борща вне форума Ответить с цитированием
Старый 02.04.2015, 09:27   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы переменную name переименовал.
Похоже компилятор путается, где массив, а где свойство с именем name
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.04.2015, 09:37   #4
GreenFox
Новичок
Джуниор
 
Регистрация: 02.04.2015
Сообщений: 2
По умолчанию

readln(s);
if (length(s) < 31) then
name[k]:= s;

ошибка
ConsoleLoginTest.pas(63,9) Error: Argument can't be assigned to
ConsoleLoginTest.pas(63,19) Error: Incompatible types: got "AnsiString" expected "Char"
Он же врёт! я же указывал его как Стринг с чего вдруг он чар ожидает ?

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я бы переменную name переименовал.
Похоже компилятор путается, где массив, а где свойство с именем name
СПасибо действительно помогло

Последний раз редактировалось Stilet; 02.04.2015 в 09:49.
GreenFox вне форума Ответить с цитированием
Старый 02.04.2015, 09:53   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

отлично. Пожалуйста.

тему закрываем?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.04.2015, 10:08   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
я бы переменную name переименовал
Нежданка. А чего оно так, консолька, объектов нет. Особенность лазаря? Специально делфийскую консольку сделал, съело не глядя
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.04.2015, 10:49   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Особенность лазаря
Ерунда какая-то. Мой Лазарус нормально код ТС скомпилил и выполнил.
Цитата:
GreenFox
Какая версия Фрипаскаля и Лазаря?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу понять что не так aferistz Общие вопросы C/C++ 5 23.09.2010 02:21
строки и файлы не могу понять,что не так((((( marina_sergina Общие вопросы C/C++ 4 11.05.2010 07:49
строки и файлы не могу понять,что не так(((( marina_sergina Помощь студентам 1 11.05.2010 00:38
Помогите дописать программу на Delphi 7 не могу понять что здесь не так matrix8325 Помощь студентам 1 30.04.2009 23:34
Помогите понять что вызывает ошибку - C liora Общие вопросы C/C++ 1 29.03.2009 22:05