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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2013, 23:38   #1
Painkiller_13
Пользователь
 
Регистрация: 07.07.2011
Сообщений: 58
По умолчанию Delphi res (проверить существует ли файл)

Есть файл img.res в не храняться изображения

Код:
ResStream := TResourceStream.Create(HInstance, edit1.Text, RT_RCDATA);
Image1.Picture.LoadFromStream(ResStream);
ResStream.SaveToFile('img.png');
image1.Picture.LoadFromFile('img.png');
ResStream.Free;
В edit1 пишеться имя картинки которую нужно загрузить. Как проверить есть ли данная картинка в res непосредственно перед загрузкой?
Painkiller_13 вне форума Ответить с цитированием
Старый 18.01.2013, 00:23   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

а если
Код:
try
  ResStream.SaveToFile('img.png');
  image1.Picture.LoadFromFile('img.png');
Finally
  ResStream.Free;
  <такого файла нет>
end;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 18.01.2013, 02:40   #3
Painkiller_13
Пользователь
 
Регистрация: 07.07.2011
Сообщений: 58
По умолчанию

Код:
ResStream := TResourceStream.Create(HInstance, edit1.Text, RT_RCDATA);
Ошибку выдает на этой строке.
И мне нужно если файл есть 1 действие если нету то 2 действие
Painkiller_13 вне форума Ответить с цитированием
Старый 18.01.2013, 03:38   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну так ловите ошибку на той строке, исключение там будет означать что ресурса такого нет(в общем случае).
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.01.2013, 05:12   #5
Амазонка
Новичок
Джуниор
 
Аватар для Амазонка
 
Регистрация: 18.01.2013
Сообщений: 1
По умолчанию

А вообще, как можно в Delphi узнать существует какой-либо файл, или нет?
Амазонка вне форума Ответить с цитированием
Старый 18.01.2013, 06:44   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

FileExists('c:\папка\файл'); - функция возвращает true, если файл существует и false, если нет.
Читайте хелп, да и нагуглить это просто.
phomm вне форума Ответить с цитированием
Старый 18.01.2013, 15:20   #7
Painkiller_13
Пользователь
 
Регистрация: 07.07.2011
Сообщений: 58
По умолчанию

Код:
try 
// Все что должно выполняться, и может вызвать ошибку 
finally 
// Всё что выполнится даже в случае ошибки
Код:
try 
// Все что должно выполняться, и может вызвать ошибку 
except 
// Всё что выполнится только в случае ошибки
1.Нужно чтоб когда ошибка срабатывала окно с ошыбкой не выводилось
2.Нужно чтоб происходила два действие в зависимости от то была ошибка или нет.
try finally - Выполниться в любом случае
try except - Можно описать если ошибка произойдет но не смог добавит еще одну ветку в которой действие будет выполняться только если ошибки небыло.
Painkiller_13 вне форума Ответить с цитированием
Старый 18.01.2013, 15:45   #8
Painkiller_13
Пользователь
 
Регистрация: 07.07.2011
Сообщений: 58
По умолчанию

Все разобрался после except добавил переменую в которую записую была ошыбка или нет.
Появился еще один вопрос.
Код:
ResStream := TResourceStream.Create(HInstance, edit1.Text, RT_RCDATA);
Image1.Picture.LoadFromStream(ResStream);
ResStream.SaveToFile('img.png');
image1.Picture.LoadFromFile('img.png');
ResStream.Free;
Код:
ResStream := TResourceStream.Create(HInstance, edit1.Text, RT_RCDATA);
image1.Picture.Bitmap.LoadFromStream(ResStream);
ResStream.Free;
При использование 2 кода выдает ошибку bitmap image is not valid
(При первом варианте все прекрасно работает)
изображение формата .png в uses подключены pngimage, jpeg; но ошыбка всеровно продолжаеться.
Painkiller_13 вне форума Ответить с цитированием
Старый 18.01.2013, 15:53   #9
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Код:
try
//код, где может быть ошибка
//последние строки - выполнить, то, что надо, когда ошибка не произошла
except
// когда ошибка произошла
end;
Всё просто.

Насчёт имейджа - пробуйте прямо в Picture записывать
phomm вне форума Ответить с цитированием
Старый 18.01.2013, 18:09   #10
Painkiller_13
Пользователь
 
Регистрация: 07.07.2011
Сообщений: 58
По умолчанию

Код:
image1.Picture.Bitmap.LoadFromStream(ResStream);
я и записую а оно bitmap image is not valid
Painkiller_13 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить существует ли таблица Jrcfyf БД в Delphi 2 09.02.2012 14:30
Delphi 7 и RES файл большого размера acsbaks Общие вопросы Delphi 4 29.11.2011 18:49
Delphi. Проверить, если файл с таким именем существует то задать новое случайное имя delfin07 Помощь студентам 9 04.06.2011 23:21
Проверить существует ли сайт? (PHP) Delphinchik PHP 1 13.12.2010 19:19
как открыть текстовый файл из ресурса{$R *.RES} в мемо1 (Delphi 7) veronika93 Помощь студентам 1 20.03.2009 08:58