• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

[Chú ý] Thắc mắc về lập trình Basic4Android

Lập trình cho Android Phone

Điều hành viên: tummosoft

Hình đại diện của người dùng
tummosoft
Điều hành viên
Điều hành viên
Bài viết: 331
Ngày tham gia: T.Hai 19/05/2014 2:23 pm
Has thanked: 7 time
Been thanked: 57 time
Liên hệ:

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi tummosoft » CN 21/12/2014 10:09 am

vuchuc đã viết:Anh có thể chỉ cho e cách khăc phục đc k ạ


Có thể là do em lấy giá trị của mãng bằng một tham số tự động nên xảy ra vấn đề trên.

Còn nếu chưa khắc phục được, em đưa code lên anh mới biết cụ thể thế nào?


:) Tummo Software :D
http://tummosoft.com

vuchuc
Thành viên chính thức
Thành viên chính thức
Bài viết: 28
Ngày tham gia: T.Năm 27/05/2010 10:18 pm
Has thanked: 7 time

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi vuchuc » CN 21/12/2014 8:17 pm

em up file anh giúp em với.bt em test ở nhà thì k sao,cú ra ngoài đường bât GPS lên là nó báo lỗi đấy.
e cám ơn anh
Tập tin đính kèm
GPSlog.rar
(2.07 MiB) Đã tải 183 lần

Hình đại diện của người dùng
tummosoft
Điều hành viên
Điều hành viên
Bài viết: 331
Ngày tham gia: T.Hai 19/05/2014 2:23 pm
Has thanked: 7 time
Been thanked: 57 time
Liên hệ:

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi tummosoft » T.Tư 24/12/2014 10:04 am

vuchuc đã viết:em up file anh giúp em với.bt em test ở nhà thì k sao,cú ra ngoài đường bât GPS lên là nó báo lỗi đấy.
e cám ơn anh


Anh run code của em thì thấy báo lỗi ở Sub GPS_NMEA

Lỗi xảy ra khi chuỗi Sentence rỗng, split trả về mãng = 0.

* Em có thể bẫy lỗi bằng đoạn bẫy lỗi Try Catch

Try
.................
Catch
End try

* Hoặc bẫy chỉ xử lý điều kiện khi mảng NMEA() có độ dài > 0

  1. Sub GPS_NMEA(TimeStamp As Long, Sentence As String)
  2.  
  3. Dim NMEA() As String
  4. NMEA = Regex.Split(",",Sentence)
  5.  
  6. Dim SS As String
  7. Log(NMEA(0).Length)
  8.  
  9. If NMEA(0).Length > 0 Then
  10.     SS = NMEA(0).SubString2(1,3)
  11.  
  12. Dim c As Int
  13. If NMEA(0).SubString2(3,6) = "GSV" Then
  14.    For c = 4 To NMEA.Length-1 Step 4
  15.      If IsNumber(NMEA(c)) Then  
  16.        If SS = "GP" Then NMEAfound(NMEA(c)) = "GPS"
  17.        If SS = "GL" Then NMEAfound(NMEA(c)) = "Glonass"
  18.      End If
  19.    Next 'c
  20. End If
  21. End If
  22.  
  23.  
  24. End Sub
:) Tummo Software :D
http://tummosoft.com

vuchuc
Thành viên chính thức
Thành viên chính thức
Bài viết: 28
Ngày tham gia: T.Năm 27/05/2010 10:18 pm
Has thanked: 7 time

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi vuchuc » CN 25/01/2015 9:26 pm

em có bài toán xin các anh giúp đỡ.
em có một bai toán được giải trong EXEL nay em muốn viết bằng B4A nhưng có những hàm trong exel em không biết trong B4a là gì mong các anh làm giúp em với a. e xin cám ơn các anh.
E có gửi lên đây file exel bảng tính của em
dữ liệu đầu vào ở 2 ô C3 và C4.
kết quả ra ở ô D28 , E28 và D32 , E32
mong các anh giúp đở.em xinh cám ơn
Tập tin đính kèm
tinh.zip
(48.06 KiB) Đã tải 152 lần

Hình đại diện của người dùng
tummosoft
Điều hành viên
Điều hành viên
Bài viết: 331
Ngày tham gia: T.Hai 19/05/2014 2:23 pm
Has thanked: 7 time
Been thanked: 57 time
Liên hệ:

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi tummosoft » T.Hai 26/01/2015 7:31 am

Em tham khảo về các hàm sin, cos tại đây: http://www.b4x.com/android/wiki/index.php/Keywords
:) Tummo Software :D
http://tummosoft.com

vuchuc
Thành viên chính thức
Thành viên chính thức
Bài viết: 28
Ngày tham gia: T.Năm 27/05/2010 10:18 pm
Has thanked: 7 time

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi vuchuc » T.Hai 26/01/2015 8:59 am

Anh cho em hỏi hàm mmult tring exel tương đương hamg nào trog b4a với.

vuchuc
Thành viên chính thức
Thành viên chính thức
Bài viết: 28
Ngày tham gia: T.Năm 27/05/2010 10:18 pm
Has thanked: 7 time

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi vuchuc » T.Hai 26/01/2015 1:56 pm

Vì trong bài toán của e có giải ma trận.hàm mmult trong exel để giải ma trận.có ai biết làm trong b4a tnao giúp e với.e cảm ơn.e chỉ mói làm đc đến tính sin cos.đến phần dùng hàm mmult thì e chịu

vuchuc
Thành viên chính thức
Thành viên chính thức
Bài viết: 28
Ngày tham gia: T.Năm 27/05/2010 10:18 pm
Has thanked: 7 time

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi vuchuc » T.Hai 26/01/2015 5:02 pm

các anh cho em xin code giải ma trận này với ạ.
e xin cám ơn các anh
Tập tin đính kèm
matran.jpg

vuchuc
Thành viên chính thức
Thành viên chính thức
Bài viết: 28
Ngày tham gia: T.Năm 27/05/2010 10:18 pm
Has thanked: 7 time

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi vuchuc » T.Ba 27/01/2015 12:47 am

e có cái code bên VBA là 1 marco của exel muốn chuyển qua B4A nhưng có nhiều cái không hiểu,a nào có thể biên dịch lại giúp em với. em xin cám ơn

Mã: Chọn hết

Private Function ZoneChooser(Longitude)
'Choose the UTM zone number according to user input decimal Longitude
'East is positive direction
Dim PreZNum As Double
PreZNum = (180 + Longitude) / 6 + 1
ZoneChooser = Int(PreZNum)
End Function

Function WGS84LL2East(PHI As Double, LAM As Double)
'Project Latitude and longitude to Transverse Mercator eastings.
'Input: - _
 Latitude (PHI) and Longitude (LAM) in decimal degrees; _
 ellipsoid axis dimensions (a & b) in meters; _
 eastings of false origin (e0) in meters; _
 central meridian scale factor (f0); _
 latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees.
'North and East are positive direction

'constants specific to WGS84
Dim a, b, e0, f0, PHI0 As Double
a = 6378137
b = 6356752.3141
e0 = 500000
f0 = 0.9996
PHI0 = 0

'Calculate LAM0 of the UTM zone which the user input Longitude is in
Dim PreZNum As Double
Dim ZNum As Integer
Dim LAM0 As Double
PreZNum = (180 + LAM) / 6 + 1
ZNum = Int(PreZNum)
LAM0 = -(183 - 6 * ZNum)

'Convert angle measures to radians
    PI = 3.14159265358979
    RadPHI = PHI * (PI / 180)
    RadLAM = LAM * (PI / 180)
    RadPHI0 = PHI0 * (PI / 180)
    RadLAM0 = LAM0 * (PI / 180)

    af0 = a * f0
    bf0 = b * f0
    e2 = ((af0 ^ 2) - (bf0 ^ 2)) / (af0 ^ 2)
    n = (af0 - bf0) / (af0 + bf0)
    nu = af0 / (Sqr(1 - (e2 * ((Sin(RadPHI)) ^ 2))))
    rho = (nu * (1 - e2)) / (1 - (e2 * (Sin(RadPHI)) ^ 2))
    eta2 = (nu / rho) - 1
    p = RadLAM - RadLAM0
   
    IV = nu * (Cos(RadPHI))
    V = (nu / 6) * ((Cos(RadPHI)) ^ 3) * ((nu / rho) - ((Tan(RadPHI) ^ 2)))
    VI = (nu / 120) * ((Cos(RadPHI)) ^ 5) * (5 - (18 * ((Tan(RadPHI)) ^ 2)) + ((Tan(RadPHI)) ^ 4) + (14 * eta2) - (58 * ((Tan(RadPHI)) ^ 2) * eta2))
   
    WGS84LL2East = e0 + (p * IV) + ((p ^ 3) * V) + ((p ^ 5) * VI)
   
End Function

Function WGS84LL2North(PHI As Double, LAM As Double)
'Project Latitude and longitude to Transverse Mercator northings
'Input: - _
 Latitude (PHI) and Longitude (LAM) in decimal degrees; _
 ellipsoid axis dimensions (a & b) in meters; _
 eastings (e0) and northings (n0) of false origin in meters; _
 central meridian scale factor (f0); _
 latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees.

'REQUIRES THE "Marc1" FUNCTION

'constants specific to WGS84
Dim a, b, e0, f0, n0, PHI0 As Double
a = 6378137
b = 6356752.3141
e0 = 500000
f0 = 0.9996
PHI0 = 0
n0 = 0

'Calculate LAM0 of the UTM zone which the user input Longitude is in
Dim PreZNum As Double
Dim ZNum As Integer
Dim LAM0 As Double
PreZNum = (180 + LAM) / 6 + 1
ZNum = Int(PreZNum)
LAM0 = -(183 - 6 * ZNum)

'Convert angle measures to radians
    PI = 3.14159265358979
    RadPHI = PHI * (PI / 180)
    RadLAM = LAM * (PI / 180)
    RadPHI0 = PHI0 * (PI / 180)
    RadLAM0 = LAM0 * (PI / 180)
   
    af0 = a * f0
    bf0 = b * f0
    e2 = ((af0 ^ 2) - (bf0 ^ 2)) / (af0 ^ 2)
    n = (af0 - bf0) / (af0 + bf0)
    nu = af0 / (Sqr(1 - (e2 * ((Sin(RadPHI)) ^ 2))))
    rho = (nu * (1 - e2)) / (1 - (e2 * (Sin(RadPHI)) ^ 2))
    eta2 = (nu / rho) - 1
    p = RadLAM - RadLAM0
    M = Marc1(bf0, n, RadPHI0, RadPHI)
   
    I = M + n0
    II = (nu / 2) * (Sin(RadPHI)) * (Cos(RadPHI))
    III = ((nu / 24) * (Sin(RadPHI)) * ((Cos(RadPHI)) ^ 3)) * (5 - ((Tan(RadPHI)) ^ 2) + (9 * eta2))
    IIIA = ((nu / 720) * (Sin(RadPHI)) * ((Cos(RadPHI)) ^ 5)) * (61 - (58 * ((Tan(RadPHI)) ^ 2)) + ((Tan(RadPHI)) ^ 4))
   
    WGS84LL2North = I + ((p ^ 2) * II) + ((p ^ 4) * III) + ((p ^ 6) * IIIA)
   
End Function

Private Function Marc1(bf0, n, PHI0, PHI)
'Compute meridional arc.
'Input: - _
 ellipsoid semi major axis multiplied by central meridian scale factor (bf0) in meters; _
 n (computed from a, b and f0); _
 lat of false origin (PHI0) and initial or final latitude of point (PHI) IN RADIANS.

'THIS FUNCTION IS CALLED BY THE - _
 "Lat_Long_to_North" and "InitialLat" FUNCTIONS
'THIS FUNCTION IS ALSO USED ON IT'S OWN IN THE "Projection and Transformation Calculations.xls" SPREADSHEET

    Marc1 = bf0 * (((1 + n + ((5 / 4) * (n ^ 2)) + ((5 / 4) * (n ^ 3))) * (PHI - PHI0)) _
    - (((3 * n) + (3 * (n ^ 2)) + ((21 / 8) * (n ^ 3))) * (Sin(PHI - PHI0)) * (Cos(PHI + PHI0))) _
    + ((((15 / 8) * (n ^ 2)) + ((15 / 8) * (n ^ 3))) * (Sin(2 * (PHI - PHI0))) * (Cos(2 * (PHI + PHI0)))) _
    - (((35 / 24) * (n ^ 3)) * (Sin(3 * (PHI - PHI0))) * (Cos(3 * (PHI + PHI0)))))

End Function

Function WGS84UTM2Lat(East As Double, North As Double, ZoneNum As Integer)
'Un-project Transverse Mercator eastings and northings back to latitude.
'Input: - _
 eastings (East) and northings (North) in meters; _
 ellipsoid axis dimensions (a & b) in meters; _
 eastings (e0) and northings (n0) of false origin in meters; _
 central meridian scale factor (f0) and _
 latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees.

'REQUIRES THE "Marc1" AND "InitialLat1" FUNCTIONS

'Datum specific constant
a = 6378137
b = 6356752.3141
e0 = 500000
f0 = 0.9996
PHI0 = 0
n0 = 0

'Convert angle measures to radians
    PI = 3.14159265358979
    RadPHI0 = PHI0 * (PI / 180)
    LAM0 = 6 * ZoneNum - 183
    RadLAM0 = LAM0 * (PI / 180)

'Compute af0, bf0, e squared (e2), n and Et
    af0 = a * f0
    bf0 = b * f0
    e2 = ((af0 ^ 2) - (bf0 ^ 2)) / (af0 ^ 2)
    n = (af0 - bf0) / (af0 + bf0)
    Et = East - e0

'Compute initial value for latitude (PHI) in radians
    PHId = InitialLat1(North, n0, af0, RadPHI0, n, bf0)
   
'Compute nu, rho and eta2 using value for PHId
    nu = af0 / (Sqr(1 - (e2 * ((Sin(PHId)) ^ 2))))
    rho = (nu * (1 - e2)) / (1 - (e2 * (Sin(PHId)) ^ 2))
    eta2 = (nu / rho) - 1
   
'Compute Latitude
    VII = (Tan(PHId)) / (2 * rho * nu)
    VIII = ((Tan(PHId)) / (24 * rho * (nu ^ 3))) * (5 + (3 * ((Tan(PHId)) ^ 2)) + eta2 - (9 * eta2 * ((Tan(PHId)) ^ 2)))
    IX = ((Tan(PHId)) / (720 * rho * (nu ^ 5))) * (61 + (90 * ((Tan(PHId)) ^ 2)) + (45 * ((Tan(PHId)) ^ 4)))
   
    WGS84UTM2Lat = (180 / PI) * (PHId - ((Et ^ 2) * VII) + ((Et ^ 4) * VIII) - ((Et ^ 6) * IX))

End Function


Function WGS84UTM2Long(East As Double, North As Double, ZoneNum As Integer)
'Un-project Transverse Mercator eastings and northings back to longitude.
'Input: - _
 eastings (East) and northings (North) in meters; _
 ellipsoid axis dimensions (a & b) in meters; _
 eastings (e0) and northings (n0) of false origin in meters; _
 central meridian scale factor (f0) and _
 latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees.

'REQUIRES THE "Marc1" AND "InitialLat" FUNCTIONS
'Datum specific constants
a = 6378137
b = 6356752.3141
e0 = 500000
f0 = 0.9996
PHI0 = 0
n0 = 0

'Convert angle measures to radians
    PI = 3.14159265358979
    RadPHI0 = PHI0 * (PI / 180)
    LAM0 = 6 * ZoneNum - 183
    RadLAM0 = LAM0 * (PI / 180)

'Compute af0, bf0, e squared (e2), n and Et
    af0 = a * f0
    bf0 = b * f0
    e2 = ((af0 ^ 2) - (bf0 ^ 2)) / (af0 ^ 2)
    n = (af0 - bf0) / (af0 + bf0)
    Et = East - e0

'Compute initial value for latitude (PHI) in radians
    PHId = InitialLat1(North, n0, af0, RadPHI0, n, bf0)
   
'Compute nu, rho and eta2 using value for PHId
    nu = af0 / (Sqr(1 - (e2 * ((Sin(PHId)) ^ 2))))
    rho = (nu * (1 - e2)) / (1 - (e2 * (Sin(PHId)) ^ 2))
    eta2 = (nu / rho) - 1
   
'Compute Longitude
    X = ((Cos(PHId)) ^ -1) / nu
    XI = (((Cos(PHId)) ^ -1) / (6 * (nu ^ 3))) * ((nu / rho) + (2 * ((Tan(PHId)) ^ 2)))
    XII = (((Cos(PHId)) ^ -1) / (120 * (nu ^ 5))) * (5 + (28 * ((Tan(PHId)) ^ 2)) + (24 * ((Tan(PHId)) ^ 4)))
    XIIA = (((Cos(PHId)) ^ -1) / (5040 * (nu ^ 7))) * (61 + (662 * ((Tan(PHId)) ^ 2)) + (1320 * ((Tan(PHId)) ^ 4)) + (720 * ((Tan(PHId)) ^ 6)))

    WGS84UTM2Long = (180 / PI) * (RadLAM0 + (Et * X) - ((Et ^ 3) * XI) + ((Et ^ 5) * XII) - ((Et ^ 7) * XIIA))

End Function


Private Function InitialLat1(North, n0, afo, PHI0, n, bfo)
'Compute initial value for Latitude (PHI) IN RADIANS.
'Input: - _
 northing of point (North) and northing of false origin (n0) in meters; _
 semi major axis multiplied by central meridian scale factor (af0) in meters; _
 latitude of false origin (PHI0) IN RADIANS; _
 n (computed from a, b and f0) and _
 ellipsoid semi major axis multiplied by central meridian scale factor (bf0) in meters.
 
'REQUIRES THE "Marc1" FUNCTION
'THIS FUNCTION IS CALLED BY THE "E_N_to_Lat", "E_N_to_Long" and "E_N_to_C" FUNCTIONS
'THIS FUNCTION IS ALSO USED ON IT'S OWN IN THE  "Projection and Transformation Calculations.xls" SPREADSHEET

'First PHI value (PHI1)
    PHI1 = ((North - n0) / afo) + PHI0
   
'Calculate M
    M = Marc1(bfo, n, PHI0, PHI1)
   
'Calculate new PHI value (PHI2)
    PHI2 = ((North - n0 - M) / afo) + PHI1
   
'Iterate to get final value for InitialLat
    Do While Abs(North - n0 - M) > 0.00001
        PHI2 = ((North - n0 - M) / afo) + PHI1
        M = Marc1(bfo, n, PHI0, PHI2)
        PHI1 = PHI2
    Loop
   
    InitialLat1 = PHI2
   
End Function

Function GeoToMerX(Lon As Double)
'Geographic in Degrees to Merctor
'Input deg Lon, output meters(or whatever unit) of Mercator X coordinate
''algrithm from Patty B at lowrance. WGS84 only
Dim RadToDeg As Double, DegToRad As Double, b As Double, PI As Double, HALF_PI As Double
RadToDeg = 57.2957795132
DegToRad = 0.0174532925199
b = 6356752.3142
PI = 3.141592654
HALF_PI = 1.570796327
GeoToMerX = Lon * DegToRad * b
End Function

Function GeoToMerY(Lat As Double)
'Geographic in Degrees to Merctor
'Input deg Lat, output meters(or whatever unit) of Mercator Y coordinate
''algrithm from Patty B at lowrance. WGS84 only
Dim RadToDeg As Double, DegToRad As Double, b As Double, PI As Double, HALF_PI As Double
RadToDeg = 57.2957795132
DegToRad = 0.0174532925199
b = 6356752.3142
PI = 3.141592654
HALF_PI = 1.570796327
GeoToMerY = b * (Log(Tan((Lat * DegToRad + HALF_PI) * 0.5)))
End Function

Function MerToGeoLong(xpos As Double)
'Merctor to Geographic in Degrees
'Input x position in meters (or whatever the standard unit), Output GeoLat in deg
'algrithm from Patty B at lowrance. WGS84 only
Dim RadToDeg As Double, DegToRad As Double, b As Double, PI As Double, HALF_PI As Double
RadToDeg = 57.2957795132
DegToRad = 0.0174532925199
b = 6356752.3142
PI = 3.141592654
HALF_PI = 1.570796327
MerToGeoLong = xpos * RadToDeg / b
End Function

Function MerToGeoLat(ypos As Double)
'Merctor to Geographic in Degrees
'Input y position in meters (or whatever the standard unit), Output GeoLong in deg
''algrithm from Patty B at lowrance. WGS84 only
Dim RadToDeg As Double, DegToRad As Double, b As Double, PI As Double, HALF_PI As Double
RadToDeg = 57.2957795132
DegToRad = 0.0174532925199
b = 6356752.3142
PI = 3.141592654
HALF_PI = 1.570796327
MerToGeoLat = RadToDeg * (2 * Atn(Exp(ypos / b)) - HALF_PI)
End Function

Function UTMZone(LAM As Double)
'Calculate the UTM zone from input Longitude.
'Input x position in decimal deg.
Dim PreZNum As Double
Dim ZNum As Integer
Dim LAM0 As Double
PreZNum = (180 + LAM) / 6 + 1
ZNum = Int(PreZNum)
UTMZone = ZNum
End Function

Hình đại diện của người dùng
tummosoft
Điều hành viên
Điều hành viên
Bài viết: 331
Ngày tham gia: T.Hai 19/05/2014 2:23 pm
Has thanked: 7 time
Been thanked: 57 time
Liên hệ:

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi tummosoft » T.Ba 27/01/2015 7:43 am

- Bạn xem bảng đối chiếu giữa các hàm VB6 và B4A để convert và thay thế cho function của mình. Link: http://www.b4x.com/android/forum/thread ... -b4a.9347/

- Còn về bài tính ma trận, trong B4A không có hàm tương tự như thế, nhưng bạn có thể viết một hàm Mmult riêng để dùng. Mã nguồn Java tham khảo tại đây:
http://web.stanford.edu/class/archive/c ... MMult.java
http://www.cs.hofstra.edu/~cscccl/www_d ... 3/mmx.java
:) Tummo Software :D
http://tummosoft.com

vuchuc
Thành viên chính thức
Thành viên chính thức
Bài viết: 28
Ngày tham gia: T.Năm 27/05/2010 10:18 pm
Has thanked: 7 time

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi vuchuc » T.Ba 27/01/2015 11:48 am

Bạn có thể viết 1 bài hướng dẫn cụ thể về tự làm 1 hàm java đc k a

Hình đại diện của người dùng
tummosoft
Điều hành viên
Điều hành viên
Bài viết: 331
Ngày tham gia: T.Hai 19/05/2014 2:23 pm
Has thanked: 7 time
Been thanked: 57 time
Liên hệ:

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi tummosoft » T.Ba 27/01/2015 1:48 pm

Dưới đây là một class ví dụ về matrix khác viết bằng VB.NET, bạn có thể theo đó mà làm một class trên B4A.

http://www.codeproject.com/Articles/187 ... al-Equatio
:) Tummo Software :D
http://tummosoft.com

vuchuc
Thành viên chính thức
Thành viên chính thức
Bài viết: 28
Ngày tham gia: T.Năm 27/05/2010 10:18 pm
Has thanked: 7 time

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi vuchuc » T.Ba 27/01/2015 4:17 pm

em chuyển từ Vb sang B4a gặp phải lỗi này mong các anh chỉ giúp cách sửa

mã gốc VB

Mã: Chọn hết

Private Function ZoneChooser(Longitude)
'Choose the UTM zone number according to user input decimal Longitude
'East is positive direction
Dim PreZNum As Double
PreZNum = (180 + Longitude) / 6 + 1
ZoneChooser = Int(PreZNum)
End Function

Function WGS84LL2East(PHI As Double, LAM As Double)

Dim a, b, e0, f0, PHI0 As Double
a = 6378137
b = 6356752.3141
e0 = 500000
f0 = 0.9996
PHI0 = 0

'Calculate LAM0 of the UTM zone which the user input Longitude is in
Dim PreZNum As Double
Dim ZNum As Integer
Dim LAM0 As Double
PreZNum = (180 + LAM) / 6 + 1
ZNum = Int(PreZNum)
LAM0 = -(183 - 6 * ZNum)

'Convert angle measures to radians
    PI = 3.14159265358979
    RadPHI = PHI * (PI / 180)
    RadLAM = LAM * (PI / 180)
    RadPHI0 = PHI0 * (PI / 180)
    RadLAM0 = LAM0 * (PI / 180)

    af0 = a * f0
    bf0 = b * f0
    e2 = ((af0 ^ 2) - (bf0 ^ 2)) / (af0 ^ 2)
    n = (af0 - bf0) / (af0 + bf0)
    nu = af0 / (Sqr(1 - (e2 * ((Sin(RadPHI)) ^ 2))))
    rho = (nu * (1 - e2)) / (1 - (e2 * (Sin(RadPHI)) ^ 2))
    eta2 = (nu / rho) - 1
    p = RadLAM - RadLAM0
   
    IV = nu * (Cos(RadPHI))
    V = (nu / 6) * ((Cos(RadPHI)) ^ 3) * ((nu / rho) - ((Tan(RadPHI) ^ 2)))
    VI = (nu / 120) * ((Cos(RadPHI)) ^ 5) * (5 - (18 * ((Tan(RadPHI)) ^ 2)) + ((Tan(RadPHI)) ^ 4) + (14 * eta2) - (58 * ((Tan(RadPHI)) ^ 2) * eta2))
   
    WGS84LL2East = e0 + (p * IV) + ((p ^ 3) * V) + ((p ^ 5) * VI)
   
End Function

Function WGS84LL2North(PHI As Double, LAM As Double)

Dim a, b, e0, f0, n0, PHI0 As Double
a = 6378137
b = 6356752.3141
e0 = 500000
f0 = 0.9996
PHI0 = 0
n0 = 0

'Calculate LAM0 of the UTM zone which the user input Longitude is in
Dim PreZNum As Double
Dim ZNum As Integer
Dim LAM0 As Double
PreZNum = (180 + LAM) / 6 + 1
ZNum = Int(PreZNum)
LAM0 = -(183 - 6 * ZNum)

'Convert angle measures to radians
    PI = 3.14159265358979
    RadPHI = PHI * (PI / 180)
    RadLAM = LAM * (PI / 180)
    RadPHI0 = PHI0 * (PI / 180)
    RadLAM0 = LAM0 * (PI / 180)
   
    af0 = a * f0
    bf0 = b * f0
    e2 = ((af0 ^ 2) - (bf0 ^ 2)) / (af0 ^ 2)
    n = (af0 - bf0) / (af0 + bf0)
    nu = af0 / (Sqr(1 - (e2 * ((Sin(RadPHI)) ^ 2))))
    rho = (nu * (1 - e2)) / (1 - (e2 * (Sin(RadPHI)) ^ 2))
    eta2 = (nu / rho) - 1
    p = RadLAM - RadLAM0
    M = Marc1(bf0, n, RadPHI0, RadPHI)
   
    I = M + n0
    II = (nu / 2) * (Sin(RadPHI)) * (Cos(RadPHI))
    III = ((nu / 24) * (Sin(RadPHI)) * ((Cos(RadPHI)) ^ 3)) * (5 - ((Tan(RadPHI)) ^ 2) + (9 * eta2))
    IIIA = ((nu / 720) * (Sin(RadPHI)) * ((Cos(RadPHI)) ^ 5)) * (61 - (58 * ((Tan(RadPHI)) ^ 2)) + ((Tan(RadPHI)) ^ 4))
   
    WGS84LL2North = I + ((p ^ 2) * II) + ((p ^ 4) * III) + ((p ^ 6) * IIIA)
   
End Function

Private Function Marc1(bf0, n, PHI0, PHI)

    Marc1 = bf0 * (((1 + n + ((5 / 4) * (n ^ 2)) + ((5 / 4) * (n ^ 3))) * (PHI - PHI0)) _
    - (((3 * n) + (3 * (n ^ 2)) + ((21 / 8) * (n ^ 3))) * (Sin(PHI - PHI0)) * (Cos(PHI + PHI0))) _
    + ((((15 / 8) * (n ^ 2)) + ((15 / 8) * (n ^ 3))) * (Sin(2 * (PHI - PHI0))) * (Cos(2 * (PHI + PHI0)))) _
    - (((35 / 24) * (n ^ 3)) * (Sin(3 * (PHI - PHI0))) * (Cos(3 * (PHI + PHI0)))))

End Function


mã em chuyển

Mã: Chọn hết

Sub Process_Globals
   'These global variables will be declared once when the application starts.
   'These variables can be accessed from all modules.

Dim aw,qe,qr,qt,ba,marc,kq As Double
End Sub

Sub Globals
   'These global variables will be redeclared each time the activity is created.
   'These variables can only be accessed from this module.

   Private lon As EditText
   Private lat As EditText
   Private TINH As Button
   
   Private Label1 As Label
   Private Label2 As Label
   Private Label3 As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
   'Do not forget to load the layout file created with the visual designer. For example:
   Activity.LoadLayout("1")

End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub





Sub TINH_Click



Dim a, b, e0, f0, phi0,ba As Double
a = 6378137
b = 6356752.3141
e0 = 500000
f0 = 0.9996
phi0 = 0

'Calculate LAM0 of the UTM zone which the user input Longitude is in
Dim PreZNum As Int
Dim ZNum As Int
Dim LAM0 As Double
Dim pi As Double
Dim phi As Double
Dim radphi As Double
Dim lam As Double
lam = lon.Text
phi = lat.Text
Dim radlam As Double
Dim radphi0 As Double
Dim radlam0 As Double
Dim af0,bf0,e2,n,nu,rho,eta2,p,iv,v,vi,wgs84ll2east As Double
Dim ZoneChooser As Int

Dim PreZNum As Int

PreZNum = (180 + lam) / 6 + 1
ZoneChooser = PreZNum


PreZNum = (180 + lam) / 6 + 1
ZNum = PreZNum
LAM0 = -(183 - 6 * ZNum)

'Convert angle measures to radians
    pi = 3.14159265358979
    radphi = phi * (pi / 180)
    radlam = lam * (pi / 180)
    radphi0 = phi0 * (pi / 180)
    radlam0 = LAM0 * (pi / 180)

    af0 = a * f0
    bf0 = b * f0
    e2 = ((af0*af0) - (bf0*bf0)) / (af0*af0)
    n = (af0 - bf0) / (af0 + bf0)
    nu = af0 / Sqrt(1 - (e2 * ((Sin(radphi)*Sin(radphi)))))
    rho = (nu * (1 - e2)) / (1 - (e2 * (Sin(radphi)*Sin(radphi))))
    eta2 = (nu / rho) - 1
    p = radlam - radlam0
   
    iv = nu * (Cos(radphi))
    v = (nu / 6) * ((Cos(radphi)*Cos(radphi)*Cos(radphi))) * ((nu / rho) - ((Tan(radphi)*Tan(radphi))))
    vi = (nu / 120) * (Cos(radphi)*Cos(radphi)*Cos(radphi)*Cos(radphi)*Cos(radphi)*Cos(radphi)) * (5 - (18 * ((Tan(radphi)*Tan(radphi)))) + ((Tan(radphi)*Tan(radphi)*Tan(radphi)*Tan(radphi)*Tan(radphi))) + (14 * eta2) - (58 * ((Tan(radphi)*Tan(radphi))) * eta2))
   
    wgs84ll2east = e0 + (p * iv) + ((p*p*p) * v) + ((p*p*p*p*p*p) * vi)
   Label1.text = wgs84ll2east
   
   Dim a, b, e0, f0, n0, phi0 As Double
a = 6378137
b = 6356752.3141
e0 = 500000
f0 = 0.9996
phi0 = 0
n0 = 0

'Calculate LAM0 of the UTM zone which the user input Longitude is in

Dim ZNum As Int
Dim LAM0 As Double
PreZNum = (180 + lam) / 6 + 1
LAM0 = -(183 - 6 * ZNum)
Dim m,i,ii,i,iii,iiia,WGS84LL2North As Double

'ert angle measures to radians
    pi = 3.14159265358979
    radphi = phi * (pi / 180)
    radlam = lam * (pi / 180)
    radphi0 = phi0 * (pi / 180)
    radlam0 = LAM0 * (pi / 180)
   
    af0 = a * f0
    bf0 = b * f0
    e2 = ((af0*af0) - (bf0*bf0)) / (af0*af0)
    n = (af0 - bf0) / (af0 + bf0)
    nu = af0 / (Sqrt(1 - (e2 * ((Sin(radphi)*Sin(radphi))))))
    rho = (nu * (1 - e2)) / (1 - (e2 * (Sin(radphi)*Sin(radphi))))
    eta2 = (nu / rho) - 1
    p = radlam - radlam0
   
    m = Marc1(bf0, n, radphi0, radphi)
   
    i = m + n0
    ii = (nu / 2) * (Sin(radphi)) * (Cos(radphi))
    iii = ((nu / 24) * (Sin(radphi)) * ((Cos(radphi)*Cos(radphi)*Cos(radphi)))) * (5 - ((Tan(radphi)*Tan(radphi))) + (9 * eta2))
    iiia = ((nu / 720) * (Sin(radphi)) * ((Cos(radphi)*Cos(radphi)*Cos(radphi)*Cos(radphi)*Cos(radphi)*Cos(radphi)))) * (61 - (58 * ((Tan(radphi)*Tan(radphi)))) + ((Tan(radphi)*Tan(radphi)*Tan(radphi)*Tan(radphi))))
   
    WGS84LL2North = i + ((p*p) * ii) + ((p*p*p*p) * iii) + ((p*p*p*p*p*p) * iiia)
   Label2.Text=WGS84LL2North
End Sub
Sub Marc1(bf0, n, radphi0, radphi)
Dim phi,phi0 As Double
Marc1 = bf0 * (((1 + n + ((5 / 4) * (n*n)) + ((5 / 4) * (n*n*n))) * (phi - phi0))-(((3 * n) + (3 * (n*n)) + ((21 / 8) * (n*n*n))) * (Sin(phi - phi0)) * (Cos(phi + phi0)))+((((15 / 8) * (n*n)) + ((15 / 8) * (n*n*n))) * (Sin(2 * (phi - phi0))) * (Cos(2 * (phi + phi0))))-(((35 / 24) * (n*n*n)) * (Sin(3 * (phi - phi0))) * (Cos(3 * (phi + phi0)))))
End Sub


em gủi cả file b4a để các anh tiện biết lỗi em cám ơn
Tập tin đính kèm
tinh.zip
(9.49 KiB) Đã tải 159 lần

vuchuc
Thành viên chính thức
Thành viên chính thức
Bài viết: 28
Ngày tham gia: T.Năm 27/05/2010 10:18 pm
Has thanked: 7 time

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi vuchuc » T.Năm 29/01/2015 8:20 am

K ai giúp e đc a.
Hixhix

vuchuc
Thành viên chính thức
Thành viên chính thức
Bài viết: 28
Ngày tham gia: T.Năm 27/05/2010 10:18 pm
Has thanked: 7 time

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi vuchuc » T.Sáu 30/01/2015 11:14 pm

Em đã làm xong phần tính ma trận.còn phần chuyenr từ vb sang b4a e có vướng mắc về khai báo mảng array
Như trong vb
private function marc1(bf0,n,radphi0,radphi)
Marc 1 = +-×÷ cac so
End function
Em muốn hỏi chuyển sang b4a fai viết lại thế nào cho đúng,và fai khai bao mảng tnao a.
Cho e hỏi luôn 1 câu nữa.e có 1 ô textbox nh e muons ô này chỉ gõ đc số và chỉ dùng đc 1 dấu chấm thì khai báo tnao ạ.
E khai bao inputtype-number thì bàn phím chỉ hiện số nh gõ đc nhiều dấu . muốn chỉ gõ đc 1 . thi khai báo tnao a

Hình đại diện của người dùng
tummosoft
Điều hành viên
Điều hành viên
Bài viết: 331
Ngày tham gia: T.Hai 19/05/2014 2:23 pm
Has thanked: 7 time
Been thanked: 57 time
Liên hệ:

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi tummosoft » CN 08/02/2015 10:06 am

1- Trong B4A, để truyền giá trị mảng vào một sub như sau:

Public Sub TinhTong(Mang1() As int, Mang2() As int)
................
' Return giá trị (nếu có)
End Sub

- Để sử dụng thì

Dim Mang1(5) As int

Mang1(0) = 1
Mang1(1) = 2
Mang1(2) = 3

TinhTong(Mang1)

2- Để Textbox chỉ có thể nhập số bạn cần xác định thuộc tính InpuType của TextEdit như bên dưới

EditText1.InputType = EditText1.INPUT_TYPE_DECIMAL_NUMBERS
:) Tummo Software :D
http://tummosoft.com

vuchuc
Thành viên chính thức
Thành viên chính thức
Bài viết: 28
Ngày tham gia: T.Năm 27/05/2010 10:18 pm
Has thanked: 7 time

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi vuchuc » CN 08/02/2015 7:52 pm

em đã khai báo như thế này,a xem giúp em xem sai cho nào và sửa thế nào với ạ.
no báo lỗi .
Parsing code. 0.01
Compiling code. Error
Error compiling program.
Error description: ',' expected.
Occurred on line: 173
marc1(bf0) = bf0 * ((1 + n + ((5 / 4) * (n*n)) + ((5 / 4) * (n*n*n))) * (PHI - phi0))
Word: )
em cám ơn anh.
dưới đây là code của cái marco exel . nguyên mẫu của cái MARC1. và file b4a của e.a xem giúp e với

Mã: Chọn hết

Private Function ZoneChooser(Longitude)

Dim PreZNum As Double
PreZNum = (180 + Longitude) / 6 + 1
ZoneChooser = Int(PreZNum)
End Function

Function WGS84LL2East(PHI As Double, LAM As Double)

Dim a, b, e0, f0, PHI0 As Double
a = 6378137
b = 6356752.3141
e0 = 500000
f0 = 0.9996
PHI0 = 0

'Calculate LAM0 of the UTM zone which the user input Longitude is in
Dim PreZNum As Double
Dim ZNum As Integer
Dim LAM0 As Double
PreZNum = (180 + LAM) / 6 + 1
ZNum = Int(PreZNum)
LAM0 = -(183 - 6 * ZNum)

'Convert angle measures to radians
    PI = 3.14159265358979
    RadPHI = PHI * (PI / 180)
    RadLAM = LAM * (PI / 180)
    RadPHI0 = PHI0 * (PI / 180)
    RadLAM0 = LAM0 * (PI / 180)

    af0 = a * f0
    bf0 = b * f0
    e2 = ((af0 ^ 2) - (bf0 ^ 2)) / (af0 ^ 2)
    n = (af0 - bf0) / (af0 + bf0)
    nu = af0 / (Sqr(1 - (e2 * ((Sin(RadPHI)) ^ 2))))
    rho = (nu * (1 - e2)) / (1 - (e2 * (Sin(RadPHI)) ^ 2))
    eta2 = (nu / rho) - 1
    p = RadLAM - RadLAM0
   
    IV = nu * (Cos(RadPHI))
    V = (nu / 6) * ((Cos(RadPHI)) ^ 3) * ((nu / rho) - ((Tan(RadPHI) ^ 2)))
    VI = (nu / 120) * ((Cos(RadPHI)) ^ 5) * (5 - (18 * ((Tan(RadPHI)) ^ 2)) + ((Tan(RadPHI)) ^ 4) + (14 * eta2) - (58 * ((Tan(RadPHI)) ^ 2) * eta2))
   
    WGS84LL2East = e0 + (p * IV) + ((p ^ 3) * V) + ((p ^ 5) * VI)
   
End Function

Function WGS84LL2North(PHI As Double, LAM As Double)


'constants specific to WGS84
Dim a, b, e0, f0, n0, PHI0 As Double
a = 6378137
b = 6356752.3141
e0 = 500000
f0 = 0.9996
PHI0 = 0
n0 = 0

'Calculate LAM0 of the UTM zone which the user input Longitude is in
Dim PreZNum As Double
Dim ZNum As Integer
Dim LAM0 As Double
PreZNum = (180 + LAM) / 6 + 1
ZNum = Int(PreZNum)
LAM0 = -(183 - 6 * ZNum)

'Convert angle measures to radians
    PI = 3.14159265358979
    RadPHI = PHI * (PI / 180)
    RadLAM = LAM * (PI / 180)
    RadPHI0 = PHI0 * (PI / 180)
    RadLAM0 = LAM0 * (PI / 180)
   
    af0 = a * f0
    bf0 = b * f0
    e2 = ((af0 ^ 2) - (bf0 ^ 2)) / (af0 ^ 2)
    n = (af0 - bf0) / (af0 + bf0)
    nu = af0 / (Sqr(1 - (e2 * ((Sin(RadPHI)) ^ 2))))
    rho = (nu * (1 - e2)) / (1 - (e2 * (Sin(RadPHI)) ^ 2))
    eta2 = (nu / rho) - 1
    p = RadLAM - RadLAM0
    M = Marc1(bf0, n, RadPHI0, RadPHI)
   
    I = M + n0
    II = (nu / 2) * (Sin(RadPHI)) * (Cos(RadPHI))
    III = ((nu / 24) * (Sin(RadPHI)) * ((Cos(RadPHI)) ^ 3)) * (5 - ((Tan(RadPHI)) ^ 2) + (9 * eta2))
    IIIA = ((nu / 720) * (Sin(RadPHI)) * ((Cos(RadPHI)) ^ 5)) * (61 - (58 * ((Tan(RadPHI)) ^ 2)) + ((Tan(RadPHI)) ^ 4))
   
    WGS84LL2North = I + ((p ^ 2) * II) + ((p ^ 4) * III) + ((p ^ 6) * IIIA)
   
End Function

Private Function Marc1(bf0, n, PHI0, PHI)

    Marc1 = bf0 * (((1 + n + ((5 / 4) * (n ^ 2)) + ((5 / 4) * (n ^ 3))) * (PHI - PHI0)) _
    - (((3 * n) + (3 * (n ^ 2)) + ((21 / 8) * (n ^ 3))) * (Sin(PHI - PHI0)) * (Cos(PHI + PHI0))) _
    + ((((15 / 8) * (n ^ 2)) + ((15 / 8) * (n ^ 3))) * (Sin(2 * (PHI - PHI0))) * (Cos(2 * (PHI + PHI0)))) _
    - (((35 / 24) * (n ^ 3)) * (Sin(3 * (PHI - PHI0))) * (Cos(3 * (PHI + PHI0)))))

End Function

Tập tin đính kèm
tinh chuyen.zip
(27.45 KiB) Đã tải 149 lần

Hình đại diện của người dùng
phongvanvu
Guru
Guru
Bài viết: 151
Ngày tham gia: T.Tư 24/01/2007 2:20 pm
Has thanked: 1 time
Been thanked: 8 time
Liên hệ:

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi phongvanvu » T.Ba 10/02/2015 10:21 pm

Lỗi này có nghĩa là tham số của hàm Marc1 không phù hợp.
Em chú ý:
Public Sub marc1(bf0 As Int , n As Int, radphi0 As Int, radphi As Int)

End Sub
Nghĩa là có 4 tham số cho hàm marc1.
Trong đó em lại ghi:
marc1(bf0) = bf0 * ((1 + n + ((5 / 4) * (n*n)) + ((5 / 4) * (n*n*n))) * (PHI - phi0))
Nghĩa là chỉ truyền 1 tham số cho hàm marc1 còn thiếu 3 tham số nữa.
Đây là gợi ý của anh, còn lại em tự nghiên cứu code và sửa nhé!
Live to fight!

vuchuc
Thành viên chính thức
Thành viên chính thức
Bài viết: 28
Ngày tham gia: T.Năm 27/05/2010 10:18 pm
Has thanked: 7 time

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi vuchuc » T.Năm 12/02/2015 11:35 am

em cám ơn a đã gợi ý.
vì cái này em cũng đã mất 1 số thời gian rồi,khi em làm như thế này thì nó có lỗi
Error description: Syntax error.
em dịch thì nó là sai cú pháp nhưng chưa hiểu sai ở chỗ nào.

Dim marc1(bf0, n, radphi0, radphi) As Int
marc1(bf0,n,radphi0,radphi) = bf0 * ((1 + n + ((5 / 4) * (n*n)) + ((5 / 4) * (n*n*n))) * (phi - phi0)) -(((3 * n) + (3 * (n*n)) + ((21 / 8) * (n*n*n))) * (Sin(phi - phi0)) * (Cos(phi + phi0))) +((((15 / 8) * (n*n)) + ((15 / 8) * (n*n*n))) * (Sin(2 * (phi - phi0))) * (Cos(2 * (phi + phi0)))) -(((35 / 24) * (n*n*n)) * (Sin(3 * (phi - phi0))) * (Cos(3 * (phi + phi0))))

Mã: Chọn hết

#Region  Project Attributes
   #ApplicationLabel: B4A Example
   #VersionCode: 1
   #VersionName:
   'SupportedOrientations possible values: unspecified, landscape or portrait.
   #SupportedOrientations: unspecified
   #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
   #FullScreen: False
   #IncludeTitle: True
#End Region

Sub Process_Globals
   'These global variables will be declared once when the application starts.
   'These variables can be accessed from all modules.
Dim PreZNum As Double
Dim ZoneChooser As Double
Dim Longitude As Double



End Sub

Sub Globals
   'These global variables will be redeclared each time the activity is created.
   'These variables can only be accessed from this module.

   Private longt As EditText
   Private late As EditText
   Private Label1 As Label
   Private Label2 As Label
   Private Button1 As Button
End Sub

Sub Activity_Create(FirstTime As Boolean)
   'Do not forget to load the layout file created with the visual designer. For example:
   Activity.LoadLayout("tinh")
   


End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub



 Sub ZoneChooser
'Choose the UTM zone number according to user input decimal Longitude
'East is positive direction

Dim PreZNum As Double
PreZNum = (180 + Longitude) / 6 + 1
ZoneChooser = PreZNum
End Sub

Sub Button1_Click

Dim a, b, e0, f0, phi0,phi,lam As Double
a = 6378137
b = 6356752.3141
e0 = 500000
f0 = 0.9996
phi0 = 0
phi=longt.Text
lam=late.text


'Calculate LAM0 of the UTM zone which the user input Longitude is in
Dim PreZNum As Double
Dim ZNum As Int
Dim LAM0 As Double
PreZNum = (180 + lam) / 6 + 1
ZNum = PreZNum
LAM0 = -(183 - 6 * ZNum)

'Convert angle measures to radians
Dim pi,radphi,radlam,radphi0,radlam0,af0,bf0,e2,n,nu,rho,eta2,p,iv,v,vi As Double
   
   pi = 3.14159265358979
    radphi = phi * (pi / 180)
    radlam = lam * (pi / 180)
    radphi0 = phi0 * (pi / 180)
    radlam0 = LAM0 * (pi / 180)

    af0 = a * f0
    bf0 = b * f0
   
    e2 = ((af0*af0) - (bf0*bf0)) / (af0*af0)
    n = (af0 - bf0) / (af0 + bf0)
   nu = af0 / Sqrt(1 - (e2 * ((Sin(radphi)*Sin(radphi)))))
    rho = (nu * (1 - e2)) / (1 - (e2 * (Sin(radphi)*Sin(radphi))))
    eta2 = (nu / rho) - 1
    p = radlam - radlam0
   
    iv = nu * (Cos(radphi))
    v = (nu / 6) * ((Cos(radphi)*Cos(radphi)*Cos(radphi))) * ((nu / rho) - ((Tan(radphi)*Tan(radphi))))
    vi = (nu / 120) * (Cos(radphi)*Cos(radphi)*Cos(radphi)*Cos(radphi)*Cos(radphi)*Cos(radphi)) * (5 - (18 * ((Tan(radphi)*Tan(radphi)))) + ((Tan(radphi)*Tan(radphi)*Tan(radphi)*Tan(radphi)*Tan(radphi))) + (14 * eta2) - (58 * ((Tan(radphi)*Tan(radphi))) * eta2))
   
     Label1.text = e0 + (p * iv) + ((p*p*p) * v) + ((p*p*p*p*p*p) * vi)
   
   



Dim a, b, e0, f0, n0, phi0 As Double
'Calculate LAM0 of the UTM zone which the user input Longitude is in

'Convert angle measures to radians
Dim pi,radphi,radlam,radphi0,radlam0,af0,bf0,e2,n,nu,rho,eta2,p,iv,v,vi,i,ii,iii,iiia,m As Double

Dim marc1(bf0, n, radphi0, radphi) As Int
   marc1(bf0,n,radphi0,radphi) = bf0 * ((1 + n + ((5 / 4) * (n*n)) + ((5 / 4) * (n*n*n))) * (phi - phi0)) -(((3 * n) + (3 * (n*n)) + ((21 / 8) * (n*n*n))) * (Sin(phi - phi0)) * (Cos(phi + phi0))) +((((15 / 8) * (n*n)) + ((15 / 8) * (n*n*n))) * (Sin(2 * (phi - phi0))) * (Cos(2 * (phi + phi0)))) -(((35 / 24) * (n*n*n)) * (Sin(3 * (phi - phi0))) * (Cos(3 * (phi + phi0))))


   
   
    m = marc1(bf0, n, radphi0, radphi)
   
    i = m + n0
    ii = (nu / 2) * (Sin(radphi)) * (Cos(radphi))
    iii = ((nu / 24) * (Sin(radphi)) * ((Cos(radphi)*Cos(radphi)*Cos(radphi)))) * (5 - ((Tan(radphi)*Tan(radphi))) + (9 * eta2))
    iiia = ((nu / 720) * (Sin(radphi)) * ((Cos(radphi)*Cos(radphi)*Cos(radphi)*Cos(radphi)*Cos(radphi)*Cos(radphi)))) * (61 - (58 * ((Tan(radphi)*Tan(radphi)))) + ((Tan(radphi)*Tan(radphi)*Tan(radphi)*Tan(radphi))))
    Label2.text = i + ((p*p) * ii) + ((p*p*p*p) * iii) + ((p*p*p*p*p*p) * iiia)

End Sub

Public Sub  marc1(bf0 As Int , n As Int, radphi0 As Int, radphi As Int)

End Sub



Hình đại diện của người dùng
phongvanvu
Guru
Guru
Bài viết: 151
Ngày tham gia: T.Tư 24/01/2007 2:20 pm
Has thanked: 1 time
Been thanked: 8 time
Liên hệ:

Re: [Chú ý] Thắc mắc về lập trình Basic4Android

Gửi bàigửi bởi phongvanvu » T.Năm 12/02/2015 7:42 pm

Marc1 là một hàm không phải một biến em nhé nên không cần khai báo Dim.
Em bỏ đoạn này đi:

Mã: Chọn hết

Dim marc1(bf0, n, radphi0, radphi) As Int
marc1(bf0,n,radphi0,radphi) = bf0 * ((1 + n + ((5 / 4) * (n*n)) + ((5 / 4) * (n*n*n))) * (phi - phi0)) -(((3 * n) + (3 * (n*n)) + ((21 / 8) * (n*n*n))) * (Sin(phi - phi0)) * (Cos(phi + phi0))) +((((15 / 8) * (n*n)) + ((15 / 8) * (n*n*n))) * (Sin(2 * (phi - phi0))) * (Cos(2 * (phi + phi0)))) -(((35 / 24) * (n*n*n)) * (Sin(3 * (phi - phi0))) * (Cos(3 * (phi + phi0))))

Nhét vào trong hàm như thế này:

Mã: Chọn hết

Public Sub  marc1(bf0 As Int , n As Int, phi0 As Int, phi As Int)
return bf0 * ((1 + n + ((5 / 4) * (n*n)) + ((5 / 4) * (n*n*n))) * (phi - phi0)) -(((3 * n) + (3 * (n*n)) + ((21 / 8) * (n*n*n))) * (Sin(phi - phi0)) * (Cos(phi + phi0))) +((((15 / 8) * (n*n)) + ((15 / 8) * (n*n*n))) * (Sin(2 * (phi - phi0))) * (Cos(2 * (phi + phi0)))) -(((35 / 24) * (n*n*n)) * (Sin(3 * (phi - phi0))) * (Cos(3 * (phi + phi0))))
End Sub

Hàm trên tương đương hàm này trong VB:

Mã: Chọn hết

Private Function Marc1(bf0, n, PHI0, PHI)

    Marc1 = bf0 * (((1 + n + ((5 / 4) * (n ^ 2)) + ((5 / 4) * (n ^ 3))) * (PHI - PHI0)) _
    - (((3 * n) + (3 * (n ^ 2)) + ((21 / 8) * (n ^ 3))) * (Sin(PHI - PHI0)) * (Cos(PHI + PHI0))) _
    + ((((15 / 8) * (n ^ 2)) + ((15 / 8) * (n ^ 3))) * (Sin(2 * (PHI - PHI0))) * (Cos(2 * (PHI + PHI0)))) _
    - (((35 / 24) * (n ^ 3)) * (Sin(3 * (PHI - PHI0))) * (Cos(3 * (PHI + PHI0)))))

End Function
Live to fight!


Quay về “Android”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách