Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SaveDialog1->Execute, пути 
:(
    Опции темы
Лена
Дата 4.9.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



У меня используется ActiveX, который экспортирует свое содержание в jpeg:
Код

//имя ActiveX это XPrintMap
void __fastcall TForm2::sBitBtn1Click(TObject *Sender)
{
 String FName;
 if (sSaveDialog1->Execute())
 {
  FName = sSaveDialog1->FileName;
  XPrintMap->ExportMap(WideString(FName), miFormatJPEG);  //метод требует wchar_t *
 }
}

Если в пути сохранения присутствуют папки с русскими названиями типа: "Рабочий стол" или "Лена" и т.п. то в результате на диске появляется файл *.jpeg нулевого размера, т.е. пустой. Если путь весь на английском типа: C:\\temp\\123.jpeg то все сохраняется, как положено. Как можно обойти проблему и русскими названиями в пути сохранения, ведь не известно какой путь выберет пользователь и если там будут папки с русскими названиями, то у него ничего не сохраниться.

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

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



Если я правильно понял, то у тя проблема с кодировкой. попробуй CharToOemA(), OemToCharA().


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Лена
Дата 4.9.2006, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так?:
 char S[255];
 CharToOem((sSaveDialog1->FileName).c_str(), S);
 XPrintMap->ExportMap(WideString(S), miFormatJPEG);
тоже не работает...
PM MAIL   Вверх
dumb
Дата 4.9.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



Код

  WCHAR wszFileName[512];
  MultiByteToWideChar(CP_ACP, 0, sSaveDialog1->FileName.c_str(), -1, wszFileName, sizeof(wszFileName)/sizeof(wszFileName[0]));
  XPrintMap->ExportMap(wszFileName, miFormatJPEG);

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


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Код

void __fastcall TForm2::sBitBtn1Click(TObject *Sender)
{
 String FName;
 if (sSaveDialog1->Execute())
 {
  FName = sSaveDialog1->FileName;
  XPrintMap->ExportMap(WideString(FName).c_bstr(), miFormatJPEG);  //метод требует wchar_t *
 }
}

не ?

Это сообщение отредактировал(а) Romikgy - 4.9.2006, 15:40


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Опытный
**


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

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



Код

WCHAR wszFileName[512];
MultiByteToWideChar(CP_ACP, 0, sSaveDialog1->FileName.c_str(), -1, wszFileName, sizeof(wszFileName)/sizeof(wszFileName[0]));
XPrintMap->ExportMap(wszFileName, miFormatJPEG);


Выскакивает окно CPU.  smile 
Рисунок прилагаю:

Добавлено @ 15:45 
Цитата(Romikgy @ 4.9.2006,  15:35)
Код

void __fastcall TForm2::sBitBtn1Click(TObject *Sender)
{
 String FName;
 if (sSaveDialog1->Execute())
 {
  FName = sSaveDialog1->FileName;
  XPrintMap->ExportMap(WideString(FName).c_bstr(), miFormatJPEG);  //метод требует wchar_t *
 }
}

не ?

таже история.
Если есть русские названия в пути то размер файла после сохранения равень нулю.  smile 

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  new_1.gif 26,29 Kb
PM MAIL   Вверх
Romikgy
Дата 4.9.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Лена @  4.9.2006,  14:42 Найти цитируемый пост)
 FName = sSaveDialog1->FileName;

бряку поставь на эту строку, и посмотри что в FName 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
dumb
Дата 4.9.2006, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



хех. загадочный компонент... smile
может такой "финт ухами" пройдет:
Код

  String sPrevDir = GetCurrentDir();
  String sFileName = ExtractFileName(sSaveDialog1->FileName);
  SetCurrentDir(ExtractFileDir(sSaveDialog1->FileName));
  XPrintMap->ExportMap(WideString(sFileName), miFormatJPEG);
  SetCurrentDir(sPrevDir);


если даже и пройдет, то все равно русские имена файлов нельзя будет ему скармливать.
PM MAIL   Вверх
Romikgy
Дата 4.9.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



У мя так открывает любые файлы , хоть с ангельскими названиями хоть с русскими
Код

  if (OpenDialog1->Execute())
MessageBoxW(NULL,WideString(OpenDialog1->FileName).c_bstr(),WideString("Caption"),0);



Добавлено @ 16:14 
Имхо просто компонент не знает русских букв, что это за комп-нент? есть ли его исходники?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Лена
Дата 4.9.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(dumb @ 4.9.2006,  16:03)
хех. загадочный компонент... smile
может такой "финт ухами" пройдет:
Код

  String sPrevDir = GetCurrentDir();
  String sFileName = ExtractFileName(sSaveDialog1->FileName);
  SetCurrentDir(ExtractFileDir(sSaveDialog1->FileName));
  XPrintMap->ExportMap(WideString(sFileName), miFormatJPEG);
  SetCurrentDir(sPrevDir);


если даже и пройдет, то все равно русские имена файлов нельзя будет ему скармливать.

Cпасибо. Это работает. Правда как вы и предпологали не удается сохранить с русским именем сам файл.

>что это за комп-нент? 

http://extranet.mapinfo.com/products/Overv...uctcategoryid=1


Скажите такой код будет надежен?:
Код

 AnsiString Dir = "Proba"; //для удаления предыдущего файла если пользователь зада одно и тоже имя для файла два раза
void __fastcall TForm2::sBitBtn1Click(TObject *Sender)
{

 SaveDialog1->FileName = "";
 if (SaveDialog1->Execute())
  {
  SetCurrentDir(ExtractFileDir(SaveDialog1->FileName));
  if(Dir == ExtractFileName(SaveDialog1->FileName)) DeleteFile(Dir);
  XPrintMap->ExportMap(WideString("tempmap.jpeg"), miFormatJPEG);
  RenameFile("tempmap.jpeg", SaveDialog1->FileName);
  if(FileExists("tempmap.jpeg")) DeleteFile("tempmap.jpeg");
  Dir = ExtractFileName(SaveDialog1->FileName);
  }


}

Вроде работает...

Это сообщение отредактировал(а) Лена - 5.9.2006, 11:13
PM MAIL   Вверх
koza
Дата 4.9.2006, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пробовала вместо Стринг использовать АнсиСтринг?
PM MAIL ICQ   Вверх
Лена
Дата 5.9.2006, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(koza @ 4.9.2006,  23:04)
Пробовала вместо Стринг использовать АнсиСтринг?

Да
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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