Hỏi & đáp lập trình

Bạn nghĩ mình ko biết làm thế nào để C/C++ viết cross platform được hay sao :)), FileZilla, Google Earth, Opera là 1 trong những điển hình chương trình dùng C/C++ và QT4 để viết cross platform.
Chưa bao giờ có hứng thú với Java
 
Bạn nghĩ mình ko biết làm thế nào để C/C++ viết cross platform được hay sao :)), FileZilla, Google Earth, Opera là 1 trong những điển hình chương trình dùng C/C++ và QT4 để viết cross platform.
Chưa bao giờ có hứng thú với Java

C/C++ trong QT không phải là C chuẩn, một điều nữa, C/C++ cũng phải thông qua QT để có thể cross platform, tương tự như Java thông qua Virtual machine để cross platform. QT cũng dùng cách tiếp cận như Java đã dùng. Bạn nói C/C++ như trên là không chính xác.
 
Nói thật là bạn đếch hiểu cái QT là gì thì đừng viết ra đây người ta cười cho nhé.
Thứ 2 là tui học lập trình C/C++ tức là cấm tui ko học gtk, cấm tui ko học QT, cấm tui ko học WxWidget, hay là lúc nói học C tui phải liệt kê những cái đó ra ?
Bạn có tin tui viết 1 phần mềm đơn giản, dùng chính xác Iso C của bạn nói ra ( mà ko dùng bất cứ thư viện ngoài nào ) , chạy đuợc trên Unix/Linux/Windows ko.
 
Ơ thế này nhé, nghĩa là anh cũng phải dùng một compiler hỗ trợ cross platform đúng không? cái quan trọng tôi muốn nói là anh dùng compiler nào để biên dịch chứ không phải là anh dùng cú pháp C chuẩn hay Cabc nào đó để viết. Vấn đề là sau khi biên dịch ra chương trình nó ở dạng nào để có thể cross platform.
 
Bắt đầu giở giọng bắt bẻ =)).
Truớc tiên định nghĩa cross platform.
Cross Platform có 2 dạng, 1 là 1 binary chạy nhiều platform, 2 là cùng 1 pm nhưng đuợc build ở nhiều binary với mỗi platform khác nhau.
Trong thế giới của x-platform, thì Java là cái lòi ra duy nhất, vì nó ko cần binary riêng cho từng system, chứ ko phải như bạn nghĩ, X-platform tức là nó cứ phải 1 cái phần mềm copy vào máy nào cũng chạy đuợc :-j
Windows Có MinGW, Linux và Unix có Gcc, đó là những thứ để biên dịch C.
Đối với bất cứ system nào, kể cả tương lai ( cũng như Java thôi ), chỉ cần nó có biên dịch C, thì chương trình của tôi có thể biên dịch được.
War chả giải quyết vấn đề gì, đầu tiên bạn bắt bẻ C/C++ ko viết X được, sau đó bạn tiếp tục nói QT4 ko phải C++ chuẩn, rồi cuối cùng bạn hỏi biên dịch ra cái gì :-j, vậy cuối cùng ý bạn là muốn gì đây ?
 
Trước hết và đầu tiên C/C++ k bao giờ có thể Cross. QT4 k phải là C chuẩn là trong cú pháp sử dụng khi viết ct không tuân thủ hoàn toàn chính xác như đặc tả chuẩn của C(cái này trong website của QT cũng có đề cập ). Và sau này.... nhờ ý tưởng dùng 1 thứ trung gian để giúp cho "ai" cũng hiểu nhằm biên dịch ra chương trình... chạy "đâu cũng được", nên đã xuất hiện ra các compiler Cross platform, giúp C/C++ cũng như Java có thể "mềm dẻo" với tất cả các HĐH. Học kỹ thuật thì phải chính xác, tôi quen vậy rồi chứ không phải là bắt bẻ, thử hỏi code 1 ct mà sai 1 dấu chấm phẩy cũng k chạy (chưa kể các lỗi luận lý), phải chính xác 100%.
 
Trước hết và đầu tiên C/C++ k bao giờ có thể Cross.
Bạn nói được câu này thì tôi xin chịu thua
Tôi chỉ quote lại câu tôi đã nói
Nói thật là bạn đếch hiểu cái QT là gì thì đừng viết ra đây người ta cười cho nhé.
 
Bạn nói được câu này thì tôi xin chịu thua
Tôi chỉ quote lại câu tôi đã nói

Nếu không dùng bất kỳ compiler cross-platform nào để biên dịch thì cho dù có nặn hết mụn trên mặt ct cũng chưa chạy đâu nhé. Tôi cũng nói lại 1 câu:
Compiler C cũ hỗ trợ riêng biệt từng HĐH, QT nói nôm na có công gom chúng lại thành 1 cái "compiler đa năng" thế thôi.. Còn những vấn đề hiểu biết tôi k thích bàn tới, và cũng nói luôn những cái tôi biết chưa chắc anh biết và ngược lại (tất nhiên), đừng tuyên bố khập khiễng như thế. Thân !
 
Tôi chịu thua rồi mà :-j.
Hay tôi nói thế này nhé, bất cứ thằng nào, mà nói được cái câu C ko thể viết cross-platform được, thì nó chả biết cái gì cả, tôi chắc chắn là như thế đấy

Edit: Cái kịch bản flame-war này giống mọi khi quá ;)), ở các diễn đàn về lập trình, khi có 1 ng nói 1 NNLT ko thể làm gì được là sẽ có chửi hội đồng ;)), quen thói thế rồi :-j. Thôi thì mình calm-down...
 
Mình cũng phải Calm down, không thôi lại có người bảo là mình thích bắt bẻ.
 
Đơn giản vì bạn viết sai so sánh, ko được viết 50<X<=100 mà phải viết 50<X && X<=100.
Giải thích kĩ thêm 1 tí về lỗi này...
Đối với trường hợp ko có else, cả 2 chỗ so sánh 50<X<=100 và 100<X<=150 đều return là true nên giá được tính 2 lần, kết quả sau ăn may là đúng nên nó đúng.
Với hàm có else thì nó được tính 1 lần ở công thức đầu, do nó sai nên sai.
Nên nhớ là 50<X<=100 thì tức là (50<X)<=100, 50<X luôn là 0 hoặc 1 nên nó luôn <100, vì vậy cái công thức này luôn đúng

Vậy thì mình mới đố bạn chứ, tại vì bạn nói nó chạy ra kết quả giống nhau nên mình lấy 1 vd cho bạn xem thôi,cảm thấy hay hay mới đố
 
Tùy bạn thích làm về cái gì thôi.
Học về Ajax, Javascript, Html, Web2.0 chủ yếu để hướng làm web designer.
Học về PHP/MySql, Asp... hướng làm web programmer.
Học về Java nếu bạn thích làm phần mềm người dùng cuối, phần mềm nhúng.
Học về C# nếu bạn chủ yếu lập trình trên Windows và dùng Windows API, dùng lập trình các phần mềm .Net
Còn rất nhiều NNLT khác, quan điểm mình học C/C++ vì mình thích lập trình cross platform và lập trình phần mềm, ứng dụng nói chung

Thanks anh Funnnny đã chỉ giáo.
.
___________Auto Merge________________

.
Hai anh này tranh luận chuyện gì mà gay gắt quá, nghe chẳng hiểu gì, cứ crossplatform với QT loạn cả lên.
 
Cho em hỏi chút về cách viết code của wed, tại mới tập nên không rành::)::)::). Mình muốn viết vào giữa cái wed này thì viêt thế nào vậy mấy anh?


 
Cho tớ hỏi bài này chút, 1 bài VB bài nhỏ thôi :;)

Cho 2 biến sLabel, sDriveLetter đều là string
sLabel được gán giá trị bất kì.
Hãy trả lại sDriveLetter về giá trị là chữ cái của ổ (trong my computer) mà có label là sLabel và trả về giá trị rỗng nếu không tìm thấy ổ nào có label (tên ổ) là sLabel

Ví dụ cho dễ hiểu nhé:
Trong máy có 4 ổ (3 partition của ổ cứng là C:, D:, E: + 1 ổ quang là F:)
ổ C là SYSTEM, ổ D là SETUP, ổ E là STORE, ổ F là WINXP
Nhập giá trị cho biến sLabel, giả sử mình nhập vào là SETUP chẳng hạn. Hãy cho ra giá trị của biến sDriveLetter là chữ cái của ổ (trong My computer) mà có label (tên ổ) là sLabel (ở đây là SETUP), ở đây theo như ví dụ ở trên thì giá trị sDriveLetter ở đây là DsLabel mình đã nhập là SETUP

Mình nói thế có khó hiểu quá không nhỉ :-s
 
Vậy thì mình mới đố bạn chứ, tại vì bạn nói nó chạy ra kết quả giống nhau nên mình lấy 1 vd cho bạn xem thôi,cảm thấy hay hay mới đố
Cơ bản nó chạy giống nhau, tuy nhiên cả 2 cái đều sai thôi =))
 
Cho tớ hỏi bài này chút, 1 bài VB bài nhỏ thôi :;)

Cho 2 biến sLabel, sDriveLetter đều là string
sLabel được gán giá trị bất kì.
Hãy trả lại sDriveLetter về giá trị là chữ cái của ổ (trong my computer) mà có label là sLabel và trả về giá trị rỗng nếu không tìm thấy ổ nào có label (tên ổ) là sLabel

Ví dụ cho dễ hiểu nhé:
Trong máy có 4 ổ (3 partition của ổ cứng là C:, D:, E: + 1 ổ quang là F:)
ổ C là SYSTEM, ổ D là SETUP, ổ E là STORE, ổ F là WINXP
Nhập giá trị cho biến sLabel, giả sử mình nhập vào là SETUP chẳng hạn. Hãy cho ra giá trị của biến sDriveLetter là chữ cái của ổ (trong My computer) mà có label (tên ổ) là sLabel (ở đây là SETUP), ở đây theo như ví dụ ở trên thì giá trị sDriveLetter ở đây là DsLabel mình đã nhập là SETUP

Mình nói thế có khó hiểu quá không nhỉ :-s
http://www.ezzylearning.com/tutorial.aspx?tid=0068504

hoặc search trong MSDN về DriveInfo

PHP:
Imports System
Imports System.IO

Class Test
    Public Shared Sub Main()
        Dim allDrives() As DriveInfo = DriveInfo.GetDrives()

        Dim d As DriveInfo
        For Each d In allDrives
            Console.WriteLine("Drive {0}", d.Name)
            Console.WriteLine("  File type: {0}", d.DriveType)
            If d.IsReady = True Then
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel)
                Console.WriteLine("  File system: {0}", d.DriveFormat)
                Console.WriteLine( _
                    "  Available space to current user:{0, 15} bytes", _
                    d.AvailableFreeSpace)

                Console.WriteLine( _
                    "  Total available space:          {0, 15} bytes", _
                    d.TotalFreeSpace)

                Console.WriteLine( _
                    "  Total size of drive:            {0, 15} bytes ", _
                    d.TotalSize)
            End If
        Next
    End Sub
End Class

'This code produces output similar to the following:
'
'Drive A:\
' File type: Removable
'Drive C:\
' File type: Fixed
' Volume label:
' File system: FAT32
' Available space to current user: 4770430976 bytes
' Total available space: 4770430976 bytes
' Total size of drive: 10731683840 bytes
'Drive D:\
' File type: Fixed
' Volume label:
' File system: NTFS
' Available space to current user: 15114977280 bytes
' Total available space: 15114977280 bytes
' Total size of drive: 25958948864 bytes
'Drive E:\
' File type: CDRom
'
'The actual output of this code will vary based on machine and the permissions
'granted to the user executing it.
 
sorry :p hình như mình nhầm tên cái ngôn ngữ lập trình này :p
cái ngôn ngữ mà nó có cái đoạn code kiểu như này này

Mã:
-- Confirm that the installation executable should be launched.
result = Dialog.Message("Confirm", "Are you sure you would like to install now?", MB_YESNO, MB_ICONINFORMATION, MB_DEFBUTTON1);

-- If the user clicked the Yes button.
if (result == IDYES) then

    -- Run the installation file.
    File.Run("AutoPlay\\Docs\\setup.exe", "", "", SW_SHOWNORMAL, false);

    -- Check to see if an error occurred when launching the file.
    error = Application.GetLastError();

    -- If an error occurred, display an error message to the user.
    if (error ~= 0) then
        Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);
    end
end
hoặc như thế này
Mã:
-- Set this value to the expected serial number of the
-- drive that your application will run from.
Expected_Serial = 123456789;

-- Gets the source drive's current serial number
Current_Serial = Drive.GetInformation(_SourceDrive).SerialNumber;

-- Compares the two serials and, if different, terminates the app.
if (Current_Serial ~= Expected_Serial) then 
    Dialog.Message("ERROR", "This is an unauthorized copy of the original application, and will shut down.", MB_OK, MB_ICONSTOP);
    Application.Exit();
end
phiền bạn lần nữa nhé :;)
à mà hình như cái này là 1 đoạn script thì phải :-s
 
Đều là dùng Windows API cả thôi mà :)
 
ui ... ngôn ngữ gì từa tựa C mà lại có if then end thế -.-'

đúng là đều xài chung windows api là GetLogicalDrives và GetLogicalDriveStrings, HieuNM tìm cách sử dụng win32 api trong ngôn ngữ của cậu xem, mấy cái này mình chưa học ...
 
À, thực ra nó là 1 đoạn script của chương trình Autoplay Media Studio
Mình định làm 1 cái code file auto tự chạy tự giải nén nhưng đến đoạn này thì bí
Thấy nó có liên quan đến lập trình nên vào đây hỏi

codeams.jpg


helpams.png
 
Back
Top