Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2009, 07:24   #11
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Цитата:
Сообщение от r9m Посмотреть сообщение
Вот эт да )

Application.Exename - это поле, типа string, которое изменяется закрытым методом GetExeName: string;
Ну скажи а Application - что такое, или если взять такой код:
Label1.Caption - то это, что получиться ??
uberchel вне форума Ответить с цитированием
Старый 23.10.2009, 08:33   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так хватит спорить. Четкий ответ дан в 6-ом посте - тему в принципе можно закрывать, так что заканчивайте помидорами марафет наводить друг-другу.
Ждем автора.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2009, 08:49   #13
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Если загрузить рисунок не программно, а через Инспектор объектов, то рисунок потом вобще не нужен.Он будет в скомпилированном экзешнике.И, еще как вариант - сохранять в файле ресурсов сам рисунок ( смотри вложение в соседней теме "Как запихнуть .bmp в .exe") и потом программно загружать из ресурсов.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 23.10.2009, 11:36   #14
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
По умолчанию

Цитата:
Сообщение от Вавел из ГМТУ Посмотреть сообщение
Допустим у тебя есть программа и есть картинки. Предположим ты создал папку Images тамже где и .exe и запихнул туда свои картинки.

Теперь немного теории.
1. Есть функции, которые возвращают полный путь, откуда запустилась твоя программа. Я знаю как минимум две, это: ParamStr(0) и Application.Exename. Хотя на счёт того что последнее является функцией я неочень уверен.
Все они вернут строки такого типа:
C:\Program Files\Borland\Delphi7\Projects\Proj ect1.exe
Тоесть полный путь к приложению от куда оно запустилось.

2. Есть функции который могут обрезать эту строку до определёных кусочков. Например расширение файла, диска, директории и пр.
Конкретней тут:
http://www.delphibasics.ru/ExtractFileDir.php

От теории к практике. Теперь напишем как "привязать" все твои картинки к программе и сделать так, чтоб она их находила не зависимо от того, откудо запущена.

ExtractFilePath(ParamStr(0)) + 'Images\PIC.bmp'

Гениально, не правдали?

Image1.Picture.LoadFromFile(Extract FilePath(ParamStr(0)) + 'Images\PIC.bmp');

Вот теперь программа сама найдёт твои картинки в своих папках.

PS: и так указывать пути надо везде, ибо это правильно, ибо это гениально.
Спасибо за помощь, все получилось! Код ExtractFilePath(ParamStr(0)) + 'Images\PIC.bmp' сработал! Я всем очень благодарен!

Последний раз редактировалось Lifefine; 23.10.2009 в 11:42.
Lifefine вне форума Ответить с цитированием
Старый 23.10.2009, 12:07   #15
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
а какой код нужно написать чтобы картинка была внутри в ехе файле?
...нужно загнать в ресурсы
делаем rc файл с содержимым
Код:
1 RCDATA ваша картинка.bmp
...в командной строке компилим brcc32 ваш ресурс.rc ваш ресурс.res

и в поректе подключаем...после implementation добавляем {$R res\ваш ресурс.RES}
грузим из ресурсов...
Код:
var ResStream: TResourceStream;
begin
 ilogo:= TBitmap.Create;
 ResStream:= TResourceStream.CreateFromID(HInstance, 1, RT_RCDATA);
 ilogo.LoadFromStream(ResStream);
 ResStream.Free;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 23.10.2009, 19:21   #16
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
...нужно загнать в ресурсы
делаем rc файл с содержимым
Код:
1 RCDATA ваша картинка.bmp
...в командной строке компилим brcc32 ваш ресурс.rc ваш ресурс.res

и в поректе подключаем...после implementation добавляем {$R res\ваш ресурс.RES}
грузим из ресурсов...
Код:
var ResStream: TResourceStream;
begin
 ilogo:= TBitmap.Create;
 ResStream:= TResourceStream.CreateFromID(HInstance, 1, RT_RCDATA);
 ilogo.LoadFromStream(ResStream);
 ResStream.Free;
Спасибо за помощь! А что такое 1 RCDATA? Компилить на обычной командной строке виндовс?
Lifefine вне форума Ответить с цитированием
Старый 23.10.2009, 19:56   #17
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
А что такое 1 RCDATA? Компилить на обычной командной строке виндовс?
ccылка на 1 ресурс. да
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 23.10.2009, 20:02   #18
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
ccылка на 1 ресурс. да
Понял, это писать в программу 1 RCDATA или в командной строке, извините за много вопросов, я чайник))


Еще такой вопрос в командной строке я пишу brcc32 Project1. rc Project1.res, когда компилю выдается ошибка Error Could not open input file Project1.rc, что это может быть? Хотя я в своем проекте заметил что нет Project1 с расширением .rc, есть только .res.

Последний раз редактировалось Lifefine; 23.10.2009 в 20:15.
Lifefine вне форума Ответить с цитированием
Старый 24.10.2009, 00:31   #19
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

тебе нужно файл project1.rc положить в папку с компилятором ресурсов (самое простое решение), ну и после компилинга назад её в папку с проектом. и яб её переименовал во что нить другое, отличное от Project1.rc, например myres.rc и включил бы в проект как показал тебе уже raxp

Цитата:
и в поректе подключаем...после implementation добавляем {$R res\ваш ресурс.RES}
Только положи свой "ваш ресурс.RES" в подпапку \res, своей проектной папки, если будешь делать как сказал raxp

Цитата:
Сообщение от uberchel
Ну скажи а Application - что такое, или если взять такой код:
Label1.Caption - то это, что получиться ??
TApplication - класс. TLabel - тоже. Получится что Caption - это поле экземпляра класса. Так как Tlabel - сын TCustomLabel, который в свою очередь сын TGraphicControl, который оказался сыном TControl который имеет поле Caption, который можно писать и читать метоами GetText & SetText. Вот такая Санта-Барбара.

Последний раз редактировалось r9m; 24.10.2009 в 01:03.
r9m вне форума Ответить с цитированием
Старый 24.10.2009, 01:18   #20
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Ну и что, а я о чём? Я и говорю что Компонент передает свою функцию, то есть и получаться что юзаеш функцию компонента!
Application.exeName .
uberchel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранить картинку и текст в одном файле 856100 Общие вопросы Delphi 15 31.08.2009 13:48
TWebBrowser - сохранить картинку Air Компоненты Delphi 7 16.01.2009 02:31
Как нарисовать картинку сбоку в меню как в Punto Switcher Crazyman Win Api 4 26.09.2008 18:13
Как загрузить картинку? Editor Работа с сетью в Delphi 11 15.07.2008 23:13