Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.23;
Скачать: CL | DM;

Вниз

Overoading   Найти похожие ветки 

 
Leviathan ©   (2002-09-07 20:27) [0]

Имеется процедура:


procedure Write(Ident: Word; var Stream: TFileStream); overload;
begin
IF Stream.Write(Ident, SizeOf(Word)) <> SizeOf(Word) THEN
MessageDlg(ERROR_MESSAGE, mtError, [mbOk], 0);
end;

И еще одна точно такая же, отличие только в том, что вместо TFileStream стоит TMemoryStream. Вопрос такой: можно ли как-нибудь сделать двойной заголовок и.т.п., или исходник обречен содержать две абсолютно одинаковые процедуры?


 
Kopetr ©   (2002-09-07 20:44) [1]

Можно просто написать
procedure Write(Ident: Word; var Stream: TStream);


 
Leviathan ©   (2002-09-08 12:58) [2]

Не получается, уже пробовал, при попытке передать в процедуру TFileStream возникает ошибка - пишет, что var параметр в объявлении функции must be identical. Или это как-нибудь через AS можно обыграть?


 
Kopetr ©   (2002-09-08 13:19) [3]

Примерно так: Write(Id, TStream(FStream))
(var FStream: TFileStream)


 
McSimm ©   (2002-09-08 13:20) [4]

Не нужно как var передавать


 
McSimm ©   (2002-09-08 13:22) [5]

Т.е.
procedure Write(Ident: Word; Stream: TStream);


 
Leviathan ©   (2002-09-09 21:19) [6]

К сожалению, обязательна именно передача через var, поскольку должны быть изменены свойсва конкретного потока, переданного в функцию (а если точнее, измениться должно его Position). Есть еще какие-нибудь предложения?


 
Kopetr ©   (2002-09-09 21:32) [7]

Дак она и изменится.


 
Юрий Зотов ©   (2002-09-09 23:29) [8]

Без проблем. Вы же меняете не сам Stream, а его свойства. Никто этого не запрещает.


 
Leviathan ©   (2002-09-11 19:33) [9]

Так в том то и дело, что нужно, чтобы физически существующий Stream, после выполнения изменился. Если он и так изменится, объясните мне тогда, зачем в параметрах функции указывается var.


 
Старый Паскалист   (2002-09-11 19:43) [10]

Доктор сказал - в морг (в смысле убери var) - значит в морг.
В паскале, в отличие от С++, объекты никогда не передаются
по значению, но всегда по ссылке. Безо всякой var.

Поэтому ты можешь смело изменять Stream, и изменения будут
происходить именно с "физически существующим", как ты выражаешься, потоком.



Страницы: 1 вся ветка

Текущий архив: 2002.09.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
3-73576
Sergey V. Shadrin
2002-09-03 14:47
2002.09.23
упаковка базы


3-73481
Bishop
2002-08-30 12:52
2002.09.23
FIB


8-73779
MetallAdm
2002-01-23 12:09
2002.09.23
OpenGl or Direct X ??


1-73599
RV
2002-09-12 11:01
2002.09.23
Application.processmesages в программе без форм


14-73829
Bart
2002-08-27 14:24
2002.09.23
COM порт