![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте, есть программа для создания тестов, которая сохраняет тест в текстовый файл. Требуется организовать возможность использования рисунков в тестах. То есть в процессе создания пользователь указывает путь до рисунка, его размеры и тд.
Подскажите, пожалуйста, как файлы с изображениями можно совместить с текстовой базой вопросов. P.S. Просто загружать рисунки по месту их размещения не походит, так как такой метод будет работать только на конкретном компьютере, а нужно, чтобы на другом тоже все было хорошо. ![]() Уже неделю голову ломаю... Заранее благодарен. |
#2
|
||||
|
||||
![]() Элементарно. Просто указывается путь к рисунку, а для мобильности делается относительный путь. Например ваша тестовая программа запускается из каталога: E:\Programs\Test\
а рисунки к тесту расролагаются по пути E:\Programs\Test\Pic\ Указываете в файле путь Pic\ В программе при запуске получаем информацию о месте старта: Код:
Path := ExtractFilePath(Application.ExeName) ![]() Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
![]() разве TImageList не помогает со вкладки Win32? ну или в ресурсах файла, тоже неплохой вариант
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#4
|
||||
|
||||
![]() А если у него картинки 2000х2000? Да еще их штук 100 будет. Это-же тест со случайным выбором вопросов и материала для него.
Что действительно возможно имеет смысл, так это зашифровать картинки. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
![]() тогда можно свой формат создать, с рекордами ну и bitmap или jpeg внутри, заодно можно было и зашифровать и сжать если необходима такая защита конешно, я бы наверное так и сделал
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#6
|
|||
|
|||
![]() Спасибо за советы. Но хотелось бы услышать способ как можно записать рисунок в txt файл и потом его оттуда считать.
![]() |
#7
|
||||
|
||||
![]() пример с рекордами содержит немало строчек, я сейчас занят, поэтому дам способ полегче: создаёш новый класс от TComponent, затем при помощи TFileStream сохранить этот класс-компонент в файл, получится бинарник с информацией. сохраняются свойства из секции Published класса, сохраняй использую функцию WriteComponent и чтение ReadComponent, если посидеть немного над функцией то можно разобратся
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#8
|
|||
|
|||
![]() Делал такую штуку. Для этого "рисовал" дерево классов, которые умели сохраняться в поток (TStream). Собственно, для сохранения картинки в поток надо
1. Записать длинну данных 2. Записать сами данные Для этого используется дополнительный поток в памяти. Т.е. картинку сохраняем во временный поток в памяти, берем полученную длинну данных, пишем ее в основной поток, далее все данные временного потока копируются в основной. При чтении наоборот - вычитываем длинну, копируем нужный кусок во временный поток и из его читаем данные в картинку. |
#9
|
||||
|
||||
![]() Цитата:
Собственно вы можете и сами такое делать. Любые двоичные данные можно представить как текстовые если записывать значение байта как число. например: х10х255х50 и т.д. Все что вам необходимо, это написать простенькую пару функций которые JPG или BMP-файл будут побайтно читать/писать в данном формате. Понятно, что такой способ работы с данными несколько медленее чем работа напрямую,но современные компы совершают милионы операций в секунду и ощутимой задержки небудет. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#10
|
|||
|
|||
![]() А есть ли готовые компоненты для подобного рода функций?
|