Знай путь Имидж
Я новичок в программировании и у меня есть игра (например, Flappy Bird). В моем проекте я обычно меняю изображение, поэтому в MainForm у меня есть TImage. * Мой вопрос: как я могу точно знать, где путь изображения, конечно, я использую Image1.Picture.LoadFromFile
пример: у меня есть - имя картинки: 'Scene1.bmp'; - TForm1.Button1Click(Отправитель: TObject);
* Миссия: когда пользователь нажимает кнопку, изображение будет 'LoadFromFile', чтобы установить Scene1.bmp в TImage
Пожалуйста, помогите мне, спасибо большое!
2 ответа
Когда вы обращаетесь к файлу в вашем приложении только с помощью File-Name (например, "Scene1.bmp"), ваше приложение будет искать файл по пути вашего exe-файла приложения как Default-path вашего приложения, но Default-Path может быть изменив по некоторым причинам, вы можете установить путь по умолчанию для вашего приложения с помощью SetCurrentDir
функция и получить путь по умолчанию с GetCurrentDir
функция
Каждый процесс имеет "текущий каталог" в качестве пути по умолчанию, и его можно изменить, поэтому вы всегда должны работать с полным адресом файла, который хотите использовать
Вы можете получить полный путь к exe-файлу вашего приложения из ExeName
поле Application
Учебный класс:
var
MyApplicationFullPath : String;
begin
MyApplicationFullPath := Application.ExeName;
end;
С ExtractFilePath
Функция, которую вы можете получить Путь без File-Name вашего exe-файла приложения, фактически адрес папки exe-файла, а затем вы можете использовать этот адрес для работы с файлами помимо вашего exe-файла, например:
Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Scene1.bmp')
Вы можете быть уверены, что 'Scene1.bmp' будет найден, и путь вашего приложения по умолчанию не имеет значения
КАК МОЖНО Точно ЗНАТЬ ГДЕ ПУТЬ ИЗОБРАЖЕНИЯ
Текущий каталог приложения + 'Scene1.bmp':
ImageFullAddress := GetCurrentDir + 'Scene1.bmp'
Вы можете использовать папку (или подпапку) файла EXE вашего приложения для хранения вашего файла Scene1.bmp.
В VCL у вас есть глобальный объект Application
типа TApplication
, Вы можете использовать собственность Application.ExeName
чтобы получить имя исполняемого файла приложения, включая информацию о пути. Смотрите документацию.
С помощью TPath.GetDirectoryName вы можете извлечь части диска и каталога. Смотрите эту документацию.
Так, например, путь к подпапке с именем Sub TPath.GetDirectoryName(Application.ExeName)+'\Sub';
Таким образом, вы можете создать полный путь и имя файла и использовать его в LoadFromFile
,