| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как создать property типа TextFile? |
| Автор: Radio 21.2.2006, 21:03 |
| Сегодня попробовал создать свойство и написал че-то вроде следующего type TForm1=Tform; .......... Function GetF:TextFile; Procedure SetF(File_Name:TFileName); Property F:TextFile read Getf write SetF ....... Перед тем,как все это раскритиковать объясню чего я хотел: OpenDialog.FileName дает мне имя файла для SetFile и яго пишу в F я его AssignFile и юзаю свойство как файловую переменную, а чтоб в любой момент можно было читать - пожалуйста, есть GetF. Немного поумнев я понял, что нельзя делать GetF:TextFile; ну ладно с этим я смирился; Далее окозалось, что параметр у SetF должен быть того же типа, что и property а параметр типа TextFile быть не может следовательно и property типа TextFile сделать нельзя. Короче, тем кто во всей этой каше разобрался прямой вопрос: можно ли создать property:TextFile, а если можно, то как? |
| Автор: Albinos_x 21.2.2006, 21:18 | ||
|
| Автор: Radio 21.2.2006, 21:26 | ||
Мне делфи на это ответил File type not allowd here что нелзя в параметрах процедуры давать TextFile. Только если Var написать. Ну написал, а он - Property setters cannot take var parameters Ну вот, а дальше что, раз такие дела??? |
| Автор: Guedda 21.2.2006, 21:32 |
| А что именно в процедуре пишешь? У меня, допустим, все работает, и никаких ошибок не вылетает |
| Автор: Radio 21.2.2006, 21:35 |
| procedure Set_File(F:TextFile); property WorkFile:TextFile write Set_File; вот это not allowd here procedure Set_File(Var F:TextFile); property WorkFile:TextFile write Set_File; вот это cannot take var parameters; |
| Автор: Quadr0 22.2.2006, 01:46 |
| ... |
| Автор: Radio 22.2.2006, 21:59 | ||||
Да я знаю, что FileName это не файл. Я хотел, чтоб было свойство в объекте и это свойство представляло из себя файловую переменную. Я конечно понимаю, можно обьявить глобальную переменную и ее юзать, но ведь это уже нето. А SetFile функцию хотел заюзать только вначале для Assign и Reset, а так в проге он больбще и не нужен. Параметр FileName:TFilName мне там понадобился, чтоб сразу из OpenFile в SetFile идальше пошло-поехало. Ну да ладно, получается если
так не суждено мне объявить property:TextFile. Или можно, идея-то красивая была |
| Автор: Radio 23.2.2006, 19:31 |
| Ну так что, все таки это невозможно? А я водном учебнике читал, что ограничения на тип свойств нет, так что получается есть? |
| Автор: Quadr0 23.2.2006, 21:52 |
| ... |
| Автор: Radio 23.2.2006, 21:59 |
| Это понятно, что могу объявить, но мне-то нужны процедуры для read write и тип параметров этих процедур дожен совпадать с типом property то есть типа TextFile а это невозможно(для процедур еще как то можно, хотя и не получается через Var, а для функций, так вообще никак - не может быть функция типа TextFile). Но ладно, я спорить не хочу - даже лучше, если можно, только теперь скажите мне пожалуйста - как, и желательно кодом на Delphi чтобы уже исключить различные побочные вопросы. Как это сделать? |
| Автор: SoWa 23.2.2006, 22:23 | ||
Вот так и работать с файлом. Только Var описывай глобальный. |
| Автор: Radio 23.2.2006, 22:47 |
| Да я не спрашиваю как работать с файло - я это все хорошо знаю. Я прошу чтобы мне помогли объявить property типа TextFile в объекте. Только просьба перед тем как приводить листинг проверить его в Delphi а то как я пробовал объявить с виду тож провильно, но Delphi выдаёт ошибки. Так что помогите кто может. Как это сделать? |
| Автор: Quadr0 24.2.2006, 02:16 |
| ... |
| Автор: Radio 24.2.2006, 23:48 |
| Спасибо за исчерпывающий ответ. |