Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема при сохранении файла из БД, Посмотрите что может быть не так 
:(
    Опции темы
k2s
  Дата 24.2.2005, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 23.2.2005

Репутация: нет
Всего: нет



Код

procedure TEditInDocForm.ButtonSaveImageClick(Sender: TObject);
begin
SavePictureDialog.FileName := (IODocsDataModule.INDOCSIBTable.fieldbyname('IMAGEFNAME').AsString);
SavePictureDialog.Execute;
(IODocsDataModule.INDOCSIBTableIMAGE as TBlobField).SaveToFile(SavePictureDialog.FileName);
end;



При выполнении SavePictureDialog не появляется, а сразу выдается ошибка "Cannot create file "". Имя файла или его расширение имеют слишком большую длину." Есстественно в
Код
IODocsDataModule.INDOCSIBTable.fieldbyname('IMAGEFNAME').AsString
находится имя файла. И что тут может быть не так?

PM MAIL   Вверх
Dimich
Дата 24.2.2005, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 25.8.2004
Где: Брянск

Репутация: 3
Всего: 7



Замечание:
красивше будет написать так:
Код

...
if SavePictureDialog.Execute then
(IODocsDataModule.INDOCSIBTableIMAGE as TBlobField).SaveToFile(SavePictureDialog.FileName);
...
И заодно посмотреть дебагером, какое значение имеет IODocsDataModule.INDOCSIBTable.fieldbyname('IMAGEFNAME').AsString
--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
k2s
Дата 24.2.2005, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 23.2.2005

Репутация: нет
Всего: нет



Dimich, написал как ты посоветовал.
IODocsDataModule.INDOCSIBTable.fieldbyname('IMAGEFNAME').AsString значение имеет какое и должно, и SavePictureDialog.FileName после
Код
SavePictureDialog.FileName := (IODocsDataModule.INDOCSIBTable.fieldbyname('IMAGEFNAME').AsString);

такое же.
Что интересно, если в IODocsDataModule.INDOCSIBTable.fieldbyname('IMAGEFNAME').AsString ничего нет, то SavePictureDialog нормально открывается.

Это сообщение отредактировал(а) k2s - 24.2.2005, 16:41
PM MAIL   Вверх
Dimich
Дата 24.2.2005, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 25.8.2004
Где: Брянск

Репутация: 3
Всего: 7



Проверь, наверняка у тебя SavePictureDialog.FileName заканчивается символом #13
--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
k2s
Дата 24.2.2005, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 23.2.2005

Репутация: нет
Всего: нет



Извиняюсь, конечно, но как это проверить?
PM MAIL   Вверх
DDX
Дата 24.2.2005, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 31.1.2005
Где: Москва

Репутация: 5
Всего: 5



function RightStr(const AText: string; ACount: Integer): string;

Description

RightStr returns the trailing characters of AText up to a length of ACount characters. Thus, for example,

RightStr('Programmer', 7)

returns the string

'grammer'
--------------------
Учиться, учитьcя и ещё раз учиться  
PM MAIL WWW   Вверх
k2s
Дата 24.2.2005, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 23.2.2005

Репутация: нет
Всего: нет



smile
PM MAIL   Вверх
Dimich
Дата 25.2.2005, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 25.8.2004
Где: Брянск

Репутация: 3
Всего: 7



Цитата(k2s @ 24.2.2005, 18:09)
Извиняюсь, конечно, но как это проверить?

- внимательнее посмотреть в дебагере.

Код
Function ValidFileName (FName : string) : string;
begin
 While Pos (#13, FName) > 0 do Delete (FName, Pos (#13, FName), 1);
 Result := FName;
end;

--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
k2s
  Дата 25.2.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 23.2.2005

Репутация: нет
Всего: нет



smile Большое всем спасибо за советы, но решение проблемы оказалось более лёгким чем я думал, а именно - типом данных поля IMAGEFNAME был CHAR, который заполняет свободное место в поле пробелами, у меня размер IMAGEFNAME был 300, имя файла естесственно было короче и оставшееся место заполнялось пробелами (http://ibase.ru/devinfo/charvar.htm). Отсюда и ошибка "Cannot create file "". Имя файла или его расширение имеют слишком большую длину." и то, что SavePictureDialog не открывался. После замены типа данных поля на VARCHAR всё стало нормально работать.

Это сообщение отредактировал(а) k2s - 25.2.2005, 15:28
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0534 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.