| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > TfileStream ругается на маленькие кусочки |
| Автор: Shurup 15.2.2009, 14:27 | ||
| Здравствуйте! Опять нужна помощь с файлстримом: Есть большой файл (примерно 100-200 мб), это куча склеенных вместе файлов (от 20 байт до 10 мегабайт) и мне известна таблица смещений. Задача: прочитать в строку выборочный файл, зная его отступ и размер. Вот пример кода:
Оставил только саму процедуру считывания, дабы избежать ошибок присваивания. Возникла следующая проблема: без вопросов читает файлы больше 1 кб, но выдает access violation при aSize < 1000... Причем точный граничный размер плавает.. последний раз 973 байта прочитало, а вот 972 - уже ругнулось. Что это может быть и как этого избежать? Версия: Delphi7. Заранее спасибо. |
| Автор: CodeMonkey 15.2.2009, 14:48 |
| Осознайте, чем B отличается от B[0]. И что из этого нужно передавать в Read. |
| Автор: Alexeis 15.2.2009, 14:50 |
| кто сказал что можно делать так Read(b,aSize); ? Динамический массив это указатель. Правильно писать в первый элемент. Read(b[0], aSize); SetLength(b,0); - совсем не нужно делать по выходу. Оно само удалится. |
| Автор: Shurup 15.2.2009, 16:28 | ||
| Alexeis, CodeMonkey, Спасибо. Да уж, с указателями всегда было туго у меня. Ошибку понял - будем исправляться. из того что уже начитался про Дин.Масивы и ДлинныеСтринги: может мне тогда можно вообще избегать использование array of char и сразу использовать sting?
корректно ли будет использование такой функции? какие трудности могут быть? |
| Автор: Alexeis 15.2.2009, 16:45 |
| string это вообще, тип который зависит от директив, по умолчанию он тоже указатель такой же как и array of char; |