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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2010, 01:09   #1
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию [Pascal Error] Unit1.pas(101): E2008 Incompatible types

в заголовке проблема описана ясно. Но не понятно , почему он ругается?

Код:
procedure TForm1.zapolnenie(var Line:array of TPoint;
 A1,A2:TPoint;var N_N:Integer);
var dx,dy,x,y:integer;
begin
  i:=0;
  dx:=A2.x-A1.x;   dy:=A2.y-A1.y;
  if dx<0 then x:=dx*(-1) else x:=dx;
  if dy<0 then y:=dy*(-1) else y:=dy;
  if x>=y then
  begin
    if A1.x>A2.x then swapP(A1,A2);
    N_N:=A2.x-A1.x;
    setLength(Line,byte(N_N));
    for x:=A1.x to A2.x do
    begin
      Line[i].x:=x;
      Line[i].y:=round((x-A1.x)*dy/dx)+A1.y;
      i:=i+1;
    end;
  end
  else
  begin
    if A1.y>A2.y then swapP(A1,A2);
    N_N:=A2.y-A1.y;
    setLength(Line,byte(N_N)); 
    for y:=A1.y to A2.y do
    begin
      Line[i].y:=y;
      Line[i].x:=round((y-A1.y)*dx/dy)+A1.x;
      i:=i+1;
    end;
  end;
end;
выкладываю вложение, т.к. объяснять долго.
Вложения
Тип файла: rar 3a$aDa.rar (9.4 Кб, 11 просмотров)
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 17.05.2010, 08:38   #2
Андрей 93
Люблю жизнь
Форумчанин
 
Аватар для Андрей 93
 
Регистрация: 01.12.2009
Сообщений: 193
По умолчанию

Функция byte вроде возвращает не integer тип. Наверное, надо использовать round(byte(N_N))
Не стыдно не уметь, стыдно не учиться.

Последний раз редактировалось Андрей 93; 17.05.2010 в 08:43.
Андрей 93 вне форума Ответить с цитированием
Старый 17.05.2010, 09:01   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
setLength(Line,byte(N_N));
Фух... Зачем так напрягаться? Если хочешь отсечь отрицательные то расслабся - если N_N будет отрицательным эта процедура просто сделает массив пустым
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.05.2010, 12:16   #4
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Stilet, я бы не стал напягаться, если бы не одно но - пишу setLength(Line,N_N) и он мне ту же ошибку выдаёт.
а функция setlength имеет такие параметры(S:shortStr;n:byte). Разницы нет, если напишу просто N_N или byte(N_N). Integer и Byte - это целочисленный тип. Если выражаться математически , то множество byte входит в множество Integer, поэтому ошибки быть не должно. в этой программе я использую ешё один вызов setLength с такими же типами переменных и он нормально работает. А в этой процедуре , которая описана выше, косяк какой то???
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 17.05.2010 в 12:24.
Rin вне форума Ответить с цитированием
Старый 17.05.2010, 12:27   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Эта процедура не любит работать с массивами-параметрами. Ей чистую переменку подавай, посему рекомендую описать особый тип
Код:
  type
  TLine=array of TPoint;
...
  trey = record
  ab,ac,bc:tline;
Который потом буш применять:
Код:
procedure TForm1.zapolnenie(var Line:TLine;
 A1,A2:TPoint;var N_N:Integer);
var dx,dy,x,y:integer; 
begin
...
    setLength(Line,1);
И так везде.
Смысл ясен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.05.2010, 12:31   #6
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

смысл ясен=) thank`s!
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Error] Unit1.pas(40): Incompatible types: 'Integer' and 'Extended BETONOMESHALKA Общие вопросы Delphi 9 15.03.2014 17:26
Incompatible types: 'Unit1.TWebBrowser' and 'SHDocVw.TWebBrowser' simon15x Общие вопросы Delphi 0 10.04.2010 03:11
Ошибка [Error] UPER.pas(57): Incompatible types: 'Integer' and 'Pointer' Pirotexnik Общие вопросы Delphi 4 27.03.2009 11:04
[Error] UIsp.pas(232): Incompatible types: 'TAge' and 'TDateTime' Nikitin Общие вопросы Delphi 2 03.04.2008 11:56
[Error] MainUnit.pas(100): Incompatible types: 'Cardinal' and 'TCaption' ben95 Общие вопросы Delphi 2 02.02.2008 14:35