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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2015, 18:53   #1
DarkHacker
Форумчанин
 
Аватар для DarkHacker
 
Регистрация: 12.04.2008
Сообщений: 105
По умолчанию Ошибка типов setlength

Здравствуйте. Код ниже указывает на ошибку несоответствия типов данных в строке

Код:
      setlength(mas,length(mas)+1);
Код:
procedure insert_into_array(var mas:array of string;value:string);
var
x:integer;
begin
    for x:=0 to length(mas)-1 do
     if(mas[x]=value)then
        exit;

      setlength(mas,length(mas)+1);
      mas[high(mas)]:=value;
end;
Вроде как все правильно, массив строк, к строкам данный метод применим. Где налажал?
DarkHacker вне форума Ответить с цитированием
Старый 08.01.2015, 19:12   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Type TMyArray = array of string;

procedure insert_into_array(var mas: TMyArray;value:string);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.01.2015, 19:13   #3
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
type
...
Tmas = array of string;
...
...
...
procedure insert_into_array(var mas:Tmas;value:string);
А то, что у тебя - это открытый массив. Его размер внутри функции менять нельзя.
Sibedir вне форума Ответить с цитированием
Старый 08.01.2015, 19:18   #4
DarkHacker
Форумчанин
 
Аватар для DarkHacker
 
Регистрация: 12.04.2008
Сообщений: 105
По умолчанию

блин...основы основ...как я мог забыть. Это ж функция. СПАСИБО!!!
DarkHacker вне форума Ответить с цитированием
Старый 08.01.2015, 19:20   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

mas у вас имеет тип Open Array, а для SetLength тип массива должен быть динамический (Dynamic Array)

опишите тип отдельно:
Код:
type TDynStringArray = array of string;
....
procedure insert_into_array(var mas:TDynStringArray;value:string);
...
должно помочь.

добавлено
извините, не обновил страницу, прежде чем ответить...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка определения типов Ericnex БД в Delphi 1 01.06.2012 14:25
ошибка типов cassno Помощь студентам 0 16.01.2012 18:54
Ошибка с SetLength применительно в PChar Celestia Общие вопросы Delphi 7 09.04.2011 06:42
Ошибка в setlength(m,x); vedro-compota Общие вопросы Delphi 3 28.06.2010 20:12