Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Windows [игнор отключен] [закрыт для гостей] / Проблема с Unicode / 8 сообщений из 8, страница 1 из 1
21.04.2004, 15:20
    #32489979
tors
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Unicode
Я использую ActiveX-компонент для записи на CD-R/RW.
Он принимает параметры(откуда и что писать, и куда) в Unicode.
Имена файлов и папок с английскими именами отображаются в проводнике (и других прогах) нормально, а с русскими - абра-кодабра.

Как решить эту проблему(может с реестром поколдовать)?
Или это компонент глючит?


C ув. Tors
...
Рейтинг: 0 / 0
21.04.2004, 17:13
    #32490362
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Unicode
Если это ActiveX-компонент, то следовательно, ты используешь его в какой-то программе.

Можно пример, пожалуста.
...
Рейтинг: 0 / 0
21.04.2004, 17:40
    #32490468
tors
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Unicode
Программа не маленькая, привожу пример OnClick кнопки "Записать"

Предварительно формирую вектор:

struct Files
{
String Source;
String Dest;
bool isFolder;// true - папка, false - файл
};
vector<Files> f;
.
.
.

void __fastcall TForm1::Button3Click(TObject *Sender)
{
if(!(bool)CDWriterXP->IsMediaLoaded())
{
ShowMessage("Вставте диск");
return;
}
if(!(bool)CDWriterXP->IsDiscRewritable())
{
ShowMessage("Диск не является перезаписываемым!!!");
return;
}
int sz=f.size();
if(sz==0)
{
ShowMessage("Нечего писать");
return;
}

for(int i=0;i<sz;i++)
{
wchar_t *s=L"";
wchar_t *d=L"";


String dst=f .Dest;
String src=f.Source;
if(f.isFolder)
{
src+="\\*.*";
dst="\\"+dst;
s=StringToOleStr(src);
d=StringToOleStr(dst);

CDWriterXP->CloneDirectoryToISO(d,s);//принимает wchar_t *
}
else
{
String dstf="\\"+dst;
s=StringToOleStr(src);
d=StringToOleStr(dstf);

CDWriterXP->InsertISOItem(d,s);//принимает wchar_t *
}

}

CDWriterXP->WriteType=wtpData;
CDWriterXP->CloseSession=true;
CDWriterXP->CloseDisc=FinCheckBox->Checked;
CDWriterXP->TestWrite=TestCheckBox->Checked;
CDWriterXP->CacheDataTrack=true;
if(DiskNameEdit->Text=="") DiskNameEdit->Text="Quant";
CDWriterXP->VolumeIdentifier=DiskNameEdit->Text;
CDWriterXP->SetWriteSpeed(speeds[SpComboBox->ItemIndex]);
CDWriterXP->WriteDisc();

}



C ув. Tors
...
Рейтинг: 0 / 0
21.04.2004, 17:53
    #32490501
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Unicode
Как я понял, компонент копирует папки с жесткого диска на CD, и в скопированных файлах русские символы заменяются на крякозябры.
...
Рейтинг: 0 / 0
21.04.2004, 18:08
    #32490558
tors
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Unicode
... и в скопированных файлах русские символы заменяются на крякозябры.


Вроде бы я об этом говорил в самом начале.

Как эту проблему решить?
Может в рестре чего поправить?
В настройках винды?
Или я чегото не то напрграммерствовал?

C ув. Tors
...
Рейтинг: 0 / 0
21.04.2004, 21:17
    #32490810
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Unicode
Попробуй выводить свой код.

Кстати, на какие крякозябры заменяется текст?

Здесь может быть 2 варианта

1) Замена производится в твоем коде, надо эксперементировать
2) Замена производится в элементе, тогда надо искать другую версию
...
Рейтинг: 0 / 0
22.04.2004, 10:07
    #32491174
tors
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Unicode
Кстати, на какие крякозябры заменяется текст?

На такие : Íîâàÿ
В оригинале : Новая

Проблема не в моем коде.
Я вызываю(для уже записанного CD) метод компонента, который импортирует предыдущие сесси. При этом вызывается событие, в параметрах которого передаются данные об импортируемых файлах и папках.

void __fastcall TForm1::CDWriterXPISOItemAdded(TObject *Sender,
BSTR ParentDestPath, BSTR ItemDestPath, BSTR ItemName,
BSTR SourceFilePath, VARIANT_BOOL IsDirectory, DATE FileDate,
long FileSize)
{
Caption=OleStrToString(ItemDestPath);

}

Caption присваивается правильное имя папки или файла на русском!!!

Кстати подскажите аналоги API для работы с файлами под Unicode.
...
Рейтинг: 0 / 0
22.04.2004, 10:43
    #32491261
tors
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Unicode
HANDLE h=CreateFileW(L"g:\\new\\рис1.bmp",
GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(h==INVALID_HANDLE_VALUE)
{
ShowMessage("Файл не найден");
}
else ShowMessage("Файл найден!!!!!");
CloseHandle(h);

Для английских имен работает для русских нет, вот хр...

C ув. Tors
...
Рейтинг: 0 / 0
Форумы / Windows [игнор отключен] [закрыт для гостей] / Проблема с Unicode / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]