Вопрос № 84546: Подскажите пожалуйста! Как закомпелировать картинки в ЕХЕ программы? Чтобы не таскать картинки отдельно от программы....Вопрос № 84593: Уважаемые эксперты!
подскажите пожалуйста как открыть файл на котором стоит флаг в dbgride.
я пробовал и createprocess и shelexecute но каждый раз пишет
"there was an error opening this document. The file does not exist."
ил...Вопрос № 84606: я бы хотел сам научиться писать программы но абсолбтно не знаю как этому можно научится, желательно самостоятельно а то я много работаю...Вопрос № 84610: Уважаемые эксперты возникла проблема.
Как можно программно добавить дочерние элементы в Treeview, если родительские элементы заданы через Инспектор. Список дочерних элементов формируется при создании формы.
Если можно с кодом.
Заранее бла...Вопрос № 84642: Здраствуйте ! ув Експерты
Подскажите плз как упрятать ини файл от посторонних глаз ?ну например зашифровать чтоли !
Заранее спасибо !...
Вопрос № 84.546
Подскажите пожалуйста! Как закомпелировать картинки в ЕХЕ программы? Чтобы не таскать картинки отдельно от программы.
Отправлен: 28.04.2007, 10:02
Вопрос задал: Bee.line (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Вадим Витомский
Здравствуйте, Bee.line!
Прилинковать их как отдельный ресурс, можно даже создать специальную DLL с необходимыми ресурсами (картинки, иконки, курсоры и т.д.) и использовать ее одновременно несколькими програмамми. Информацию об этом можно прочитать в http://www.realcoding.net/teach/Delphi7_prof/Glava28/Index14.html и в http://samouchka.net/2007/04/25/ispolzovanie_i_sozdanie_dll_v_delphi.html
Ответ отправил: Вадим Витомский (статус: 6-ой класс)
Ответ отправлен: 28.04.2007, 10:19
В них достаточно полно и ясно описано как решить Вашу задачу и какие действия необходимо выполнить, чтобы добиться результата.
И в качестве примера прилагаю исходник программы которая использует контент в виде рисунков и текста из ресурса (сами же файли которые были откомпелированы в ресурс не прилагаю).
Good Luck!!!
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 28.04.2007, 10:42
Отвечает: DimonSoft
Здравствуйте, Bee.line!
Насколько я поня, DLL - это не вариант. Поэтому...
Запустите программу для создания res-файлов. Я предпочитаю ResEdit. Создаёте новый RES-файл, добавляете в него всё, что Вам нужно. Сохраняете в папку с Вашей программой (или любую другую, в которой компилятор найдёт этот файл). В программе прописываете директиву {$R ИмяФайла.res}. Всё...
Теперь о том, как их загрузить... Вариантов несколько. Можно воспользоваться объектом TResourceStream. Приблизительно так...
procedure LoadJPEGfromEXE;
var
MyJPG : TJPEGImage; // Объект - JPEG
ResStream : TResourceStream; // Объект - поток ресурсов
begin
try
MyJPG := TJPEGImage.Create;
ResStream := TResourceStream.CreateFromID(HInstance, 1, RT_RCDATA);
MyJPG.LoadFromStream(ResStream); // Что!? Да, это просто!
Canvas.Draw(12,12,MyJPG); // сделайте это, чтобы увидеть что это действительно работает!
finally
MyJPG.Free;
ResStream.Free;
end;
end;
Это, наиболее универсальный вариант. Посложнее, но на WinAPI это делается по-другому: сначала функцией FindResource получаем идентификатор ресурса, потом вызываем LoadResource. Результат выполнения последней функции - указатель на место ресурса в памяти.
Кроме того, например, воспроизведение звуков (забегая вперёд) в формате WAVE, добавленных в ресурсы программы, возможно путём вызова функции PlaySound(), с указанием соответствующих параметров. Ещё одно... В DirectX (по крайней мере 9-ой версии) загрузка текстур из ресурсов обеспечивается путём вызова соответствующей процедуры (кстати, что меня в своё время порадовало: берёт PNG).
И касательно картинок. Их можно засунуть в TImage'и, а потом оттуда доставать, хотя, конечно, это не лучший вариант.
P.S. При добавлении ресурсов рекомендую использовать JPEG или PNG, чтобы сократить размер EXE-файла (именно из-за этого поддержка PNG меня и порадовала).
Ответ отправил: DimonSoft (статус: 1-ый класс)
Ответ отправлен: 28.04.2007, 10:54
Отвечает: Iksmensp
Здравствуйте, Bee.line!
Можно добавить эти картинки в imagebox и загружать от туда
Ответ отправил: Iksmensp (статус: 2-ой класс)
Ответ отправлен: 28.04.2007, 12:09
Вопрос № 84.593
Уважаемые эксперты!
подскажите пожалуйста как открыть файл на котором стоит флаг в dbgride.
я пробовал и createprocess и shelexecute но каждый раз пишет
"there was an error opening this document. The file does not exist."
или ставил символ **** открывает беспорядочно файлы, не тот на который кликаешь.
Отвечает: Вадим Витомский
Здравствуйте, Kakenov Daulet!
Попробуйте вместо
a:=dbaltgrid1.Fields[0].Value
присвоить значение конкретного файла для проверки правильно ли работает ShellExecute.
Насколько я понимаю, имена файлов необходимо брать из базы данных. В таком случае, можно попробовать обращаться по имени поля, а не по номеру:
a:=dbaltgrid1.FieldsByname('имя_поля_в_котором_хранятся_имена_файлов').AsString
Ответ отправил: Вадим Витомский (статус: 6-ой класс)
Ответ отправлен: 28.04.2007, 15:41 Оценка за ответ: 5
Вопрос № 84.606
я бы хотел сам научиться писать программы но абсолбтно не знаю как этому можно научится, желательно самостоятельно а то я много работаю
Отправлен: 28.04.2007, 17:16
Вопрос задал: Nemirof (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: W@NDeReR
Здравствуйте, Nemirof!
Почитайте книгу Михаил Фленов Библия Delphi я по ней учился
или www.delphiworld.narod.ru много интересных статей
--------- Опыт — дитя мысли, а мысль — дитя действия. Нельзя учиться по книгам.
Ответ отправил: W@NDeReR (статус: 3-ий класс)
Ответ отправлен: 28.04.2007, 18:40 Оценка за ответ: 4 Комментарий оценки: очень хороший ответ но не супер
Отвечает: Diman Soldatov / DES
Здравствуйте, Nemirof!
Читай литературу, книжки умные на эту тему. для тех кто ничего незнает и хочет начать лучше всего подойдет серия для чаников не в обиду будет сказано просто там все разложено и поняятно самое основное.
Ответ отправил: Diman Soldatov / DES (статус: 1-ый класс)
Ответ отправлен: 28.04.2007, 19:39 Оценка за ответ: 4
Ответ отправил: DimonSoft (статус: 1-ый класс)
Ответ отправлен: 28.04.2007, 21:42
Вопрос № 84.610
Уважаемые эксперты возникла проблема.
Как можно программно добавить дочерние элементы в Treeview, если родительские элементы заданы через Инспектор. Список дочерних элементов формируется при создании формы.
Если можно с кодом.
Заранее благодарен.
Отправлен: 28.04.2007, 18:15
Вопрос задал: Лёхус (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Устинов С.Е.
Здравствуйте, Лёхус!
Добавить дочерние легко. Допустим, у Вас есть TreeView1 и Вам нужно для 2-го родительского элемента добавить два дочерних элемента
TreeView1.Items.AddChild(TreeView1.Items.Item[1],'Имя первого дочернего элемента');
TreeView1.Items.AddChild(TreeView1.Items.Item[1],'Имя второго дочернего элемента');
Или же с помощью
TreeView1.Items.AddChildFirst(TreeView1.Items.Item[1],'Имя второго дочернего элемента');
При использовании функции AddChild дочерний компонент будет добавляться самым последним дочерним элементом для данного родительского, а при использовании AddChildFirst он будет самым первым в списке.
Не забудьте, что элементы нумеруются начиная с 0, т.е. если нужно к первому родительскому элементу добавить дочерний нужно писать
TreeView1.Items.AddChild(TreeView1.Items.Item[0],'Имя первого дочернего элемента');
Ответ отправил: Устинов С.Е. (статус: Практикант)
Ответ отправлен: 28.04.2007, 19:19 Оценка за ответ: 4 Комментарий оценки: Извеняюсь , может не совсем точно описал проблему. Добавить дочерний элемент не проблема, для меня проблема добавить дочерний элемент в НУЖНЫЙ ДЛЯ МЕНЯ РОДИТЕЛЬСКИЙ элемент ... при условии что добовлять я буду не из обработчика событий Treeview.
Отвечает: PGM
Здравствуйте, Лёхус!
Полагаю в этом случае стоит использовать процедуру рекурсивного обхода дерева и сравнение по известной информации (обычно по тексту или по Data, который можно использовать как тэг или хранить в нем ссылки на объекты).
Код поиска для сравнения по тексту приблизительно такой
function FindItem(const sName: String; ARoot : TTreeNode): TTreeNode;
var ANode : TTreeNode;
begin
ANode := ARoot.GetFirstChild;
while Assigned(ANode) do begin
if sName = ANode.Text then begin
Result := ANode;
Exit;
end else begin
Result := FindItem(sName, ANode);
if Assigned(Result) then Exit;
end;
ANode := ANode.GetNext;
end;
Result := nil;
end;
Ответ отправил: PGM (статус: 5-ый класс)
Ответ отправлен: 30.04.2007, 01:57 Оценка за ответ: 5
Вопрос № 84.642
Здраствуйте ! ув Експерты
Подскажите плз как упрятать ини файл от посторонних глаз ?ну например зашифровать чтоли !
Заранее спасибо !
Отправлен: 29.04.2007, 00:12
Вопрос задал: VaNuk (статус: 3-ий класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Архангельский Андрей Германович
Здравствуйте, VaNuk!
Есть такой компонент - datafile, который работает с файлом .ini и имеет расширенные функции, в том числе и шифрование файла .ini.
Установки не требует - просто включи в Uses
Компонент прикреплен
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО