Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
А можно ли ф функцию файл передать:
|
|||
|---|---|---|---|
|
#18+
То есть: f1: file of integer; f2: file of string; Хотелось бы чтение из файла в массив, оформить в виде одной функции, типа такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. То есть в функцию передаётся переменная описаная как типизированный файл, имя файла и динамический массив, куда считывать. А то надо считать с 10 файлов, и не дело писать друг за другом одно и тоже, меняя тоько параметры... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 16:56 |
|
||
|
А можно ли ф функцию файл передать:
|
|||
|---|---|---|---|
|
#18+
А глобальные переменные отменили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 16:59 |
|
||
|
А можно ли ф функцию файл передать:
|
|||
|---|---|---|---|
|
#18+
Да, но я не могу сначалf обявить, что f:file of integer, а потом f:file of string ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 17:05 |
|
||
|
А можно ли ф функцию файл передать:
|
|||
|---|---|---|---|
|
#18+
А как ты заранее узнаешь тип файла? Ведь считывание все равно будет вестись по-разному?!?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 17:07 |
|
||
|
А можно ли ф функцию файл передать:
|
|||
|---|---|---|---|
|
#18+
Считывание типизированных любых файлов можно считать в массив, как описано выше. Проблема только заглючается в том чтобы в AssignFile задать тип привязываемого файла... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 17:29 |
|
||
|
А можно ли ф функцию файл передать:
|
|||
|---|---|---|---|
|
#18+
Блин, ты где такие задачки находишь? :) Взял бы книжку по паскалю что ли почитал. :) Типизированный файл на то и типизированный, чтобы при его объявлении указать его тип. И других способов дать знать компилятору тип файла в паскале не существует в принципе. Функция AssignFile связывает типизированный файл с конкретным файлом на диске. Короче, тебе нужно типизированный файл объявлять внутри твоей функции, а передавать туда только имя файла и динамический массив, куда будут данные считываться. А как они будут считываться внутри функции описываешь. В общем, у тебя в итоге получится столько функций, сколько типов файлов используется в программе. И по другому, насколько я понимаю, с типизированными файлами никак не сделать. Либо использовать нетипизированные файлы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2003, 14:19 |
|
||
|
А можно ли ф функцию файл передать:
|
|||
|---|---|---|---|
|
#18+
вот именно использовать нетипизированные файлы , и работать через BlockRead ,BlockWrite ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2003, 14:37 |
|
||
|
А можно ли ф функцию файл передать:
|
|||
|---|---|---|---|
|
#18+
А нельзя сделать AssignFile за функцией, а потом передать как нить функции его дескриптор, ну или что нить такое, адресс переменной которой присваивал и т.д, а в фукции берём адрес этой переменной и читаем не так read(f, var), а вот так read(pointer^,var); Пробовал так делать не получается.. :-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2003, 16:19 |
|
||
|
А можно ли ф функцию файл передать:
|
|||
|---|---|---|---|
|
#18+
Дорогой AndreyBond, у меня стойкое ощущение, что ты у нас пытаешься выяснить конечный этап реализации задачи, в то время как сам алгоритм её решения продуман как-то криво. Давай сначала: ЧТО НУЖНО СДЕЛАТЬ? Считать из файлов информацию во внутрениие структуры данных? Сколько файлов, какие, что потом со структурам делается? Мы изначально знаем их именя и количетсво или это величины переменные? И вообще откуда взялись файлы с "типизированной струткурой"? Это данные самой программы или другой? Что же касается файловых переменных, то они через указатель не передаются, поскольку и так уже являются указателями на структуру описния файла. Причём, если я правильно помню, то файловые переменные являются особым типом, который не разименовывается. Кстати, в паскале обычно принято в таких случаях использовать ключевое слово var перед названием параметра в объявлении процедуры или функции. То есть, если написать procedure MyProc(var i:integer); то при изменении значения i внутри процедуры после выхода из неё мы будем иметь это изменившееся значение, а если var не писать (стандартное объявление), то внутри поцедуры значение может меняться как угодно, но после выхода из процедуры значение переменной не изменится. В первом случае компилятор паскаля автоматически перейдёт на использование указателя, а во втором случае создаётся копия на стеке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2003, 16:33 |
|
||
|
А можно ли ф функцию файл передать:
|
|||
|---|---|---|---|
|
#18+
Вот отрывки из кода: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. При создании формы нужно прочитать из файлов в переменные, делаю так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. А теперь заметьте, что три раза код повторяется, вот еслиб была возможность в процедуру передать указатель на файл, то было бы просто отлично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2003, 18:04 |
|
||
|
А можно ли ф функцию файл передать:
|
|||
|---|---|---|---|
|
#18+
Ну, повторяется. Работать работает? :) Или хочется, чтобы было ещё лучше? :) А если серьёзно, то можно написать и через функцию, но только без типизированных файлов. И вручную определять размер записи и количество байт, которые необходимо прочитать/записать. И не забывай, что у тебя не только файл типизированный, но ещё и массивы с элементами разного типа (то есть с разной длинной элемента). В результате ещё не факт, что выёдет сильно короче, но писанины будет явно больше, да и глюков там можно насажать таких, что не сразу и найдешь. Придётся ведь передавать рамзер элемента массива/файла и корректно изменять рамзеры массива и определять количество записей в файле. В приведённом тобой примере это всё делает сам компилятор, причём в большинстве случаев ещё на этапе компиляции. Но на то он и "язык высокого уровня". Короче, из-за трёх файлов я бы не стал время тратить. Опять же, я уже давно record в чистом виде не использую, в основном объекты. При этом у меня все объекты умеют себя сохранять в поток и загружать из потока. Там тоже писанины, конечно, побольше, чем с типизированными файлами и массивами, зато потом появляется масса удобств. Да и это зависит от количества типов/классов. Когда их становится больше десятка, то выгоднее написать общие функции и процедуры, а иначе проще и быстрее написать несколько раз одно и тоже (благо функции copy/paste в Delphi работают очень хорошо :) ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2003, 18:58 |
|
||
|
А можно ли ф функцию файл передать:
|
|||
|---|---|---|---|
|
#18+
В том то и беда, что таких файлов не 3, а около 20, да и в типе запись очень много параметров, это я вырезки привёл.. А не подскажешь где можно почиать про классы, как их правильно строить и т.д. и т.п. на русском языке.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 09:43 |
|
||
|
А можно ли ф функцию файл передать:
|
|||
|---|---|---|---|
|
#18+
в книжке .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 09:56 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32214940&tid=2117596]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
128ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 267ms |
| total: | 487ms |

| 0 / 0 |
