sub chtototam()
dim stg as variant
stg = FA34C6A0 'тип данных в случае чего можно поправить
dim by1 as string
dim by2 as string
dim par as string
dim ch as string
dim ch3 as string
dim p as integer
dim p2 as integer
dim p3 as integer
dim x as integer
dim l as integer
if len(name.Text)>3 then
//ch:=pchar(name.Text)
p=<функция1>mid$(ch, 2, 1))
by1=p
p2=<функция1>mid$(ch, 3, 1))
by2=p2
p3=<функция1>mid$(ch, 4, 1))
ch3=p3
l=len(ch3)
x=mid$(ch3, 1, 1)
par=stg <функция 2> x
if len(par)<10 then
while length(par)<>10 do
par="0"+par
endwhile
end if
code.Text=par+"-"+(p2 <функция 2> 2) + (p <функция 2> 1)
else
code.Text="Имя введено неверно"
end if
End Sub
Фуууф... Я, конечно, знаю Delphi на весьма среднем уровне, но... Тут среднестатистический индус-кодер ногу сломит (хотя это говорить не мне, иногда предпочитающему 20 элементов одному массиву). Кроме того, местами непонятно, что значит то или иное действие... Ну да ладно. А теперь непосредственно к результату:
1) Как мог перевёл код. К концу уже "смешались кони, люди" - потому синтаксис может хромать.
2) Я VB знаю не так уж хорошо, код мой обычно не блещет прямотой и красотой, поэтому нужна помощь со стороны. В тексте можно увидеть две как бы внедрённых функции. Я не смог вспомнить им аналоги в VB - код набран за время обеденного перерыва. Так что, выручайте, профессионалы:
<функция 1> - должна заменить ord - функцию, выводящую номер символа в таблице ASCII (вроде бы): http://programmersclub.ru/ord/
<функция 2> - cмещение влево и теряя старшие разряды перед смещением назад - http://www.delphibasics.ru/Shl.php
P.S. Использование зарезервированных слов типа Name и Code в VB может происходить по-другому. Потому я связанное с этими словами особо и не менял...
P.P.S. Потому работоспособность кода не гарантирую.
Sharp и Wolf4D, спасибо.
В первом коде VB выдавал ошибку на функции shl
function shl(a, b)
shl = (a % 2^(32-b)) * 2^b
end function
я заменил ее на
Function shl(ByVal Value As Byte, ByVal Shift As Byte) As Byte
Dim i As Byte, Mask As Byte
For i = 1 To Shift
Mask = Mask + 2 ^ (8 - i)
Next
shl = ((Value And (Not Mask)) * 2 ^ Shift) And &HFF
End Function
вторая часть ответа в выражении, т.е. после "-" получилась правильная, но на строке