|
|
|
| Луюди кто поможет перевести из иностраного языка (Java(скрипт)) в вб ?
//initialize
var ANSI = new Array();
var UNICODE = new Array();
for(var i = 178; i <= 252; i+=2){
ANSI.push(i); //mecatar ANSI
UNICODE.push(1328 + (i-176)/2); //mecatar Unicode
ANSI.push(i+1); //poqratar ANSI
UNICODE.push(1376 + (i-176)/2); //poqratar Unicode
}
ANSI.push(39); UNICODE.push(0x587); //ev
ANSI.push(183); UNICODE.push(8226); //poqratar g-n (bullet)
ANSI.push(8226); UNICODE.push(1379); //poqratar g-n (bullet)
ANSI.push(39); UNICODE.push(0x55A); //apostrophe
ANSI.push(176); UNICODE.push(0x55B); //shesht
ANSI.push(175); UNICODE.push(0x55C); //bacakanchakan
ANSI.push(170); UNICODE.push(0x55D); //but
ANSI.push(177); UNICODE.push(0x55E); //harcakan
ANSI.push(163); UNICODE.push(0x589); //verjaket
ANSI.push(173); UNICODE.push(0x58A); //hyphen
ANSI.push(167); UNICODE.push(0xAB); //bacvogh chakert
ANSI.push(166); UNICODE.push(0xBB); //pakvogh chakert
ANSI.push(171); UNICODE.push(0x2C); //storaket
ANSI.push(169); UNICODE.push(0x2E); //mijaket
ANSI.push(174); UNICODE.push(0x2026); //bazmaket
ANSI.push(0,0); UNICODE.push(0,0); //2 hat CUSTOM :)
// end
function convert(from, to, A2U){
arrFrom = A2U ? ANSI : UNICODE;
arrTo = A2U ? UNICODE : ANSI;
var ekac = document.getElementById(from).value;
var gnacogh = "";
var len = ekac.length;
var tar;
var current; //boolean
for(var i=0; i<len; i++){
tar = ekac.charCodeAt(i);
FromumKa=false;
for(var j=0; j<arrFrom.length; j++){
if(tar==arrFrom[j]){
if(arrTo[j]=="") {FromumKa=true; break;}
gnacogh += String.fromCharCode(arrTo[j]);
FromumKa = true;
break;
}
}
if(!FromumKa) gnacogh += String.fromCharCode(tar);
}
document.getElementById(to).value = gnacogh;
}
|
| |
|
| |
|
|
|
|
| document.getElementById(from).value - тоже переводить ?
Совсем переводить времени нет, но могу дать подстрочник | |
|
| |
|
|
|
|
|
| я так понял саздаёца два масива
и там добалаёца данные
For i As Integer = 178 To 252 Step 2 ' 32 строк автомат
|
и 16 в ручную | |
|
| |
|
|
|
| var ANSI = new Array(), ANSI.push(i) какой еквивалент в вб ? | |
|
| |
|
|
|
|
var ANSI = new Array();
var UNICODE = new Array();
for(var i = 178; i <= 252; i+=2){
ANSI.push(i); //mecatar ANSI
UNICODE.push(1328 + (i-176)/2); //mecatar Unicode
ANSI.push(i+1); //poqratar ANSI
UNICODE.push(1376 + (i-176)/2); //poqratar Unicode
}
ANSI.push(39); UNICODE.push(0x587); //ev
ANSI.push(183); UNICODE.push(8226); //poqratar g-n (bullet)
ANSI.push(8226); UNICODE.push(1379); //poqratar g-n (bullet)
ANSI.push(39); UNICODE.push(0x55A); //apostrophe
ANSI.push(176); UNICODE.push(0x55B); //shesht
ANSI.push(175); UNICODE.push(0x55C); //bacakanchakan
ANSI.push(170); UNICODE.push(0x55D); //but
ANSI.push(177); UNICODE.push(0x55E); //harcakan
ANSI.push(163); UNICODE.push(0x589); //verjaket
ANSI.push(173); UNICODE.push(0x58A); //hyphen
ANSI.push(167); UNICODE.push(0xAB); //bacvogh chakert
ANSI.push(166); UNICODE.push(0xBB); //pakvogh chakert
ANSI.push(171); UNICODE.push(0x2C); //storaket
ANSI.push(169); UNICODE.push(0x2E); //mijaket
ANSI.push(174); UNICODE.push(0x2026); //bazmaket
ANSI.push(0,0); UNICODE.push(0,0); //2 hat CUSTOM :)
// end
// правильно создаешь 2 массива
кусок заполняешь на циклом а кусок руками
push - добавление данных в массив с
увеличением размерности массива ну типа нашего redim (или сразу опиши массив
нужного размера)
function convert(from, to, A2U){
// если A2U - истина, то массив arrFrom
принимает значения из массива ANSI, если
ЛОЖЬ, то из массива UNICODE
arrFrom = A2U ? ANSI : UNICODE;
// если A2U - истина, то массив arrTo
принимает значения из массива UNICODE,
если ЛОЖЬ, то из массива ANSI
arrTo = A2U ? UNICODE : ANSI;
// получаем значение из поля
var ekac = document.getElementById(from).value;
var gnacogh = "";
// len - длина строки
var len = ekac.length;
var tar;
var current; //boolean
// перебираем все символы исходной строки
for(var i=0; i<len; i++){
// получаем код символа в позиции i исходной строки
tar = ekac.charCodeAt(i);
FromumKa=false;
// перебираем все элементы массива arrFrom
for(var j=0; j<arrFrom.length; j++){
// если полученный из строки символ равен
символу в массиве arrFrom на позиции J
if(tar==arrFrom[j]){
// если в массиве arrTo в этой позиции J
пустое значение - выход из цикла
if(arrTo[j]=="") {FromumKa=true; break;}
// если в массиве arrTo этот элемент (J)
не пустой (else для if(arrTo[j]=="")
// к результирующей строке добавлем символ
полученный из кода который содержится в
массиве arrTo на позиции J
gnacogh += String.fromCharCode(arrTo[j]);
FromumKa = true;
// выход из цикла перебора массива arrFrom
break;
} // end if для if(tar==arrFrom[j])
} // next J для for(var j=0; j<arrFrom.length; j++)
получаем следующий элемент массива arrFrom
// если совпадений символа (точнее кода символа)
из исходной строки в массиве arrFrom не найдено,
то к результирующей строке добавляем
символ полученный из кода символа исходной
строк (т.е. ничего не конвертируем)
if(!FromumKa) gnacogh += String.fromCharCode(tar);
} // next I для for(var i=0; i<len; i++) перемещаемся на след. символ в исходной строке
// результирующую строку выводим в поле
document.getElementById(to).value = gnacogh;
}
|
Все
я отошел на 40 минут. | |
|
| |
|
|
|
| osmor огромное тебе спасибо (но я это понял) мне нужно в вб зделать
var ANSI = new Array(); и ANSI.push(39) еквивалент в вб как ? | |
|
| |
|
|
|
|
| или redim или просто сразу опиши массив нужного размера | |
|
| |
|
|
|
| как ? извени я про масиви нечего не знаю | |
|
| |
|
|
|
|
Dim ANSI() As Array
Dim UNICODE() As Array
For i As Integer = 178 To 252 Step 2
ReDim ANSI(i) : ReDim UNICODE(1328 + (i - 176) / 2) ' metatar
ReDim ANSI(i + 1) : ReDim UNICODE(1376 + (i - 176) / 2) ' poqratar
Next
|
| |
|
| |
|
|
|
| Как-то так
Dim ANSI(90) As Long
Dim UNICODE(90) As Long
Dim i As Integer
Dim j As Integer
i = 1
For j = 178 To 252 Step 2
ANSI(i) = j
UNICODE(i) = 1328 + (j - 176) / 2
i = i + 1
ANSI(i) = j + 1
UNICODE(i) = 1376 + (j - 176) / 2
i = i + 1
Next j
ANSI(i) = 39: UNICODE(i) = CLng("&H587")
i=i+1
ANSI(i) = 183 : UNICODE(i) = 8226
i=i+1
....... и т.д.
|
| |
|
| |
|
|
|
| ANSI.push(0,0); UNICODE.push(0,0); //2 hat CUSTOM а это как ?
то массив arrFrom принимает значения из массива ANSI как это ? | |
|
| |
|
|
|
| ANSI.push(0,0); UNICODE.push(0,0); - 2 последних элемента в массивах равны 0
то массив arrFrom принимает значения из массива ANSI как это ? |
Перебрать все символы одного массива присваивая значения элементов другому т.е. цикл по всему массиву | |
|
| |
|
|
|
| Function convert(str As String, tip As String) As String
convert = vbNull
Dim nstr As String = vbNull
Dim ANSI(93) As Long
Dim UNICODE(93) As Long
Dim x As Long = 1
For i As Integer = 178 To 252 Step 2
ANSI(x) = i : UNICODE(x) = 1328 + (i - 176) / 2 ' metatar
ANSI(x) = i + 1 : UNICODE(x) = 1376 + (i - 176) / 2 : x = x + 1 ' poqratar
Next
ANSI(x) = 39 : UNICODE(x) = CLng("&H587") : x = x + 1 'ev
ANSI(x) = 183 : UNICODE(x) = 8226 : x = x + 1 'poqratar g-n (bullet)
ANSI(x) = 8226 : UNICODE(x) = 1379 : x = x + 1 'poqratar g-n (bullet)
ANSI(x) = 39 : UNICODE(x) = CLng("&H55A") : x = x + 1 'apostrophe
ANSI(x) = 176 : UNICODE(x) = CLng("&H55B") : x = x + 1 'shesht
ANSI(x) = 175 : UNICODE(x) = CLng("&H55C") : x = x + 1 'bacakanchakan
ANSI(x) = 170 : UNICODE(x) = CLng("&H55D") : x = x + 1 'but
ANSI(x) = 177 : UNICODE(x) = CLng("&H55E") : x = x + 1 'harcakan
ANSI(x) = 163 : UNICODE(x) = CLng("&H589") : x = x + 1 'verjaket
ANSI(x) = 17 : UNICODE(x) = CLng("&H58A") : x = x + 1 'hyphen
ANSI(x) = 167 : UNICODE(x) = CLng("&HAB") : x = x + 1 'bacvogh chakert
ANSI(x) = 166 : UNICODE(x) = CLng("&HBB") : x = x + 1 'pakvogh chakert
ANSI(x) = 171 : UNICODE(x) = CLng("&H2C") : x = x + 1 'storaket
ANSI(x) = 169 : UNICODE(x) = CLng("&H2E") : x = x + 1 'mijaket
ANSI(x) = 174 : UNICODE(x) = CLng("&H2026") : x = x + 1 'bazmaket
ANSI(x) = 0 : UNICODE(x) = 0
Select tip
Case "a"
For l = 0 To ANSI.Length - 1
For x = 1 To Len(str)
If Asc(Mid(str, x, 1)) = ANSI(l) Then
nstr = nstr & ChrW(UNICODE(l))
MsgBox(ChrW(UNICODE(l)))
End If
Next
Next
Case "u"
End Select
convert = nstr
End Function
Где ошибка? | |
|
| |
|