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


Автор: Pakshin A. S. 21.12.2003, 19:56
Случай из практики:
Код


...

procedure ReadBool(N1,N2:boolean);
var
f:file of boolean;
begin
AssignFile(f, 'Somefile.xxx');
reset(f);
read(f, N1);
read(f, N2);
CloseFile(f)
end;

...

procedure TForm1.Button1Click(Sender: TObject);
var
N1,N2:boolean;
begin
ReadBool(N1, N2);
if N1 and N2
 then
  ShowMessage('true')
 else
  ShowMessage('false');
...
end;

...


Что бы я ни писал в файле, вадавалось сообщение "false".

Поменял в процедуре Button1... названия переменных на Na1 и Na2... заработало!

Но в чём проблемка, ведь и нигде эти переменные более не использовал!?

Автор: p0s0l 21.12.2003, 20:03
а почему у тебя так
procedure ReadBool(N1,N2:boolean);
а не так:
procedure ReadBool(var N1,N2:boolean);

или это описка ?

Автор: Pakshin A. S. 21.12.2003, 20:07
А по-моему эти записи равносильныconfused.gif Ведь потом это заработало и тем более я писал и с VAR...

Автор: Vit 21.12.2003, 20:27
Цитата
А по-моему эти записи равносильны


Ну ты блин даёшь! Конечно не равносильны!

Автор: Полудненко Олег 21.12.2003, 22:51
Pakshin A. S. при первой передаётся значение переменной, а при второй адрес переменной (или чё-то такое)

Автор: December 22.12.2003, 04:31
То же, по-человечески: с var ты можешь изменять значение параметра в самой процедуре, без var - изменения не отобразятся вне её.

Автор: Vit 22.12.2003, 06:19
Вот здесь объяснения типов параметров:

http://forum.vingrad.ru/index.php?act=ST&f=32&t=9845&hl=out

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