Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Небольшой вопросик

Автор: spill 1.01.2008 23:56

Вот такое затруднение: если написать на Паскале так:

Procedure A (Var Data);
Begin
End;

и вызвать так:
Var
I: Integer;
Begin
A (I)
End.
То как к этой бестиповой переменной обращаться в процедуре? Что там будет храниться? Само значение переменной, или адрес?

Автор: volvo 2.01.2008 1:35

Цитата
как к этой бестиповой переменной обращаться в процедуре?
Проще всего - описывать локально переменную по тому же адресу, что и Data:

procedure A(var data);
var MyData: integer absolute Data; { <--- }
begin
writeln(MyData);
MyData := 10;
end;

var
i: integer;
begin
i := 1;
A(i);
writeln(i);
end.

Но если ты не ищешь легких путей - то можно вот так:
procedure A(var data);
type
pT = ^T;
T = integer;
var
p: pT;
begin
writeln(pT(@data)^);
p := pT(@data);
p^ := 15;
end;

var
i: integer;
begin
i := 1;
A(i);
writeln(i);
end.

Автор: andriano 2.01.2008 16:40

Цитата(spill @ 1.01.2008 19:56) *
Само значение переменной, или адрес?
Адрес.

Автор: spill 2.01.2008 19:32

Нет, там дело в том, что в процедуре A я не знаю какого типа будет Data

Автор: Michael_Rybak 2.01.2008 19:53

 ! 
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...

Исправляем.


Автор: мисс_граффити 2.01.2008 19:58

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