| 
| 
 | Вопрос # 637/ вопрос решён / | 
 |  Дорогие и много уважаемые эксперты!Нужна помощь.Я делаю графический редактор.Одна кнопка открывает фаил-другая сохраняет.Программа находится в дериктории c:/Painter когдая открываю фаил с помощью OpenDialog из дериктории c:/pic и с помощью функции savetofile пытаюсь сохранить в c:/Painter/Temp происходит ошибка программа пытается сохранить картинку в c:/pic/c:/Painter/Temp а этого каталога не существует, как зделать так чтобы картинка сохранялась в c:/Painter/Temp а не в c:/pic/c:/Painter/Temp эта ошибка происходит только при предварительном открытии картинки из другого каталога(а не из каталога программы) да и использовать savedialog я не могу по своим причинам. 
|  |   Вопрос задал: Аксион (статус: 4-ый класс)Вопрос отправлен: 17 июня 2007, 14:54
 Состояние вопроса: решён, ответов: 3.
 |  Ответ #1. Отвечает эксперт: Николай Рубан Здравствуйте, ММО!
 Вам достаточно будет в параметрах SaveToFile использовать такой подход:
 SaveToFile(ExtractFilePath(Application.ExeName)+'temp\FileName');
 
 где FileName - имя сохраняемого файла.
 
 Good Luck!!!
 
|  | Ответ отправил: Николай Рубан (статус: 10-ый класс)Время отправки: 17 июня 2007, 15:03
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо |  Ответ #2. Отвечает эксперт: Градов Ю.М. Здравствуйте, ММО!Используйте это:
 uses FileCtrl;
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 ifnot DirectoryExists('c:/Painter/Temp') then
 ifnot CreateDir('c:/Painter/Temp') then
 raise Exception.Create('Cannot create c:/Painter/Temp');
 end;
 
|  | Ответ отправил: Градов Ю.М. (статус: 8-ой класс)Время отправки: 17 июня 2007, 15:23
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо |  Ответ #3. Отвечает эксперт: Вадим К Здравствуйте, ММО!Функция CreateDir конечно позволит создать каталог, то только одно вложение. А писать процедуру, которая создаст весь путь очень утомительно. Но для этого есть Маленький секрет. Пусть, в s храниться имя файла с путём. Тогда используем слудующий код
 ForceDir(ExtractFileDir(s));
 if not DirectoryExsist(s) the Raise Exception.Create('Каталог не удалось создать');
 SaveToFile(s);
 
 Здесь есть один маленький нюанс. не все каталоги создать можно. Иногда это даже не описано в документации. К примеру попробуйте создать каталог с тремя точками в конце (можно и в проводнике) - вы будете приятно удивлены.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 17 июня 2007, 23:34
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо |  
 Мини-форум вопросаВсего сообщений: 0. 31 января 2011, 19:23: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |