Главная страница
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.013 c
7-73912
Vasyl
2002-07-12 02:10
2002.09.23
5


6-73798
DenisA
2002-07-20 21:49
2002.09.23
Список компов в ЛВС с ip-адресами


3-73539
gera-killer
2002-09-02 15:02
2002.09.23
Delphi + Btrieve?


14-73839
777
2002-08-28 09:47
2002.09.23
Архангельск


1-73716
dimanew
2002-09-11 12:33
2002.09.23
Можно ли программно через командную строку запустить