Я создал таблицу MS Access (2003), используя VB6. Естественно, даже несмотря на то, что VB6 на поверхности работает строго с набором символов ANSI, под капотом строки правильно хранятся внутри в полном UNICODE. Доказательством тому является тот факт, что когда я записываю свои данные, содержащие диакритические знаки c, в MS Access, база данных оказывается безупречной. Я хочу подчеркнуть, что дата в моем MS Access 2003 содержит поле «Каталог + имена файлов (полный путь)», указывающее на файлы на моем жестком диске с диакритическими знаками c. Отлично, пока все хорошо. Теперь о проблеме! Когда я возвращаюсь и читаю те записи, содержащие символы диакритики c из MS Access 2003, и передаю «Каталог + имена файлов (полный путь)», чтобы сказать, VL C Media Player, он не находит его, потому что VB6 внутренне полосатый диакритические знаки c. Это такой редкий случай? Подобных случаев в сети не найдено. Спасибо неизвестной душе.
РЕДАКТИРОВАТЬ Больше информации от задающего вопрос.
прежде всего спасибо. Да, я использую VB6 (classi c); старый таймер, но для удовольствия. Вот подпрограмма, которая пытается вызвать VL C.
Private Sub GoPlay(**FileToPlay** As String)
Const vlc_exe = "C:\Program Files\VideoLAN\VLC\vlc.exe "
FileToPlay = vlc_exe + """" + **FileToPlay** + """"
Me.Enabled = False ' Block any futher action on the Form before the current film showing doesn't end
'=================
' Go play video
'=================
StartVLC_common FileToPlay ' Go play video
Me.Enabled = True
Me.ZOrder
End Sub
Как видите, я передаю аргумент как String. Это может быть проблемой!
Вот как определяется «StartVLC_common»:
Public Function StartVLC_common(VideoToShow As String)
'===================================== ' Start a process, in this case VLC
'=====================================
On Error Resume Next
StopVLC_common ' Avoid multiple brands playing, so kill any previous instance
'=====================================
' Start the process.
VideoToShow = Trim$(VideoToShow)
If VideoToShow = "" Then
Exit Function
End If
glPid = Shell(VideoToShow, vbNormalFocus)
If glPid = 0 Then
MsgBox "Could not start process", vbExclamation, "Error"
End If
End Function
Хорошие новости! Благодаря предложениям разных людей я провел мозговой штурм и пришел к выводу. Раньше я передавал строку VB в подпрограмму «GoPlay», содержащую имя файла для воспроизведения. Теперь я передаю поле набора записей ADO, считываемое непосредственно из таблицы MS Access, в которой содержится имя файла для воспроизведения. Спасибо всем.