| Автор |
Сообщение |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 15/05/2008 23:19:08
|
mozers™
Новичок
Зарегистрирован: 08/05/2008 16:18:54
Сообщений: 27
Оффлайн
|
C удивлением обнаружил что такая необходимая функция в Lua отсутсвует.
Написал свою:
Работает
Только подумалось мне что наверняка этот вопрос при лучшем знании Lua можно решить элегантнее
(Условие одно: используем только стандартные возможности Lua)
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 15/05/2008 23:57:34
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн
|
Для Linux и ему подобных: вместо "copy" подставить "cp" (и возможно, поменять местами одинарные и двойные кавычки).
Это сообщение было редактировано 2 раз. Последнее обновление произошло в 16/05/2008 00:06:25
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/05/2008 08:34:17
|
mozers™
Новичок
Зарегистрирован: 08/05/2008 16:18:54
Сообщений: 27
Оффлайн
|
Ну да, конечно есть os.execute с помощью которой можно сделать все что может ОС.
Вариант принимается.
Но я как то недолюбливаю ее примитивную реализацию с мигающим окном консоли, поэтому от такого варианта отказался сразу.
А варианты решения без os.execute есть?
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/05/2008 11:11:26
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн
|
mozers™ wrote:А варианты решения без os.execute есть?
Кроме вышеприведенных двух, есть вариант использования дополнительных библиотек для Lua. Например, я пользуюсь (неопубликованной) библиотекой SysUtils, которая содержит функцию sysutils.CopyFile.
Это сообщение было редактировано 2 раз. Последнее обновление произошло в 16/05/2008 11:12:35
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/05/2008 13:20:07
|
mozers™
Новичок
Зарегистрирован: 08/05/2008 16:18:54
Сообщений: 27
Оффлайн
|
2smz
Не... Внешние библиотеки - это уже нарушение условий задачи.
Я просто думал что мой код можно переписать более благообразно...
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 16/05/2008 14:36:07
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн
|
mozers™ wrote:2smz
Я просто думал что мой код можно переписать более благообразно...
Пожалуйста. Здесь починены 2 проблемы из 3-х имеющихся в оригинале. Третья - то что входной файл читается сразу целиком - это будет проблемой для файлов размером в несколько гигабайтов. Но это уже оставлено как упражнение для автора.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 19/05/2008 18:34:33
|
__Alexey__
Новичок
Зарегистрирован: 19/05/2008 18:23:35
Сообщений: 9
Оффлайн
|
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 19/05/2008 19:30:15
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн
|
__Alexey__ wrote:
Здесь присутствуют все 3 дефекта, имеющиеся в оригинальной версии mozers™
А в дополнение - ещё один: на выходе из ф-ции не восстановлено прежнее значение io.output.
Это сообщение было редактировано 3 раз. Последнее обновление произошло в 19/05/2008 19:46:12
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 19/05/2008 22:08:35
|
__Alexey__
Новичок
Зарегистрирован: 19/05/2008 18:23:35
Сообщений: 9
Оффлайн
|
Зато 1 строка.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 19/05/2008 22:26:22
|
__Alexey__
Новичок
Зарегистрирован: 19/05/2008 18:23:35
Сообщений: 9
Оффлайн
|
Это сообщение было редактировано 3 раз. Последнее обновление произошло в 19/05/2008 22:41:03
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 19/05/2008 23:32:53
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн
|
__Alexey__
Уже лучше, если не считать небрежности. Вот твоя ф-ция с поправками:
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 20/05/2008 15:19:46
|
__Alexey__
Новичок
Зарегистрирован: 19/05/2008 18:23:35
Сообщений: 9
Оффлайн
|
Нет смысла увеличивать буфер.
Для проверки на вашем железе:
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 20/05/2008 16:13:35
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн
|
__Alexey__ wrote:Нет смысла увеличивать буфер.
Для проверки на вашем железе:
Проверка на моём железе дала оптимальный буфер в размере 8 KB. Но это для меня бесполезные данные, т.к. я не копирую файлы подобными функциями. Пользуюсь либо библиотекой на Си, либо os.execute.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 20/05/2008 23:00:13
|
__Alexey__
Новичок
Зарегистрирован: 19/05/2008 18:23:35
Сообщений: 9
Оффлайн
|
Сильно медленней, чем библиотечная функция (на С)?
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 21/05/2008 00:41:58
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 209
Оффлайн
|
__Alexey__ wrote:Сильно медленней, чем библиотечная функция (на С)?
Библиотечная функция, которую я имел в виду - это просто обёртка вокруг CopyFile из Windows API. К моему удивлению, её скорость при копировании больших файлов практически та же, что и у вышеприведенных Lua функций. Но тут дело не в скорости: просто предпочитаю пользоваться стандартной функцией, а не изобретать велосипед.
|
|
|
 |
|
|