Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > вызов функции


Автор: golfV 8.12.2009, 11:50
Всем привет, столкнулся с такой проблемной, есть процедура
Код

procedure pUutResult(var iTagX: integer;iPrSN: PChar;
                var oPrTID,oPrdID,oStpNr,oTstID,oUutID:integer;iTest: PChar;
                iLimVerID: integer;
                iStationID, iFixtureID,iUserID,iStartDateTime: PChar;
                iPreTime,iExecTime,iPostTime :double;
                iUutStatus:PChar;
                iUutErrCode:integer;
                iUutErrMsg,iSFPath,iBathSN:PChar;
                iTstSocketID:integer);

я пытаюсь ее вызвать
Код

StationID:                string;
      iTest:                 string;
      iPrSn:                 string;
      iuutStatus:         string;
      iStartDateTime:  string;
      PostTime:           string;
      OName:              string;
      iExecTime:          string;
      ITagx:                 Integer;
     
pUutResult(iTagX,PChar(iPrSn),0,PrdID,0,0,0,PChar(iTest),0,'0','0','0','0',StrToFloat(iStartDateTime),StrToFloat(iExecTime),StrToFloat(PostTime),PChar(iuutStatus),0,'','','',0);


вроде все переменные правельного типа а он все равно ругается на PrdID и ввыдает такую ошибку при компиляции

'Types of actual and formal var parameters must be identical'
Может кто подскажет в чем дело? 
заранее спасибо!

Автор: Демо 8.12.2009, 11:53
В коде не видно, как у тебя PrdID определена.

Автор: golfV 8.12.2009, 11:54
PrdID := 0;


Автор: Демо 8.12.2009, 11:55
PS.
Так у тебя нужно передавать в виде переменных все параметры, которые определены как var:
Код

var iTagX: integer
var oPrTID,oPrdID,oStpNr,oTstID,oUutID:integer


Добавлено через 24 секунды
Цитата(golfV @  8.12.2009,  11:54 Найти цитируемый пост)
PrdID := 0;


Это значение, а тип переменной какой?

Автор: golfV 8.12.2009, 11:57

Код

PrdID: Integer;


переменная определена как integer

Автор: Демо 8.12.2009, 12:00
golfV, 

вот эти параметры нельзя передавать константами -

Код

var iTagX: integer
var oPrTID,oPrdID,oStpNr,oTstID,oUutID:integer



Каждую передавай переменной.

Автор: golfV 8.12.2009, 12:00
пробовал неопределять переменную а просто поставить 0, тоже самое. Никак немогу разобраться в чем причина

Добавлено через 32 секунды
ок, спасибо щас попробую

Автор: Демо 8.12.2009, 12:03
Сделай вызов с переносом строк. Каждый параметр на отдельной строке.
Колмпилятор после ошибки будет устанавливать курсор на ошибочном параметре.

Вот таким образом:
Код

pUutResult(
  iTagX,
  PChar(iPrSn),
  0,
  PrdID,
  0,
  0,
  0,
  PChar(iTest),
  0,
  '0',
  '0',
  '0',
  '0',
  StrToFloat(iStartDateTime),
  StrToFloat(iExecTime),
  StrToFloat(PostTime),
  PChar(iuutStatus),
  0,
  '',
  '',
  '',
0);

Автор: golfV 8.12.2009, 12:07
все работает, большое спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)