Форум: "Начинающим";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];
ВнизКак передать имя файла теста программе тестирования? Найти похожие ветки
← →
Евгенич © (2007-02-08 03:27) [0]Уважаемые мастера! Что я делаю неправильно? Откомпилировав пример программы тестирования из книги по Дельфи получил ошибку "Не задан файл вопросов теста". Однако все делал по книге. По книге предложено передать имя файла теста программе тестирования через параметр командной строки (используются ParamCount, ParamStr) . Для этого в свойствах ярлыка к программе тестирования (в командной строке) нужно приписать имя файла вопросов с присущим ему расширением. Еще из среды Дельфи нужно в параметрах (Run\parameters) имя файла вопросов указать (peterb.txt).
Так вот, если я запускаю прогу из среды, то программа тестирования работает, а если из папки - то выдает "Не задан файл вопросов теста".
Если же я пытаюсь вызвать программу через ярлык (свойства которого изменил), то открывается просто txt-шный файл вопросов теста (что и понятно - ведь он оказывается конечным файлом указанного пути). Вероятно я неправильно изменяю свойства ярлыка в командной строке? (Ярлык перестает быть связанным с самой программой).
Что не так?
Кстати, в книге автор так рекомендует изменять свойства ярлыка: "...в поле Объект, после имени файла программы (Test1.exe), ввести имя файла теста (Peterb.txt), заключив его в двойные кавычки", а на картинке так (видимая часть): lphi7\Проекты\Тест, версии 1 и 2\PETERB.txt"
← →
Евгенич © (2007-02-08 05:16) [1]Хорошо бы узнать еще альтернативный способ - как сделать так, чтобы вопросы теста были недоступны для пользователя (особенно признаки правильных и неправильных ответов :-)). Если делать так, как предлагает автор книги, то любой может посмотреть ответы...
Может быть есть способ позволяющий вложить вопросы в сам ехе-шник?
← →
ЮЮ © (2007-02-08 05:30) [2]файл в разных условиях ищется в разных директориях.
lphi7\Проекты\Тест, версии 1 и 2\PETERB.txt"
lphi7\Проекты\Тест, версии 1 и 2\<программа тестирования>.exe" PETERB.txt
т.е. сначала - имя программы, а затем - параметр
← →
Евгенич © (2007-02-08 05:42) [3]Ура! Сработало! Спасибо!
А как спрятать вопросы к тесту и ответы к ним?
← →
RASkov (2007-02-08 06:25) [4]> А как спрятать вопросы к тесту и ответы к ним?
Да не надо пока ничего никуда прятать, сначала разберись как работает то, что только-что сделал
А то судя по твоим постам(вопросам), ты толком-то еще незнаешь что такое имя файла; параметр командной строки; ярлык.
А по вопросу - шифруй. При чтении расшифровывай в программе, для твоей тестпрограммы подойдет какой-нибудь самый простой способ шифрования
А вот(на всякий случай) пара функций (де)шифрования из RxStrUtils:function XorEncode(const Key, Source: string): string;
var
I: Integer;
C: Byte;
begin
Result := "";
for I := 1 to Length(Source) do begin
if Length(Key) > 0 then
C := Byte(Key[1 + ((I - 1) mod Length(Key))]) xor Byte(Source[I])
else
C := Byte(Source[I]);
Result := Result + AnsiLowerCase(IntToHex(C, 2));
end;
end;
function XorDecode(const Key, Source: string): string;
var
I: Integer;
C: Char;
begin
Result := "";
for I := 0 to Length(Source) div 2 - 1 do begin
C := Chr(StrToIntDef("$" + Copy(Source, (I * 2) + 1, 2), Ord(" ")));
if Length(Key) > 0 then
C := Chr(Byte(Key[1 + (I mod Length(Key))]) xor Byte(C));
Result := Result + C;
end;
end;
← →
Евгенич © (2007-02-08 07:00) [5]
> сначала разберись как работает то, что только-что сделал
Это точно! Ни черта еще не понимаю. Решил вот код попробовать почитать (как советовали здесь на форуме). И сразу столкнулся с "трудностями перевода", хоть и смешными, наверняка.
Спасибо за подсказки! Мне теперь надолго разбираться хватит... :-)
Хотя все равно любопытство гложет - возможно ли вопросы (с пометками правильных) прямо в exe-шник запихать?
← →
RASkov (2007-02-08 07:24) [6]> возможно ли вопросы (с пометками правильных) прямо в exe-
> шник запихать?
Можно (ресурсы), но не нужно. А то получится чтобы сменить тест, нужно новую программу писать...
← →
Евгенич © (2007-02-08 07:50) [7]Ясно.
Спасибо!
Про функции шифрования:
Что бы зашифровать txt-файл я должен отдельную программу шифрования сделать (что бы получить закодированный файл), а в программу тестирования функцию дешифрования поместить?
Или и то, и другое можно через программу тестирования осуществить?
← →
ЮЮ © (2007-02-08 07:57) [8]
> Евгенич © (08.02.07 07:50) [7]
Это уже на твое усмотрение. Как вариант:
Программа должна уметь работать как с шифрованным, так и нешифрованным файлом, сама определяя факт шифрования.
Если загружен нешифрованный тест должен появиься пункт меню(кнопка и т.п.) "Зашифровать".
Вариант программы с доп.кнопкой "Расшифровать" продавать тестирующимся за отдельную цену :)
← →
Евгенич © (2007-02-08 08:32) [9]Благодарю за идею!
Так сказать, из серии "мы не ищем легких путей"...
Мол, зачем смотреть в ответы, когда их можно зашифровать (во избежание искушения) :-).
Только вот из всего перечисленного я пока разве что смогу продать прогу с "доп.кнопкой" :-). Еще бы писать научиться...
Поэтому буду думать - как сделать программу шифрования.
Программа тестирования пусть с уже зашифрованными файлами общается (думаю так легче будет обновлять базу вопросов).
Или можно еще проще?
← →
RASkov (2007-02-08 08:32) [10]> Что бы зашифровать txt-файл я должен отдельную программу
> шифрования сделать (что бы получить закодированный файл)
> , а в программу тестирования функцию дешифрования поместить?
Имхо, я бы сделал две программки, одна для создания теста, которая сохраняет зашифрованный файл, а другая собственно сам тест...
← →
Евгенич © (2007-02-08 08:51) [11]Кстати, хорошо exe-шнику - в него так просто не влезешь, а вот txt-файл на этот предмет уязвим.
Залезет, скажем, нерадивый пользователь в такой закодированный txt-шник, понаделает дел, и все - кердык программе тестирования (т.е. ерунду будет выдавать).
Есть способ, после шифрования, защитить txt-файл (что-то вроде "только для чтения")?
← →
ЮЮ © (2007-02-08 09:00) [12]
> Кстати, хорошо exe-шнику - в него так просто не влезешь,
> а вот txt-файл на этот предмет уязвим.
Зашифрованный файл может быть таким же бинарником, как и ехе-шник.
Блокнот. Файл>Открыть><ехе-шник>. Правь, Сохраняй. :) Правда он тоже оаботать перестанет.
кердык программе тестирования (т.е. ерунду будет выдавать).
не рграничивайся просто текстом, используй свою аббревиатуру в начале строки. Её отсутствие - пропус строки, как комментария. Тогда на поврежденном или вообще не тесте получишь 0 "правиильных" вопросов, о чем и скажешь пользователю.
← →
RASkov (2007-02-08 09:03) [13]> Залезет, скажем, нерадивый пользователь в такой закодированный
> txt-шник,
От нерадивого пользователя ничего не спасет, и это будут уже его проблемы а не твои.
> Есть способ, после шифрования, защитить txt-файл (что-то
> вроде "только для чтения")?
FileSetAttr("MyFile.txt", faReadOnly);
← →
Евгенич © (2007-02-08 09:15) [14]
> ЮЮ ©
> используй свою аббревиатуру в начале строки
Хорошая идея! Спасибо!
Программу не защитит, так хоть саму идею и репутацию.
Что немаловажно.
> RASkov
> FileSetAttr("MyFile.txt", faReadOnly);
Класс!
Буду пробовать.
← →
RASkov (2007-02-08 09:41) [15]> Класс!
А что классного то? Непутевый пользователь пользуется "непутевым блокнотом"(тот-же Bred), которому наплевать на атрибуты при сохранении... Да и сам атрибут легко снимается....
> Хорошая идея! Спасибо!
> Программу не защитит, так хоть саму идею и репутацию.
> Что немаловажно.
Придумай свой формат файла, и хоть картинки туда вставляй.
← →
Евгенич © (2007-02-08 09:49) [16]А как выделить "атрибут" начала вопроса если файл зашифрован? Без него программа просто откажется выдавать вопросы. И не будут говорить - мол сделал что-то несуразное и неработающее. В этом увидел пользу.
Про "свой формат файла" я совсем не думал. Интересная мысль.
В каком направлении думать :) , чтобы его создать?
Есть ли сложности в том, чтобы научить программу тестирования читать этот "свой формат"?
← →
ЮЮ © (2007-02-08 09:52) [17]Придумай свой формат файла, и хоть картинки туда вставляй.
Я в подобных случаях использую zip-архив с паролем:
защита получще любительской.
покореженный файл не выгрузишь.
можно и картинки сложить
← →
Евгенич © (2007-02-08 09:56) [18]Лихо. Голова кругом от количества возможностей!
И что программа хранит пароль, и предъявляет его архиватору?
← →
ЮЮ © (2007-02-08 10:06) [19]Ну примерно. Только не совсем уж в явном виде, плюс имя файла задействует.
← →
Евгенич © (2007-02-08 10:13) [20]Т.е. программа пытается открыть zip-файл;
Архиватор запрашивает пароль;
Программа заносит его в позицию курсора и просит пользователя нажать ОК?
И в папке с программой появляется разархивированный файл на время работы программы, с которого и производится чтение?
Я "где-то рядом"?
← →
RASkov (2007-02-08 10:15) [21]> [17] ЮЮ © (08.02.07 09:52)
Ну дык здесь, скорее всего, во время работы программы, файлы распаковываются кудато(найти не сложно) и опять мы имеем к ним доступ :)
> [18,20] Евгенич © (08.02.07 09:56)
Да не парься ты пока с этими сложностями, постепенно сделаешь свою супер тестовою программу. :0)
← →
ЮЮ © (2007-02-08 10:24) [22]Используется компонент, для которого пароль - одно из свойств. Пользователь в этом процессе не используется :)
Аналогично, извлеченный файл не пишется на диск, а распаковывается в MemoryStream, откуда данные и забираются.
← →
Евгенич © (2007-02-08 10:24) [23]Спасибо! Я буду в это верить! :-)
Любопытственно...
В самом деле, уже действительно есть над чем "кропеть ночами".
Это покруче любых кроссвордов будет...
← →
Евгенич © (2007-02-08 10:26) [24]С компонентом - это хитро-о-о...
Где такие водятся? :-)
Компоненты, то есть...
← →
Евгенич © (2007-02-08 10:30) [25]Правильно ли я понял, что в MemoryStream большую базу вопросов с картинками не запихнуть?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.043 c