by asaf-g » Sun Sep 28, 2008 2:01 pm
Code: Select all
Sub ReverseTags
Dim list, itm, i
' Get list of selected tracks from MediaMonkey
Set list = SDB.CurrentSongList
' Process all selected tracks
For i=0 To list.count-1
Set itm = list.Item(i)
If (itm.BPM <> 1 AND itm.BPM <> 2) Then ' Reverse only if modification flag isn't on yet
itm.Title = ConditionalReverse(itm.Title)
itm.ArtistName = ConditionalReverse(itm.ArtistName)
itm.AlbumArtistName = ConditionalReverse(itm.AlbumArtistName)
itm.Genre = ConditionalReverse(itm.Genre)
itm.Album.Name = ConditionalReverse(itm.Album.Name)
itm.BPM = 1 ' Make sure we won't reverte this file at next startup
End If
Next
' Write all back to DB and update tags
list.UpdateAll
End Sub
' Reverse if string contains Hebrew
Function ConditionalReverse(rev)
If rev = "" Then
ConditionalReverse = rev
End If
Dim i, list, tmp
list = Split(rev)
tmp = rev
For i=0 To UBound(list)
If HasHebrew(list(i)) Then
'MsgBox ("has hebrew")
tmp = StrReverse(rev)
End if
Next
ConditionalReverse = tmp
End Function
' Check if a string contains Hebrew ( = ascii betwee 224-250)
Function HasHebrew(rev)
Dim tmp
tmp = Asc(rev)
If (tmp >= 224 OR tmp <= 250) Then
HasHebrew = true
End If
HasHebew = false
End Function
What happens is, in the function HasHebew(rev) - the tmp variable gets "????" instead of actual chars.
[code]
Sub ReverseTags
Dim list, itm, i
' Get list of selected tracks from MediaMonkey
Set list = SDB.CurrentSongList
' Process all selected tracks
For i=0 To list.count-1
Set itm = list.Item(i)
If (itm.BPM <> 1 AND itm.BPM <> 2) Then ' Reverse only if modification flag isn't on yet
itm.Title = ConditionalReverse(itm.Title)
itm.ArtistName = ConditionalReverse(itm.ArtistName)
itm.AlbumArtistName = ConditionalReverse(itm.AlbumArtistName)
itm.Genre = ConditionalReverse(itm.Genre)
itm.Album.Name = ConditionalReverse(itm.Album.Name)
itm.BPM = 1 ' Make sure we won't reverte this file at next startup
End If
Next
' Write all back to DB and update tags
list.UpdateAll
End Sub
' Reverse if string contains Hebrew
Function ConditionalReverse(rev)
If rev = "" Then
ConditionalReverse = rev
End If
Dim i, list, tmp
list = Split(rev)
tmp = rev
For i=0 To UBound(list)
If HasHebrew(list(i)) Then
'MsgBox ("has hebrew")
tmp = StrReverse(rev)
End if
Next
ConditionalReverse = tmp
End Function
' Check if a string contains Hebrew ( = ascii betwee 224-250)
Function HasHebrew(rev)
Dim tmp
tmp = Asc(rev)
If (tmp >= 224 OR tmp <= 250) Then
HasHebrew = true
End If
HasHebew = false
End Function
[/code]
What happens is, in the function HasHebew(rev) - the tmp variable gets "????" instead of actual chars.