Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация

Types of actual and formal var parameters must be identical

-

Вопросы и ответы, обсуждения

- Ваши вопросы по Pascal/Delphi только в данном разделе

Ответ
 
Опции темы
Старый 31.05.2012, 04:07   #1
 Пехотинец
Аватар для ktulx
 
ktulx на правильном пути
Регистрация: 01.08.2011
Сообщений: 70
Популярность: 24
Сказал(а) спасибо: 45
Поблагодарили 7 раз(а) в 7 сообщениях
 
По умолчанию Types of actual and formal var parameters must be identical

Приветы.

Код:
unit unit_service;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  StdCtrls, ExtCtrls, IniFiles, Dialogs;
...

type
    Rec = record
    name: string;
    ID: Integer;
    end;
  DynArray = array of Rec;
...

procedure Proc(hprocess: Integer; var Array1: DynArray);
var
  a,b,c: DWORD;
  i:Integer;
begin
     ...
     a:=...
     b:=...
     c:=...
     //Записываем в длину массива некое число, полученное выше.
     SetLength(Array1, a);
for i:=0 to a do begin 
     Array1[i].ID:=b;
     Array1[i].name:=c;
    end;

end;
Код:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Gauges, ExtCtrls, unit_service, Unit_invent, IniFiles;
...
type
    Rec = record
    name: string;
    ID: Integer;
    end;
  DynArray = array of Rec;

var
   Buff: DynArray;
...

Proc(hProcess, Buff);
На красную строку ругается ошибкой "Types of actual and formal var parameters must be identical". Что за хрень? Параметры в объявлении процедуры и при её вызове имеют один тип. Где косяк?

До того, как вынес процедуру в отдельный юнит, всё работало.

Спасибо.
  Ответить с цитированием
Старый 31.05.2012, 11:25   #2
Заблокирован
 Пехотинец
Аватар для Skrillex3
 
Skrillex3 душа компанииSkrillex3 душа компанииSkrillex3 душа компанииSkrillex3 душа компанииSkrillex3 душа компанииSkrillex3 душа компанииSkrillex3 душа компанииSkrillex3 душа компании
Регистрация: 23.03.2012
Сообщений: 83
Популярность: 908
Сказал(а) спасибо: 102
Поблагодарили 144 раз(а) в 61 сообщениях
Отправить сообщение для Skrillex3 с помощью Skype™
 
По умолчанию Re: Types of actual and formal var parameters must be identical

Цитата:
Сообщение от ktulxПосмотреть сообщение
procedure Proc(hprocess: Integer; var Array1: DynArray);

вар убери var Array1: DynArray тут
  Ответить с цитированием
Старый 31.05.2012, 18:22   #3
 Пехотинец
Аватар для ktulx
 
ktulx на правильном пути
Регистрация: 01.08.2011
Сообщений: 70
Популярность: 24
Сказал(а) спасибо: 45
Поблагодарили 7 раз(а) в 7 сообщениях
 
По умолчанию Re: Types of actual and formal var parameters must be identical

Тогда будет Incompatible Types И мне ведь нужно изменять параметр-переменную при работе процедуры.

Добавлено через 1 час 9 минут
Кажется, разобрался, хотя до конца и не понимаю, почему так ) Проблема была в том, что я объявлял свои типы в обоих юнитах.

Последний раз редактировалось ktulx; 31.05.2012 в 19:31. Причина: Добавлено сообщение
  Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Ошибка... [Error] Unit1.pas(53): Incompatible types: 'String' and 'Boolean' Babls77 Вопросы и ответы, обсуждения 6 17.05.2012 16:31
[Программа] Parser Mail's On Parameters Gamer1912 Игры Mail.ru 19 21.04.2012 22:39

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 11:30.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net