Перейти к публикации
Форум - ComputerCraft
Programist135

Запись/чтение файлов на/с магнитных карт

Рекомендованные сообщения

И так, всем здравствуйте. С вами снова Programist135, и за 2 дня (вечер 01.08.2015 и утро 02.08.2015) я написал "умную" программу, которая умеет работать с картами. Вы посмотрите на код, и сильно удивитесь: да-да, 97 строк, это ещё учитывая что нет комментариев!  B-)  Так вот, о чём это я... Ловите исходники!
 

Programist135 Clever card worker

-- Open Source --

 

http://pastebin.com/pewmrKDt

 

P. S. Почему Open Source? Потому что вы на меня ругаетесь из-за Copyright'a  ;) 

 
Ну и куда же нам без инструкции! Если вы просто запустите программу, вам напишется: 
 

Использование: card <-rw> [файл] [имя]
 r: расшифровать данные с карты
 w: зашифровать данные на карту

 

 

Всё понятно. Наберите card -r и вам просто выдадут запрос "Проведите картой...", но! Если у вас не подключен картридер, программа выдаст предупреждение, что логично. Когда вы проведёте картой, напишется "ОК!" и вас спросят, куда сохранить. Если файл "Куда сохранить" будет существовать, программа естественно выдаст предупреждение и попросит ввести ещё раз. Однако если вы напишете:

 

card -r test.ttt

 

То программа просто попросит провести картой и сама сохранит в файл test.ttt. И так, теперь перейдём к записи.

Для записи имеется недостаток: программа умеет записывать максимум 128 байт. Да не удивляйтесь, таково ограничение у карты!

Если вы наберёте card -w то программа попросит ввести имя файла и запишет его. Естественно если нет записывающего устройства, программа сообщит. Однако если вы напишете:

 

card -w test.ttt КАРТА

 

То программа запишет без предупреждения файл test.ttt на карту и назовёт её "КАРТА" А если вы не зададите имя, программа просто запишет файл.

 

Ну вот и всё. Если обнаружили что-то неработающее, обязательно мне сообщите, я не всё проверял. Предлагайте идеи по улучшению программы, тоже попробую реализовать.

Баги

Обо всех багах тоже мне сообщайте, постараюсь исправить =)

  Изменено пользователем Programist135

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

128 байт это мало, поэтому лучше сделай возможность записать один большой файл на много карт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Лёша, вчера у меня была такая задумка)) Только вот мне показалось что для меня будет сложновато.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Из консоли работать с картами особого смысла не имеет, нужна возможность встраивать твою программу в другие программы в виде библиотеки

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хм.... Я думал, что rw это read&write. Добавь ещё, что если rw, то оно дописывает на карту, если там есть место.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ребятки, просьба перескачать программу, я исправил один глюк

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Из консоли работать с картами особого смысла не имеет, нужна возможность встраивать твою программу в другие программы в виде библиотеки

Вот, сделал: http://computercraft.ru/topic/1035-biblioteka-dlia-zapisichteniia-magnitnykh-kart/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость Nymda

Если честно, отмерять и разбивать 1 файл на кучу фрагментов - не проблема, надо лишь поместить файл в переменную и отмерять нужное кол-во символов, например 124, а потом разделить фрагменты и заключить в спец символы (Например квадратные скобки, а лучше $ или №, т.к. они редки в коде), а в начало номер карты и записать. Это и будет означать, что файл записан в несколько карт! (и поможет его восстановить)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если честно, отмерять и разбивать 1 файл на кучу фрагментов - не проблема, надо лишь поместить файл в переменную и отмерять нужное кол-во символов, например 124, а потом разделить фрагменты и заключить в спец символы (Например квадратные скобки, а лучше $ или №, т.к. они редки в коде), а в начало номер карты и записать. Это и будет означать, что файл записан в несколько карт! (и поможет его восстановить)

А если файл большой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Учитывая, что у карточек есть название, мне кажется наиболее логичным записать имя файла и номер "чанка" в него.

 

Допустим карточка называется cote.png [1/22]. Ну и тут как бы всё понятно.

Название остаётся человекочитаемым, но при этом программа чтения карточек может распарсить из него всё что нужно для того, чтобы собрать файл обратно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×