| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Ошибка создания файла |
| Автор: neic 17.12.2009, 12:03 | ||||||
Ругается на то, что файл отсутствует:
Файла реально нет, но(!), на следующей строке указано, что нужно делать:
Полностью:
Что ему (делфи) не хватает??? |
| Автор: Akella 17.12.2009, 12:09 | ||
|
| Автор: neic 17.12.2009, 12:20 |
| Выдаёт это |
| Автор: neic 17.12.2009, 12:22 | ||
Написал так:
|
| Автор: Данкинг 17.12.2009, 12:26 | ||
|
| Автор: Snowy 17.12.2009, 12:27 |
| 2010 год на носу, а люди всё ещё пользуются AssignFile... "В то время, когда космические корабли бороздят просторы большого театра..." © |
| Автор: neic 17.12.2009, 12:48 | ||
| Snowy А что ты предлагаешь? В 7 делфи. Добавлено через 2 минуты и 22 секунды Данкинг спасибо. Только подредактировать пришлось:
|
| Автор: Данкинг 17.12.2009, 12:51 |
| Дык, а что такого: AssignFile и мне нравится. |
| Автор: Snowy 17.12.2009, 12:57 |
| Да какая разница, какая дельфи. TStream (любой), TStringList... Зачем пользоваться методами, оставшимися в наследство от DOS? |
| Автор: Данкинг 17.12.2009, 13:45 |
| Ну так а если надо считать текстовый файл в миллион строк - сколько времени он будет грузиться в TStringList ? |
| Автор: Snowy 17.12.2009, 13:53 |
| Судя по коду, там до миллиона лет 200 активного пользования. А для больших размеров - стримы. И форматы посеръёзнее текстовых. |
| Автор: Akella 17.12.2009, 17:14 |
| Snowy, а если нужно загрузить 100 строк текстового файла. А файл размером 5-10 мегабайт. |
| Автор: Snowy 17.12.2009, 17:58 |
| Ага, особенно, если это последние 5 строк... Что за попытки выискать мифическую ситуацию? Мне подобные что-то никогда не попадаются. Что касается первоначального вопроса - ответ есть в справке по IOResult ( {$I-} ) |
| Автор: Akella 17.12.2009, 22:59 |
| У меня есть такая ситуация. Например, когда пользователю нужно показать кусок файла, чтобы он выбрал, нужно ли выполнять Dos->Win или нет для дальнейшей обработки текста. |
| Автор: Snowy 18.12.2009, 11:24 |
| Ну так тем более - в стрим загружаешь 200 символов и показываешь. Небольшой - это в символах. В строках может быть совсем не небольшим. Вобщем флейм уже пошёл... |
| Автор: SlaUr 18.12.2009, 15:16 | ||||
А кто будет ставить {$I-} {$I+} Вот что должно быть
Ничего не имею против этих якобы устаревших комманд они работают и иногда их использовать лучше.Если например использовать tsringlist то в данном конкретном случае сначала бы пришлось считывать файл (если он есть) потом добавлять строки а потом только записывать. |
| Автор: profesiachuvak 19.12.2009, 15:07 |
SlaUr, что это значит?, Вы хотите сказать что без этого работать не будет? |
| Автор: SlaUr 21.12.2009, 08:18 | ||||
В этом коде возникает ошибка и ioresult=0
В этом коде ошибки не возникает и ioresult=2
У neic программа вываливалась по ошибке поэтому никакого файла не создавалось |
| Автор: profesiachuvak 21.12.2009, 14:51 | ||
SlaUr, Ситуация ясна, вот только эта запись не понятна для меня :
Как понимать это штуку: {$I-}; ? |
| Автор: Snowy 21.12.2009, 15:05 |
| А справку посмотреть? Директива, которая как раз и вырубает вываливание с ошибкой. |
| Автор: profesiachuvak 21.12.2009, 15:22 |
Да я так и сделал, не успел отписаться. {$I-} - отключает генерацию исключений. |
| Автор: Демо 21.12.2009, 16:12 |
| Я бы не рекомендовал использовать {$I-} без глубокого понимания этого механизма. Отключение проверки ошибок может повлечь за собой труднонаходимые ошибки и глюки. Лучше использовать обработку исключений. |
| Автор: Snowy 21.12.2009, 16:16 |
| Без глубокого понимания можно использовать готовый пример. Например из справки Delphi (TurboPascal) В ТрупоПаскале по другому и никак было. А это наследство покойного... |
| Автор: Данкинг 21.12.2009, 16:44 |
Видимо, ты в Паскале ничего не писал? |
| Автор: profesiachuvak 21.12.2009, 16:56 |
В лет 13 в Pascal 5 а потом Turbo что-то писал, но видимо не сталкивался с обработкой исключений. А почему там невозможно было без {$I-} ??? Мне аж интересно стало. |
| Автор: Данкинг 21.12.2009, 20:32 |
Вообще я смутно помню, что там в ТП было. |
| Автор: bems 24.12.2009, 18:11 |
| Там не было не только обработки исключений, но и самих исключений. А проверка ошибок как раз и делалась через IOResult. И директивы компилятора соответственно там тоже не было. |
| Автор: Snowy 24.12.2009, 18:28 | ||
Из справки TP7:
|
| Автор: bems 24.12.2009, 18:44 |
| Убедил. Но исключений-то не было |
| Автор: Snowy 25.12.2009, 12:48 |
| Так я про то и говорю - обработчиков исключений не было, поэтому использовались директивы компилятора. Теперь обработчики есть, но старьё с собой до сих пор тянем. Я к тому и клоню, что это всё устарело ещё в прошлом тысячелетии, а у нас 2010 год на носу уже. С наступающим |