| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Присваивание файловых переменных |
| Автор: EKoshelev 12.11.2004, 16:08 | ||
| Вощем предыстория (или с буквой "И"?) следующая. Пишу дебильный объект по реализации конечного автомата. Этот автомат может содержать вложенные (дочерние, делегированные) автоматы (абс. идентичные ему же). Вот. Источником текстаря может быть TStrings, а может быть файл. Предположим, что я работаю с файлом. Когда я передаю управление вложенному автомату нужно и файловую переменную ему закинуть (по скоку работать он будет с тем же текстом). Простым присваиванием, ессно, ничё не добьёшься - глюк на этапе компиляции. Ещё мне на мгновение показалось, что можно у одного файла сделать FilePos, а у другого Seek. С филепозом получилось, а на сике мне сказали, что с текстовыми файлами такая фича не прокатывает. Можно параметром перекинуть через какую-ньть процедурь, типа:
А дальше фиг его знает. Есть ещё дебильный вариант. Создать там дополнительный textfile и пролистать его до того же места, но по-моему это слишком некрасиво (Да и потом будет ли он работать с тем же файлом? А ещё я слышал, что одновременно в приложении может быть ограниченное число файловых переменных (или меня дезинформировали???)). Короче, путь фиговый какой-то. Можно просто закидать всё в TStrings и с ним работать, но если текстарь будет слишком большим, то тоже отстой получится. Одним словом говоря, я в смятении. Подкиньте идейку плииииз. |
| Автор: Vit 12.11.2004, 16:41 |
| Используй потоки - TFileStream |
| Автор: p0s0l 12.11.2004, 17:46 |
| Насколько большим может быть файл ? Оптимальный вариант - засунуть в TStringList... Иначе, если работать с потоками и с нетекстовыми файлами, будет неудобно выцеплять строки, хотя это уже будет универсальный способ... PS: а что автомат может читать только в одном направлении (т.е. назад не возвращается) ? |
| Автор: EKoshelev 15.11.2004, 13:59 |
| Vit Я не умею. Может научишь? Или наколочку какую-нить кинешь где написано? p0s0l Вообще-то я собирался только в одном направлении читать. Я чё-то где-то читал, что там (в TStirngs'e) может поместится только 64 кг. И то с какими-то половыми извращениями. Просто у меня привычка такая (какой же я, блин, крутой), что всё время пытаюсь так, чтобы работало с чем угодно. То есть, вообще-то я пишу без расчёта на юзание файлов, но в перспективе очень даже не исключено, что эта фишка пригодится. Я вот тут придумал одно извращеньице. Сделал объект с полем типа файла. И стал присваивать. В общем, не вижу причин для глюков при таком подходе. Как вы считаете (Vit и p0s0l) это очень дебильный подход или сойдёт по пьяни? Ну, короче, спасибо вам господа, что не отказали в помощи, может ещё ответите на мои вопросы . |
| Автор: Vit 15.11.2004, 16:45 | ||||||||
В FAQ статья - всё о файлах...
TStringList может работать с файлами любых размеров, но при размерах больше 10 метров будет работать медленно
TFileStream - работает с файлами любых размеров, но без разбиения на строки, что может быть неудобно для текстового файла. |