Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите перевести на Delphi [D7, Win2k, WinXP]


Страницы:   1 2

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]


> не получается


что не получается-то ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо