gregaz

Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору ViSiToR Цитата: Я как то переделал для себя (Startup, т.е регистрация Dll'ки выполнялась не правильно), у меня тоже при использовании в скрипте вызывало крах, но так и не смог выявить причину, подозреваю что как то связанно со специфическими символами в тегах , ну или с путями к файлам... | Спасибо , теперь системных ошибок нет. Но осталась ошибка при записи тега 'Comments' . Записывает не то , что задаешь Остальные теги нормально. Мне кажется для записи нескольких тегов нерационально каждый раз обращаться к ф-ии : _CddbControl_SetID3Tag и производить запись тега в файл Вот чуть изменил ф-ию : Код: Func _setID3Tag1($h_file, $aValue) Local $oId3 = ObjCreate("CDDBControl.CddbID3Tag") If Not IsObj($oId3) Then SetError(1) Return 0 EndIf ; False means open for read-write $oId3.LoadFromFile ($h_file, False) $oId3.Album = $aValue [2][1] $oId3.LeadArtist = $aValue [1][1] $oId3.Title = $aValue [0][1] $oId3.TrackPosition = $aValue [3][1] $oId3.Year = $aValue [4][1] $oId3.Genre = $aValue [5][1] $oId3.CopyrightHolder = $aValue [6][1] $oId3.SaveToFile ($h_file) Return 1 EndFunc ;==>_setID3Tag1 | Кстати неверно рабатающий элемент 'Comments' не использую , заменив его 'CopyrightHolder'. Кстати Он похоже и является тегом Комментарии , используемый другими редакторами тегов , а не 'Comments' Соответственно изменил и ф-ию : _CddbControl_GetID3Tag : Код: Func _getID3Tag1($h_file) Local $oId3 = ObjCreate("CDDBControl.CddbID3Tag") If Not IsObj($oId3) Then SetError(1) Return 0 EndIf $oId3.LoadFromFile ($h_file, False) Local $idTag_A[7][2] $idTag_A[0][0] = 'Title' $idTag_A[0][1] = $oId3.Title $idTag_A[1][0] = 'LeadArtist' $idTag_A[1][1] = $oId3.LeadArtist $idTag_A[2][0] = 'Album' $idTag_A[2][1] = $oId3.Album $idTag_A[3][0] = 'TrackPosition' $idTag_A[3][1] = $oId3.TrackPosition $idTag_A[4][0] = 'Year' $idTag_A[4][1] = $oId3.Year $idTag_A[5][0] = 'Genre' $idTag_A[5][1] = $oId3.Genre $idTag_A[6][0] = 'CopyrightHolder' $idTag_A[6][1] = $oId3.CopyrightHolder Return $idTag_A EndFunc ;==>_getID3Tag1 | Так будет запись всего массива тегов за 1 раз Теперь достачно в массиве , полученном от ф-ии : _CddbControl_GetID3Tag1 изменить нужные теги(тег) и отправить весь массив на запись в ф-ию : Func _CddbControl_SetID3Tag1 Похоже все проблемы создает и создавало именно поле тега 'Comments' Произведя изменения в ф-ях вроде и старая DLL стала работать . Если можно еще пару вопросов : 1 . Где можно найти документацию по этой DLL ? 2 . Как корректно установить ее в Windows (Достаточно ли заменить старую на скачанную или ? (Кстати размер новой в 2 раза превышает старую) 3 . Коректны ли мои изменения функций ? | Всего записей: 79 | Зарегистр. 02-06-2007 | Отправлено: 16:55 05-10-2008 | Исправлено: gregaz, 16:57 05-10-2008 |
|