2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Delphi, помогите найти ошибку в коде
Сообщение06.06.2007, 18:51 
Доброго времени суток!

есть 2 модуля unit1, unit_matr:
....
type tVect=array[0..10] of real;
tmat=array[0..10] of tvect;
...
<unit1>: ////это основной модуль
unit_matr.proc1(n,c_A;<ОШИБКА ВОТ ТУТ!!!>d);
...
<unit_matr>: //////это дополнительный модуль, в котором содержаться процедуры
procedure proc1(n:integer; c_A:TMatr; var d:real);
var i:integer;
begin
If n=2 then
d:=det2(c_a[1,1],c_a[1,2],c_a[2,1],c_a[2,2])
end;
....

в итоге выдает ошибку о несоответствии типов:(

_____
я передаю данные из первого модуля в процедуру второго модуля, а потом из второго передаю результат в первый модуль

Заранее благодарен)))

 
 
 
 
Сообщение07.06.2007, 00:04 
Аватара пользователя
DneprSerg

Цитата:
tmat=array[0..10] of tvect
; // это Вы так определяете массив 11 на 11?

Цитата:
d:=det2(c_a[1,1],c_a[1,2],c_a[2,1],c_a[2,2])
// если не ошибаюсь, то индексацию начать с 0.

 
 
 
 Re: Delphi, помогите найти ошибку в коде
Сообщение07.06.2007, 06:32 
DneprSerg писал(а):
unit_matr.proc1(n,c_A;<ОШИБКА ВОТ ТУТ!!!>d);
...
Вы пишете, что ошибку вызывает переменая d. Но Вы не написали, как она определена в основном модуле.

 
 
 
 
Сообщение07.06.2007, 23:38 
Аватара пользователя
:evil:
Присоединяюсь к Yuri Gendelman — дайте описание переменных в месте вызова.

И еще — меня смущает точка с запятой перед d. По-моему, там должна быть запятая…

 
 
 
 
Сообщение08.06.2007, 00:44 
Цитата:
Вы пишете, что ошибку вызывает переменая d. Но Вы не написали, как она определена в основном модуле.

d:real;
Цитата:
И еще — меня смущает точка с запятой перед d. По-моему, там должна быть запятая…

не, там ";", с запятой не работает...

Добавлено спустя 8 минут 54 секунды:

reader_st писал(а):
DneprSerg

Цитата:
tmat=array[0..10] of tvect
; // это Вы так определяете массив 11 на 11?

Цитата:
d:=det2(c_a[1,1],c_a[1,2],c_a[2,1],c_a[2,2])
// если не ошибаюсь, то индексацию начать с 0.

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

Добавлено спустя 8 минут 40 секунд:

и еще: ток что попробовал, это не от разделения по модулям, просто сама процедура не работает...

 
 
 
 
Сообщение08.06.2007, 04:55 
DneprSerg писал(а):
Цитата:
И еще — меня смущает точка с запятой перед d. По-моему, там должна быть запятая…
не, там ";", с запятой не работает...
Так и с ";" тоже не работает!
Я не помню случаев, когда ";" используется в списке фактических аргументов. Правда я уже несколько лет не программирую на Delphi.

 
 
 
 
Сообщение08.06.2007, 20:56 
Аватара пользователя
:evil:
DneprSerg писал(а):
d:real;

Пожалуйста, все переменные, использованные как фактические параметры.

P.S. Обычно компилятор выдает сообщение об ошибке на следующей лексеме. Почему? — не знаю. Выглядит до предела глупо: скажем, пропущена точка с запятой, а ошибка выдается спустя пол-страницы комментариев. Ужели так трудно запомнить не только начало, но и конец лексемы?!

 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group