![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите перевести на Delphi [D7, Win2k, WinXP]
Rostislav Rotaru © (2004-09-27 10:02:00)Здравствуйте. В Basic-е есть функция для получения числа строкой для румынского языка. Пытался перевести на паскал самостоятельно, но не получается. Вот код:
Function SummStr (SC)
Dim adec As Variant
Dim rez As String, k As String, Kop As String, a1 As String, A As String
Dim pz As Integer, ad As Integer, ae As Integer
ReDim zeci(90) As String, sut(9) As String, o(5, 2) As String
ReDim m(4) As Double, Z(4) As Double, s(4) As Double
Dim sn$
zeci(1) = "un"
zeci(2) = "doi"
zeci(3) = "trei"
zeci(4) = "patru"
zeci(5) = "cinci"
zeci(6) = "sase"
zeci(7) = "sapte"
zeci(8) = "opt"
zeci(9) = "noua"
zeci(10) = "zece"
zeci(11) = "unsprezece"
zeci(12) = "doisprezece"
zeci(13) = "treisprezece"
zeci(14) = "patrusprezece"
zeci(15) = "cincisprezece"
zeci(16) = "sasesprezece"
zeci(17) = "saptesprezece"
zeci(18) = "optsprezece"
zeci(19) = "nouasprezece"
zeci(20) = "douazeci"
zeci(30) = "treizeci"
zeci(40) = "patruzeci"
zeci(50) = "cincizeci"
zeci(60) = "sasezeci"
zeci(70) = "saptezeci"
zeci(80) = "optzeci"
zeci(90) = "nouazeci"
sut(1) = "una suta"
sut(2) = "doua sute"
sut(3) = "trei sute"
sut(4) = "patru sute"
sut(5) = "cinci sute"
sut(6) = "sase sute"
sut(7) = "sapte sute"
sut(8) = "opt sute"
sut(9) = "noua sute"
o(1, 1) = "miliarde"
o(1, 2) = "miliard"
o(2, 1) = "milioane"
o(2, 2) = "milion"
o(3, 1) = "mii"
o(3, 2) = "mie"
o(4, 1) = "lei"
o(4, 2) = "leu"
If SC < 0 Then
sn = "-"
SC = -1 * SC
Else
sn = ""
End If
adec = 100000000000000# + (SC * 100)
a1 = adec
A = Mid(a1, 2)
m(1) = Mid(A, 1, 3)
Z(1) = Mid(A, 2, 2)
s(1) = Mid(A, 1, 1)
m(2) = Mid(A, 4, 3)
Z(2) = Mid(A, 5, 2)
s(2) = Mid(A, 4, 1)
m(3) = Mid(A, 7, 3)
Z(3) = Mid(A, 8, 2)
s(3) = Mid(A, 7, 1)
m(4) = Mid(A, 10, 3)
Z(4) = Mid(A, 11, 2)
s(4) = Mid(A, 10, 1)
k = Mid(A, 13, 2)
rez = " "
For pz = 1 To 4
If m(pz) > 1 Then
zeci(1) = "unu"
ElseIf pz = 3 Then
zeci(1) = "una"
End If
If pz < 4 Then
zeci(2) = "doua"
End If
If s(pz) > 0 Then
rez = rez & sut(s(pz)) & " "
End If
If Z(pz) > 0 Then
If Z(pz) < 20 Then
rez = rez & zeci(Z(pz)) & " "
Else
ae = Z(pz) Mod 10
ad = Z(pz) - ae
rez = rez & zeci(ad) & " "
If ae > 0 Then
rez = rez & "si " & Trim(zeci(ae)) & " "
End If
End If
End If
If m(pz) > 0 Then
If m(pz) = 1 Then
rez = rez & Trim(o(pz, 2)) & " "
Else
rez = rez & Trim(o(pz, 1)) & " "
End If
End If
zeci(1) = "un"
zeci(2) = "doi"
Next
If m(1) + m(2) + m(3) + m(4) = 0 Then
rez = rez & "zero lei "
Else
If m(4) = 0 Then
rez = rez & "lei "
End If
End If
SC = Mid(rez, 2) & k & " " & "bani"
Suma_Litere = sn & UCase(Left(SC, 1)) & Mid(SC, 2, Len(SC))
Exit_SummStr:
Exit Function
End Function
Помогите пожалуйста
Спасибо
Digitman (2004-09-27 10:55:00) [21]adec: Extended;
a1: String;
a1 := FloatToStr(adec);
Rostislav Rotaru (2004-09-27 10:48:00) [22]определил "zeci" как const zeci: array [1..90] of string=
('un', 'doi', 'trei'......). То же самое с "sut" и "о"
Остановился на этом куске:
adec = 100000000000000# + (SC * 100)
a1 = adec
A = Mid(a1, 2)
m(1) = Mid(A, 1, 3)
Z(1) = Mid(A, 2, 2)
s(1) = Mid(A, 1, 1)
m(2) = Mid(A, 4, 3)
Z(2) = Mid(A, 5, 2)
s(2) = Mid(A, 4, 1)
m(3) = Mid(A, 7, 3)
Z(3) = Mid(A, 8, 2)
s(3) = Mid(A, 7, 1)
m(4) = Mid(A, 10, 3)
Z(4) = Mid(A, 11, 2)
s(4) = Mid(A, 10, 1)
k = Mid(A, 13, 2)
Как их объявить?
Gero (2004-09-27 10:46:00) [23]
> Скажи конкретно, какая конструкция тебе не понятна
Наверное, не понятна функция SummStr.
TUser (2004-09-27 10:45:00) [24]В кладовке есть и на Delphi. Или еще где-то. Но точно есть. А так - синтаксис у Васика, почти такой же как на Delphi. Dim - это там так массивы определяют. Скажи конкретно, какая конструкция тебе не понятна, а то переводить столько текста все захотят.
Digitman (2004-09-27 10:44:00) [25]
> не получается
что не получается-то ?