Чтение строк MS Access 2003 Unicode в VB6 - PullRequest
0 голосов
/ 09 января 2020

Я создал таблицу 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, в которой содержится имя файла для воспроизведения. Спасибо всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...