Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Cách chuyển đổi giá trị trong visual studio 2005

  1. #1
    Ngày gia nhập
    10 2007
    Bài viết
    7

    Mặc định Cách chuyển đổi giá trị trong visual studio 2005

    Em có đoạn code sau : (em sử dụng chương trình Microsoft Visual Studio 2005 - em xin lỗi nếu như em post bài nhầm box )

    Em muốn đổi từ độ phút giây ---> độ phần trăm :

    Ví dụ : 1045.8055 (độ phút giây) ---> 10.76345 (độ phần trăm) - (10+45.8055/60).

    Visual C++ Code:
    1.  //Latitude 1045.8055 ddmm.mmmm
    2.         CString dd = Latitude.Left(2);
    3.     CString mm = Latitude.Right(Latitude.GetLength()-2);
    4.     double f = _wtof((const TCHAR *)(LPCTSTR)(mm))/60;
    5.     Latitude.Format(_T("%s%f"),dd,f);
    6.     //Longtude  10640.0565 dddmm.mmmm
    7.     dd = Longitude.Left(3);
    8.     mm = Longitude.Right(Latitude.GetLength()-3);
    9.     f = _wtof((const TCHAR *)(LPCTSTR)(mm))/60;
    10.     Longitude.Format(_T("%s%f"),dd,f);

    Đoạn code trên của em bị lỗi .Các bác có thể check lỗi dùm em được không ạ?

    Em xin cám ơn.



    @admin: vì bài kia em ko sửa tiêu đề được nên em post bài mới này.Có gì mong các mod và admin thông cảm.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi Tab : 16-05-2008 lúc 09:09 PM. Lý do: Đặt lại thẻ CODE

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    7

    Ai có thể hướng dẫn cho em cách viết code trong visual studio để đổi từ độ phút giây sang độ % được ko ?



    Sao ko có ai reply em hết vậy ?

  3. #3
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Ko hiểu ý của bạn là gì hết cả? Bạn có thể chi tiết hơn không?
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  4. #4
    Ngày gia nhập
    10 2007
    Bài viết
    7

    @Dream: dạ .

    Ý của em là :
    1. Em nhận được 2 giá trị Latitude và Longitude từ cổng COM .

    Visual C++ Code:
    1. UpdateData(1);
    2.         if (comm.get_CommEvent()==2){
    3.         VARIANT data = comm.get_Input();
    4.         tem += (CString)data.bstrVal;
    5.         if (( tem.Replace(_T("\r\n"),_T(""))))
    6.         {
    7.            
    8.             gps.nmeainfo = tem;
    9.             gps.parse();
    10.             sreceive += tem;
    11.             tem = "";
    12.             dispUTC.SetWindowTextW ( (gps.UTCTime));
    13.             dispLong.SetWindowTextW((gps.Longitude));
    14.             dispLat.SetWindowTextW((gps.Latitude));
    15.  
    16.             //xuat ra file LAT LONG
    17.              CStdioFile fff(_T("toado.txt"),CFile::modeCreate | CFile::modeWrite | CFile::typeText );
    18.              fff.WriteString(gps.Latitude);
    19.              fff.WriteString(_T(","));
    20.              fff.WriteString(gps.Longitude);
    21.              fff.Close();
    22.         }
    23.    
    24.     };
    25.     UpdateData(false);
    Em lưu 2 giá trị đó vào 2 biến là gps.Latitudegps.Longitude .
    Giá trị format (kiểu mặc định) ban đầu của nó là :
    - ddmm.mmmm với Latitude (Ví dụ : 3723.2475 - 37 độ 23.2475 phút)
    - dddmm.mmmm với Longitude (Ví dụ : 12158.3416 - 121 độ 23.2475 phút )

    Do nhu cầu của thực tế ,em muốn đổi từ độ phút giây (giá trị như bên trên) sang độ %.
    Công thức toán học để đổi là :
    3723.2475 (độ phút giây) = 37 (degree) + 23.2475 (minute)/60 = độ % .



    Và lưu giá trị mới của Latitude và Longitude(giá trị sau khi đã đổi qua độ %) vào 1 file text.

    Vì mới làm quen với visual studio nên cách xử lý việc trên em chưa biết .

    Mong được các anh chị giúp đỡ .

    Em xin cảm ơn.
    Đã được chỉnh sửa lần cuối bởi Tab : 16-05-2008 lúc 09:10 PM. Lý do: Đặt lại thẻ code

  5. #5
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    3723.2475 (độ phút giây) = 37 (degree) + 23.2475 (minute)/60 = độ % .
    Bạn dùng CString Mid( int nFirst, int nCount ) để trích xuất s1 = "37", và s2 = "23.2475" , sau đó chuyển s1 và s2 về dạng int bằng cách dùng int i1 = atoi(s1) và int i2 = atoi(s2).

  6. #6
    Ngày gia nhập
    10 2007
    Bài viết
    7

    Mặc định Cách chuyển đổi giá trị trong visual studio 2005

    Mình viết đoạn code :

    Visual C++ Code:
    1. //Latitude 3723.2475 ddmm.mmmm
    2. CString dd = Latitude.Left(1);
    3. CString mm = Latitude.Right(Latitude.GetLength()-1);
    4. double f = _wtof(Latitude.Left(1))+_wtof(Latitude.Right(Latitude.GetLength()-1))/60;
    5. Latitude.Format(_T("%s%f"),dd,f);
    6. //Longtude  12158.3416 dddmm.mmmm
    7. dd = Longitude.Left(2);
    8. mm = Longitude.Right(Latitude.GetLength()-2);
    9. f = _wtof(Latitude.Left(2))+_wtof(Latitude.Right(Latitude.GetLength()-2))/60;
    10. Longitude.Format(_T("%s%f"),dd,f);

    Thì được kết quả :
    Output Code:
    1. Latitude: 11.017157
    2. Longtitude: 1011.000286


    Mà kết quả đúng phải là : Latitude = 10.763445 và Longitude = 106.667513

    Ai có thể chỉ cho mình lỗi trên được ko?



    @void main() : Bạn có thể nói cụ thể hơn 1 chút được không ?

    Mình cám ơn bạn rất nhiều . Mong được bạn giúp đỡ .

  7. #7
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    Trích dẫn Nguyên bản được gửi bởi pisco Xem bài viết
    Mà kết quả đúng phải là : Latitude = 10.763445 và Longitude = 106.667513
    37 + (23.2475 / 60) = 37.3874583 , kết quả của cậu mâu thuẫn ?

  8. #8
    Ngày gia nhập
    10 2007
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi void main () Xem bài viết
    37 + (23.2475 / 60) = 37.3874583 , kết quả của cậu mâu thuẫn ?
    Dạ , cái //Latitude 3723.2475 ddmm.mmmm đó chỉ là lấy ví dụ thôi bác ạ.

    Còn kết quả thực nghiệm là :
    1045.8055 (độ phút giây) ---> 10.76345 (độ phần trăm) - (10+45.8055/60).

    1045.8055 --> kết quả trực tiếp do thiết bị nhận được
    10.76345 ---> kết quả đúng khi chuyển qua độ % (kết quả mong muốn đạt được .)

    Còn đây là kết quả do đoạn code của em viết :
    Output Code:
    1. Latitude: 11.017157
    2. Longtitude: 1011.000286

    Em không biết viết sai ở chỗ nào , mong được bác chỉ giáo thêm .

    Cám ơn bác .
    Đã được chỉnh sửa lần cuối bởi pisco : 15-05-2008 lúc 10:39 PM.

  9. #9
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    Bạn thử code này xem nhé :
    Visual C++ Code:
    1. #include <afx.h>
    2. float toFloat(CString s)
    3. {
    4.     return (float) atof(s);
    5. }
    6.  
    7. CString toString(float f)
    8. {
    9.     CString ret;
    10.     ret.Format("%f",f);
    11.     return ret;
    12. }
    13. CString convertResulft(CString strResult)
    14. {
    15.     CString s1 , s2 ;
    16.     s1 = strResult.Mid(0,2);
    17.     s2 = strResult.Mid(2);
    18.  
    19.     float fResult = atoi(s1) + toFloat(s2) / 60;
    20.  
    21.     return toString(fResult);
    22. }

  10. #10
    Ngày gia nhập
    10 2007
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi void main () Xem bài viết
    Bạn thử code này xem nhé :
    Visual C++ Code:
    1. #include <afx.h>
    2. float toFloat(CString s)
    3. {
    4.     return (float) atof(s);
    5. }
    6.  
    7. CString toString(float f)
    8. {
    9.     CString ret;
    10.     ret.Format("%f",f);
    11.     return ret;
    12. }
    13. CString convertResulft(CString strResult)
    14. {
    15.     CString s1 , s2 ;
    16.     s1 = strResult.Mid(0,2);
    17.     s2 = strResult.Mid(2);
    18.  
    19.     float fResult = atoi(s1) + toFloat(s2) / 60;
    20.  
    21.     return toString(fResult);
    22. }

    @Void main(): có thể hướng dẫn mình cụ thể hơn được ko?

    Vì mấy thuật toán này thật sự mình chưa có rành .

    Khi mình chèn thêm thư viện "afx.h" và đoạn code của bạn vào thì nó báo lỗi :
    error C3861: 'toFloat': identifier not found
    error C3861: 'toString': identifier not found

    ...
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Các đề tài tương tự

  1. tạo css trong visual studio 2005
    Gửi bởi thuan trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 4
    Bài viết cuối: 29-07-2011, 11:15 AM
  2. Cách mở file solution của visual studio 2005 trong visual web developer 2005 express?
    Gửi bởi funny_dn89 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 1
    Bài viết cuối: 19-03-2011, 12:41 AM
  3. Fix loi nay trong Visual Studio 2005 !
    Gửi bởi dvminhpro45 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 29-09-2010, 10:21 AM
  4. Cách sử dụng Visual C# trong bộ Visual Studio 2005
    Gửi bởi svcntt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 18-07-2009, 10:44 PM
  5. tạo cơ sơ dữ liệu trong Visual studio 2005
    Gửi bởi aredspider trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 26-10-2007, 11:33 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn