Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

SaveDialog

343
04 сентября 2006 года
lena_ki
282 / / 14.04.2005
У меня используется 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 то все сохраняется, как положено. Как можно обойти проблему и русскими названиями в пути сохранения, ведь не известно какой путь выберет пользователь и если там будут папки с русскими названиями, то у него ничего не сохраниться.
246
04 сентября 2006 года
GIZMO
1.8K / / 30.07.2004
[QUOTE=lena_ki]У меня используется 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 то все сохраняется, как положено. Как можно обойти проблему и русскими названиями в пути сохранения, ведь не известно какой путь выберет пользователь и если там будут папки с русскими названиями, то у него ничего не сохраниться.[/QUOTE]
Не уверен, но посмотри в сторону URLCanonicalize.
343
04 сентября 2006 года
lena_ki
282 / / 14.04.2005
[quote=GIZMO]Не уверен, но посмотри в сторону URLCanonicalize.[/quote]

Что-то не могу найти описание этой ф-ции. :(
1.9K
04 сентября 2006 года
SABROG
242 / / 26.01.2006
Как временный вариант сохранять сначала на диск C:, а оттуда обычным копированием в русскую папку, после чего с диска C: удалять :)
246
05 сентября 2006 года
GIZMO
1.8K / / 30.07.2004
[QUOTE=lena_ki]Что-то не могу найти описание этой ф-ции. :([/QUOTE]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/shlwapi/path/urlcanonicalize.asp
343
05 сентября 2006 года
lena_ki
282 / / 14.04.2005
[FONT=Times New Roman][SIZE=3]C URLCanonicalize не разобралась. :( [/SIZE][/FONT]

[FONT=Times New Roman][SIZE=3]Вот остановилась на этом варианте. Вроде работает:[/SIZE][/FONT]

Код:
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);
  }

Так надежно?
547
05 сентября 2006 года
Hydra
488 / / 20.06.2006
А что-нть типа
 
Код:
XPrintMap->ExportMap(WideString(FName).c_bstr(), miFormatJPEG);

попробовать?
343
05 сентября 2006 года
lena_ki
282 / / 14.04.2005
[quote=Hydra]А что-нть типа
 
Код:
XPrintMap->ExportMap(WideString(FName).c_bstr(), miFormatJPEG);

попробовать?[/quote]

Пробовала.

Вот еще такой код пробывала:
WCHAR wszFileName[512];
String FName = sSaveDialog1->FileName;
MultiByteToWideChar(CP_ACP, 0, FName.c_str(), -1, wszFileName, sizeof(wszFileName)/sizeof(wszFileName[0]));
XPrintMap->ExportMap(WideString(wszFileName).c_bstr(), miFormatJPEG);
Однако его использование приводило к появлению окна CPU. :confused:
246
05 сентября 2006 года
GIZMO
1.8K / / 30.07.2004
[QUOTE=Hydra]А что-нть типа
 
Код:
XPrintMap->ExportMap(WideString(FName).c_bstr(), miFormatJPEG);

попробовать?[/QUOTE]
У WideString есть оператор приведения к BSTR.

to Lena:
Попробуй например задать путь так:
"c:\\мои%20документы\\" // вместо пробела %20
сохраняет?
343
05 сентября 2006 года
lena_ki
282 / / 14.04.2005
[quote=GIZMO]У WideString есть оператор приведения к BSTR.

to Lena:
Попробуй например задать путь так:
"c:\\мои%20документы\\" // вместо пробела %20
сохраняет?[/quote]

Я пробовала сохранять в путях вообще без пробелов. Например С:\Лена Результирующий файk jpeg получается в таком случае размером “0”. Если использовать английские пути типа : C\Lena или C:\My Folder то получаю полностью нормальные файлы. Также имя файла должно быть на английском для успешного сохранения.
Сам компонент американский: http://extranet.mapinfo.com/products/Overview.cfm?productid=1041&productcategoryid=1
246
05 сентября 2006 года
GIZMO
1.8K / / 30.07.2004
[QUOTE=lena_ki]Сам компонент американский: [/QUOTE]
думаешь это значит, что пути надо задавать только на американском:)
Попробуй URLCanonicalize, у меня Билдера нет под рукой поэтому проверить не могу. Туда надо передать путь, выходную строку. размер строки и флаг.

Takes a URL string and converts it into canonical form.

Syntax

HRESULT UrlCanonicalize( LPCTSTR pszUrl,
LPTSTR pszCanonicalized,
LPDWORD pcchCanonicalized,
DWORD dwFlags
);
Parameters

pszUrl
[in] Null-terminated string of maximum length INTERNET_MAX_URL_LENGTH that contains a URL string. If the string does not refer to a file, it must include a valid scheme such as "http://".
pszCanonicalized
[out] A pointer to a null-terminated string used to return the converted URL.
pcchCanonicalized
[in, out] The number of characters in pszCanonicalized.
dwFlags
[in] Flags that specify how the URL is converted to canonical form. The following flags can be combined.
URL_DONT_SIMPLIFY
Treat "/./" and "/../" in a URL string as literal characters, not as shorthand for navigation. See Remarks for further discussion.
URL_ESCAPE_PERCENT
Convert any occurrence of "%" to its escape sequence.
URL_ESCAPE_SPACES_ONLY
Replace only spaces with escape sequences. This flag takes precedence over URL_ESCAPE_UNSAFE, but does not apply to opaque URLs.
URL_ESCAPE_UNSAFE
Replace unsafe characters with their escape sequences. Unsafe characters are those characters that may be altered during transport across the Internet, and include the (<, >, ", #, {, }, |, \, ^, ~, [, ], and ') characters. This flag applies to all URLs, including opaque URLs.
URL_NO_META
Defined to be the same as URL_DONT_SIMPLIFY.
URL_PLUGGABLE_PROTOCOL
Combine URLs with client-defined pluggable protocols, according to the World Wide Web Consortium (W3C) specification. This flag does not apply to standard protocols such as ftp, http, gopher, and so on. If this flag is set, UrlCombine does not simplify URLs, so there is no need to also set URL_DONT_SIMPLIFY.
URL_UNESCAPE
Un-escape any escape sequences that the URLs contain, with two exceptions. The escape sequences for "?" and "#" are not un-escaped. If one of the URL_ESCAPE_XXX flags is also set, the two URLs are first un-escaped, then combined, then escaped.
Return Value

Returns S_OK if successful, or an error value otherwise.

Remarks

This function performs such tasks as replacing unsafe characters with their escape sequences and collapsing sequences like "..\...".

If a URL string contains "/../" or "/./", UrlCanonicalize normally treats the characters as indicating navigation in the URL hierarchy. The function simplifies the URLs before combining them. For instance "/hello/cruel/../world" is simplified to "/hello/world". If the URL_DONT_SIMPLIFY flag is set in dwFlags, the function does not simplify URLs. In this case, "/hello/cruel/../world" is left as-is.

Function Information

Minimum DLL Version shlwapi.dll version 5.0 or later
Custom Implementation No
Header shlwapi.h
Import library shlwapi.lib
Minimum operating systems Windows 2000, Windows NT 4.0 with Internet Explorer 5, Windows 98, Windows 95 with Internet Explorer 5
Unicode Implemented as ANSI and Unicode versions.
343
05 сентября 2006 года
lena_ki
282 / / 14.04.2005
>Туда надо передать путь

Я не поняла как правильно передовать параметры в эту ф-цию. Там требует передать в первом параметре что-то типа пути с url "http://".
В моем случае какой путь мне передовать?
246
05 сентября 2006 года
GIZMO
1.8K / / 30.07.2004
[QUOTE=lena_ki]>Туда надо передать путь

Я не поняла как правильно передовать параметры в эту ф-цию. Там требует передать в первом параметре что-то типа пути с url "http://".
В моем случае какой путь мне передовать?[/QUOTE]
c:\\Мои Документы\\и т.д. Можешь попробовать "file://c:\\Мои Документы\\"
309
20 сентября 2006 года
el scorpio
1.1K / / 19.09.2006
[quote]
Вот еще такой код пробывала:
WCHAR wszFileName[512];
String FName = sSaveDialog1->FileName;
MultiByteToWideChar(CP_ACP, 0, FName.c_str(), -1, wszFileName, sizeof(wszFileName)/sizeof(wszFileName[0]));
XPrintMap->ExportMap(WideString(wszFileName).c_bstr(), miFormatJPEG);
Однако его использование приводило к появлению окна CPU. [quote]
Стековый массив? Переполнение буфера, по ходу....
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог