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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2009, 14:43   #1
Marisha*
Новичок
Джуниор
 
Регистрация: 12.07.2009
Сообщений: 4
Сообщение

Всем привет!

У меня такая проблемка. На некотором этапе моей программы открывается файл и с него считываются данные. Потом по нажатию кнопки можно вызвать диалог и открыть файл (из него берется картинка). Проблема заключатся в том, что после открытия файла из диалога при любом случае вызова процедуры reset выскакивает ошибка 'file not found', если диалог не вызывать, то ошибки.

Не можете подсказть, в чем тут может быть дело?

Если диалог не вызывать, то ошибки нет

Последний раз редактировалось Stilet; 13.07.2009 в 11:12.
Marisha* вне форума Ответить с цитированием
Старый 12.07.2009, 14:46   #2
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

Ваш вопрос не совсем понятен. Например, надо делать так
Код:
if opendialog1.execute then
if fileexists(opendialog1.filename) then
begin
///AssignFile(...);Reset(...)
end;
А вообще лучше бы увидеть ваш код.
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 12.07.2009, 14:49   #3
Marisha*
Новичок
Джуниор
 
Регистрация: 12.07.2009
Сообщений: 4
По умолчанию

У меня так:

if OpenDialog1.Execute then begin
Image1.Picture.LoadFromFile(Extract FileName(OpenDialog1.Filename));end ;

А reset потом вызывается для другого файла и происходит ошибка.
Marisha* вне форума Ответить с цитированием
Старый 12.07.2009, 15:30   #4
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Цитата:
Сообщение от Marisha* Посмотреть сообщение
У меня так:

if OpenDialog1.Execute then begin
Image1.Picture.LoadFromFile(Extract FileName(OpenDialog1.Filename));end ;

А reset потом вызывается для другого файла и происходит ошибка.
Вы загружаете картинку только из каталога программы , если же картпнка находится в другом месте - вылетает ошибка.
Должно быть
Код:
if OpenDialog1.Execute then begin
Image1.Picture.LoadFromFile(OpenDialog1.Filename);end;
И ещё не помешало бы
Код:
if opendialog1.execute then
if fileexists(opendialog1.filename) then
begin
Image1.Picture.LoadFromFile(OpenDialog1.Filename);
end;
как Вам написали выше .

Последний раз редактировалось Lime; 12.07.2009 в 15:32.
Lime вне форума Ответить с цитированием
Старый 12.07.2009, 15:44   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а как прописан reset того файла?
а точнее меня интересует assignfile
наверно путь относительный используете, но не думаете что текущая папка меняется после диалога...
используйте ExtractFilePath(Application.ExeName ) для получения папки с приложением.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.07.2009, 15:45   #6
Marisha*
Новичок
Джуниор
 
Регистрация: 12.07.2009
Сообщений: 4
По умолчанию

Спасибо,

Я кажется поняла, в чем ошибка. У меня в коде:

Код:
OpenDialog1.FileName := 'pathways\glucolis.bmp';
if OpenDialog1.Execute then  begin
Image1.Picture.LoadFromFile(ExtractFileName(OpenDialog1.Filename));
end;
Получается, что после закрытия дилога все пути "отсчитываются" от папки pathways(??), и поэтому когда я потом вызываю процедуру открытия другого файла (куда передается string переменная с относительным путем), то файл, понятное дело, не находится. Если указывать полные пути, то все работает.
Можно как-то это исправить? Ведь если прописывать полные пути, то при переносе папки с проектом в другую директорию, нужно будет все пути исправлять, а это неудобно.

Пепел Феникса, я именно про это и говорю)

А Application в ExtractFilePath(Application.ExeName ) это что за переменная? Как ее объявлять и что ей присвоить?

Последний раз редактировалось Stilet; 13.07.2009 в 11:18.
Marisha* вне форума Ответить с цитированием
Старый 12.07.2009, 16:03   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это ваше приложение само
её не нужно обьявлять нигде.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.07.2009, 16:06   #8
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

ExtractFilePath('') - это функция, которая вернет путь до файла, то есть отбросив имя файла, анпример ExtractFilePath(C:\Windows\notepad. exe) - вернет C:\Windows\ . Application.ExeName - это путь до твоего исполняемого файла с учетом его имени. ExtractFilePath(Application.ExeName ) вернет путь каталога в котором лежит выполняемый файл.
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 12.07.2009, 16:15   #9
Marisha*
Новичок
Джуниор
 
Регистрация: 12.07.2009
Сообщений: 4
По умолчанию

Спасибо Все работает
Marisha* вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка открытия файла mutabor Общие вопросы Delphi 7 28.09.2009 18:33
Зависание при показе Диалога nusik Общие вопросы C/C++ 11 02.07.2009 08:20
Создание диалога из длл Oburec Общие вопросы C/C++ 0 27.06.2009 15:29
Ошибка открытия файла в Image Лукманов Александр Общие вопросы Delphi 2 18.03.2009 14:16
Ошибка открытия файла Word 2007 Владим Microsoft Office Word 0 07.10.2008 14:22