Главная страница
    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.007 c
3-73556
vol_k
2002-09-03 13:28
2002.09.23
Ошибка при корректировке списка полей компонента TTable


14-73848
Карлсон
2002-08-27 23:56
2002.09.23
Terrovision


6-73780
Valentain
2002-07-17 11:27
2002.09.23
Как определить, какие сервера запущены?


3-73502
AlGin
2002-08-31 01:54
2002.09.23
IBEvents в сети


1-73685
KidMan
2002-09-10 22:52
2002.09.23
Вторая загрузка одного и того же модуля





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский