| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > копирование файла |
| Автор: heskey 25.8.2005, 14:25 |
| Нужно произвести корректное копирование, то есть по байтно. стандартная апи-функция CopyFile заменяет файл, затирая все предыдущее. Жду помощи. Спасибо. |
| Автор: _hunter 25.8.2005, 14:38 |
| открываеш два TFileStream' a; сравниваеш их размеры -- если совпали -- идеш дальше; в цикле сверяеш каждый байт, если один не совпал -- выход... |
| Автор: heskey 25.8.2005, 14:41 | ||
это методом потока? я видел пример.
а какой функцией произвести сравнение? |
| Автор: _hunter 25.8.2005, 14:46 |
| пример -- не в тему, а сравнить простым = т.е. читаеш из одного потока один символ, из другого один и сравнивай |
| Автор: heskey 25.8.2005, 14:53 |
| да..все, я понял! Read до конца файла..и сравнение.Спасибо большое. А почему именно Стримом? Ведь можно обычными средствами тогда..как на Паскале еще |
| Автор: Snowy 25.8.2005, 15:17 |
| Потому что так быстрее и корректней. |
| Автор: heskey 25.8.2005, 16:14 |
| У меня 10 кб файл минут 5 сравнивается. Хотя должно быть за секунду |
| Автор: _hunter 25.8.2005, 17:01 |
| кто тебе сказал? |
| Автор: Poseidon 25.8.2005, 23:47 | ||
|
| Автор: Romikgy 26.8.2005, 09:52 |
| Лучше читать по 512 байт , а потом сравнивать в памяти |
| Автор: Snowy 26.8.2005, 10:07 |
| Тогда уж сразу целиком в память глотать Д а какая разница. В XP все равно упреждающее чтение на стримы работает. Говоришь "читать байт", а у тебя уже полфайла закэшировано. |
| Автор: Poseidon 26.8.2005, 17:55 | ||
|
| Автор: Romikgy 30.8.2005, 10:06 | ||
Смысл здеся в другом, при обращении к винту, считывается один или более секторов, а сектор и есть (как правило) 512 байт То бишь даже при чтении 16 байт , считывается сектор = 512 Плюс есть еще и кеширование, но про него не знаю сколько он кидает в память |