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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2010, 10:38   #1
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
По умолчанию Сохранение изображения в подпапку с программой

Есть TImage, в который пользователем грузится изображение с помощью стандартного OpenPictureDialog. После нажатия на определенную кнопку нужно сохранять это изображение, но обязательно в подпапку, где находится программа. Проблема в том, что если использовать SaveToFile('Temp\' + test.jpg) то по умолчанию сохраняется оно туда, откуда загружено...

Решил так
Код:
SaveToFile(ExtractFilePath(ParamStr(0)) ...);
но увы
Код:
var
 PicFile: String;
 JPEG: TJPEGImage;
Begin
    JPEG := TJPEGImage.Create;
  try
    JPEG.Assign(Image.Picture.Graphic);
    JPEG.CompressionQuality := 100;
    JPEG.DIBNeeded;
    JPEG.Compress;
    PicFile := Edit.Text + '.jpg';
    JPEG.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Temp\' + PicFile);
    finally
    JPEG.Free;
  end;
end;
Выдаёт, что системе не удаётся найти указанный путь
Путь пишется с моих документов, тот, от куда был открыт фаил в OpenPictureDialog
C:\Documents and Settings\All Users\Документы\Мои рисунки\Образцы рисунков\ - дописывая мой путь
C:\Documents and Settings\All Users\Документы\Мои рисунки\Образцы рисунков\Temp\test.jpg

И что самое интересное, фаил в папке с программой по указанному пути в папке Temp создается, но лезет мессага об ошибке!

Последний раз редактировалось XerSon; 29.11.2010 в 11:03.
XerSon вне форума Ответить с цитированием
Старый 29.11.2010, 11:09   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Проверил.
У меня такая ошибка возникает только, если каталог "Temp" не существует.
Если он создан, то все проходит гладко...
mihali4 вне форума Ответить с цитированием
Старый 29.11.2010, 11:23   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А если как то так (навскидку, не проверяя):
Код:
 CreateDir(ExtractFilePath(Application.Exename) + '\Temp');
 Image1.Picture.SaveToFile(ExtractFilePath(Application.Exename) + '\Temp\test.bmp');
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 29.11.2010, 11:30   #4
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Проверил.
У меня такая ошибка возникает только, если каталог "Temp" не существует.
Если он создан, то все проходит гладко...
Каталог есть, он создаётся при создании приложения:
в onCreate формы...
Код:
  // Создаем папку Temp в корневой папке программы
  CreateDir(ExtractFilePath(paramstr(0)) + 'Temp');
12:07

Цитата:
Сообщение от artemavd Посмотреть сообщение
А если как то так (навскидку, не проверяя):
Код:
 CreateDir(ExtractFilePath(Application.Exename) + '\Temp');
 Image1.Picture.SaveToFile(ExtractFilePath(Application.Exename) + '\Temp\test.bmp');
проверил, тот же результат!
Код:
CreateDir(ExtractFilePath(Application.Exename) + '\Temp');
Код:
JPEG.SaveToFile(ExtractFilePath(Application.Exename)+ 'Temp\' + PicFile);
есть какие мысли?

У нас принято пользоваться кнопочкой "Правка", дабы не плодить посты подряд, друг за другом. Это - флуд.
Читаем правила. Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
Уважайте форумчан, и они ответят вам взаимностью...
Модератор

Последний раз редактировалось mihali4; 29.11.2010 в 13:52.
XerSon вне форума Ответить с цитированием
Старый 29.11.2010, 12:10   #5
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

А на какой конкретно строчке ошибка?
Цитата:
есть какие мысли?
Пока пропали.

Можешь скинуть проект?

Последний раз редактировалось Sibedir; 29.11.2010 в 12:12.
Sibedir вне форума Ответить с цитированием
Старый 29.11.2010, 12:47   #6
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Цитата:
Сообщение от XerSon Посмотреть сообщение
Каталог есть, он создаётся при создании приложения:
в onCreate формы...
Код:
  // Создаем папку Temp в корневой папке программы
  CreateDir(ExtractFilePath(paramstr(0)) + 'Temp');
Код:
  // Создаем папку Temp в корневой папке программы
  CreateDir(ExtractFilePath(paramstr(0)) + '\Temp');
Найдите отличие...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 29.11.2010, 12:54   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Неа, для функции ExtractFilePath обратный слеш добавлять не нужно. Только для ExtractFileDir.
Код:
showmessage(ExtractFilePath(paramstr(0)) + 'Temp');
showmessage(ExtractFileDir(paramstr(0)) + '\Temp');
_SERGEYX_ вне форума Ответить с цитированием
Старый 29.11.2010, 13:14   #8
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
По умолчанию

проект в аттаче

Заметил такую багу
Если открывать картинку из папки с прогой то все ок, но как только с раб стола, так ошибка прежняя!

Вопрос, а OpenPictureDialog не может как то хэшировать путь?
Вложения
Тип файла: rar img_project_2.rar (3.6 Кб, 15 просмотров)
XerSon вне форума Ответить с цитированием
Старый 29.11.2010, 13:53   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
как только с раб стола, так ошибка прежняя!
Это объясняется очень просто - наличием пробелов в полном пути...
mihali4 вне форума Ответить с цитированием
Старый 29.11.2010, 17:02   #10
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
По умолчанию

Так как решить даную проблему? Дайте пож направление, куда копать.

Не нужно зря цитировать предыдущее сообщение! Это - флуд.
Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
А кроме кнопки "Цитата" внизу есть простое окно для ввода своего сообщения.
Или маленькая кнопочка "Быстрый ответ" справа от кнопки "Цитата".
Попадаете туда же.
Модератор

Последний раз редактировалось mihali4; 29.11.2010 в 17:35.
XerSon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение изображения курсора Damien4Damien Мультимедиа в Delphi 1 05.10.2010 11:01
сохранение изображения dedyshka Свободное общение 2 21.11.2009 23:43
Сохранение изображения с Image brutos Мультимедиа в Delphi 7 19.05.2009 12:26
Сохранение загруженного в TImage изображения в папку с программой Torymo Помощь студентам 1 06.02.2009 03:41
сохранение изображения с TFileStream andrey4623 Общие вопросы Delphi 10 20.10.2007 20:28