IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Несоответсвие типов VAR-параметров подпрограмм(error 26).
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской

Репутация: -  0  +


Извиняюсь за возможное нарушение правил, но решил поместить пример программы,
чтобы сразу было понятно что к чему.

ПРОГРАММА:
Код

program VarStr;

uses
   Dos;

procedure Proc( var Dir : DirStr; var Name : NameStr; var Ext : ExtStr );
begin
end;

procedure Proc2( var B : Byte; var W : Word; var L : LongInt );
begin
end;

procedure Proc3( var I : Integer; var W : Word );
begin
end;

procedure Proc21( B : Byte; W : Word; L : LongInt );
begin
end;

var
   SD, SN, SE : String;
   SDir : DirStr;
   SName : NameStr;
   SExt : ExtStr;
   B : Byte;
   W : Word;
   L : LongInt;
   I : Integer;
begin
   (*Proc(SD,SN,SE);  { НЕЛЬЗЯ! Ошибка 26: Type mismatch(несовпадение типов). }*)
   Proc(SDir,SName,SExt);  { Всё в порядке! }
   (*Proc2(B,B{Error 26!},B);*)
   (*Proc2(W{Error 26!},W,W);*)
   (*Proc2(L{Error 26!},L,L);*)
   Proc2(B,W,L);  { Всё в порядке! }
   (*Proc3(W{Error 26!},W);*)
   (*Proc3(W{Error 26!},I);*)
   (*Proc3(I,I{Error 26!});*)
   Proc3(I,W);  { Всё в порядке! }
   Proc3(Integer(W),Word(I));  { Всё в порядке! }
   Proc21(B,W,L);  { Всё в порядке! }
   Proc21(L,B,W);  { Всё в порядке! }
   Proc21(W,L,B)  { Всё в порядке! }
end.


И сам ВОПРОС(недеюсь он теоретический(имеет отношение к синтаксису, семантике и т.д. и т.п)):
Почему типы фактических параметров переменных, задаваемых при вызове подпрограммы,
должны СОВПАДАТЬ(быть РАВНЫМИ) соответствующим формальным VAR-параметрам.
Почему здесь ошибка 26(Type mismatch) - НЕСООТВЕТСТВИЕ ТИПОВ превращается в ошибку
НЕСОВПАДЕНИЕ ТИПОВ.


Пожалуйста, если кто-нибудь знает, объясните.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Neznaika   Несоответсвие типов VAR-параметров подпрограмм(error 26).   13.07.2007 16:44
compiler   procedure p( const s:string ); begin writeLn(s); …   13.07.2007 17:25
volvo   Ничего никуда не превращается. Как всегда было Err…   13.07.2007 17:43
Neznaika   compiler: Не смешно, мой пример СИНТАКСИЧЕСКИ КОРР…   13.07.2007 20:14
volvo   Если ты не понял того, что написано в предыдущем п…   13.07.2007 20:31
Neznaika   volvo: Я не хочу ругаться, я разобраться хочу. Про…   13.07.2007 22:02
Neznaika   Вот например, что написано у Епанешниковых(Програм…   14.07.2007 19:49
compiler   Получается, что типы данных формальных и фактическ…   14.07.2007 20:05
Neznaika   тебе же написали а еще многие ошибки вообще не …   14.07.2007 20:52
volvo   Дельфи? Сорри, только не Дельфи: Что я делаю не…   14.07.2007 20:58
Neznaika   unit Unit1; interface uses Windows, Messages,…   14.07.2007 21:07
мисс_граффити   Естественно. А где в этом примере несоответствие м…   14.07.2007 23:57
volvo   Разговор был про Var-параметры... Попробуй добавит…   15.07.2007 1:07
Neznaika   Тьфу, чёрт. Теперь вроде всё "правильно…   15.07.2007 3:22
Neznaika   BDS2006(компилятор Delphi для Win32): ... var W…   18.07.2007 20:42
hardcase   Уважаемые эксперты, объясните пожалуйста 1) Что…   9.08.2007 1:16
Neznaika   hardcase, спасибо. Но всё равно, тёмное дело. В…   11.08.2007 20:36
volvo   Neznaika, во-первых, будет ли твоя программа компи…   11.08.2007 21:00
Neznaika   Да, с {$T+} Proc(Word((@B)^),DWord((@B)^)); н…   11.08.2007 21:41
hardcase   Есть такое понятие в программировании - безопасный…   11.08.2007 22:23


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.04.2024 7:35
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name