Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
7-73897
Stanislav SM
2002-07-12 16:22
2002.09.23
Эмуляция движения и нажатия мыши


4-73938
Донской
2002-08-05 20:29
2002.09.23
lockfile() от имени системы


1-73624
Демонов Е.В.
2002-09-10 16:58
2002.09.23
RTTI


14-73809
Digitman
2002-08-05 18:14
2002.09.23
Задачка для любознательных


1-73620
stas_a
2002-09-12 13:17
2002.09.23
Как скрыть мою задачу в W2K





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский