2012-01-03 23 views
5

Trong Delphi XE2 tạo tự động xây dựng số chức năng bây giờ sử dụng một số loại ngày và giá trị thời gian tạo ra, như thế này:Có phải số mới được tạo tự động của Delphi XE2 được liên kết với 1.1.2000 00:00:00 không?

2.4.4386.838

Hai số cuối cùng thay đổi mỗi khi bạn xây dựng và được dựa trên ngày và giờ hiện tại:

Major = 2 (user defined) 
Minor = 4 (user defined) 
Release = 4386 (number of days since Jan 1 2000) 
Build = 838 (number of seconds since 00:00:00) 

Tôi đoán định dạng mới này cho số Phiên bản và Xây dựng được mượn từ triển khai .NET. Trong .net, số cuối cùng (Xây dựng) bằng số giây kể từ nửa đêm giờ địa phương, chia cho 2. Xem liên kết này để biết chi tiết về triển khai .net: Determining Build Date the hard way

Nếu điều này có thể dựa vào để duy trì điều này bằng cách nào, thì bây giờ chúng ta có một cách tốt hơn để xác định thời gian biên dịch thay vì

  1. Sử dụng plugin IDE

  2. Sử dụng PE Headers hacks

Các câu hỏi không phải là cách quay lại chức năng số phiên bản autoincrement cũ.

Câu hỏi XE2 thực sự sử dụng ngày và giờ như tôi đã trình bày ở trên, bắt đầu từ ngày 1 tháng 1 năm 2010 và thêm ngày và giây vào số Bản dựng và phát hành?

+0

Câu trả lời bạn đang tìm kiếm có thể tìm thấy trong câu trả lời của TOndrej tại đây: http://stackoverflow.com/questions/8437300/how-can -i-automate-get-the-date-of-xây dựng-thành-một-hằng-hiển-thị-của-tôi-mã số –

+0

@Được hỏi câu hỏi chính là về cách tự mình làm điều đó. Câu hỏi của tôi là liệu Delphi XE2 hiện đang làm điều này cho chúng ta và chúng ta nên loại bỏ các đề xuất chính xác được đề cập trong câu hỏi mà bạn đã chỉ ra. Tôi tin rằng câu hỏi của tôi hơi khác một chút. –

+1

Tôi đoán tôi không hiểu lực đẩy chính của câu hỏi của bạn. Bạn có nghĩ rằng việc sao lưu nó ra khỏi tài nguyên phiên bản dễ dàng hơn không? Không thể thấy bất kỳ tài liệu nào cho biết cách Xây dựng và phát hành được thiết lập như thế nào?Bạn đã nhận ra điều này bằng cách quan sát có lẽ? Bạn có biết múi giờ nào được sử dụng không? UTC? Giờ địa phương? –

Trả lời

7

Mã hóa không thể là những gì bạn nghĩ. Bản phát hành và các con số được đóng gói thành một đơn 32 bit DWORD. Điều đó có nghĩa rằng chỉ có 16 bit có sẵn cho tất cả các giây trong một ngày. Có 86400 giây trong một ngày lớn hơn 2 .

Khá kỳ lạ khi triển khai Delphi xuất hiện để bao quanh khi nó đạt đến 2 giây, ~ 18,2 giờ. Vì vậy, tại thời điểm này, nó là 22:50 trong múi giờ của tôi (UTC), nhưng số phát hành được tạo tự động là 16753 hoặc khoảng 4,6 giờ. Thêm lại 18,2 giờ mất tích từ quấn quanh và bingo, đó là 22:50. Có vẻ như những người Visual Studio đã làm đúng, bởi vì họ lấy số giây sau 00:00 và chia cho 2. Nó cũng sẽ xuất hiện do đó các số phát hành tự động tạo ra Delphi sẽ không được tăng đều theo thời gian , sẽ không phải là duy nhất và vân vân.

Điều này có vẻ như tôi là một lỗi mà tôi đã gửi là QC#102343. Lưu ý rằng lỗi đã được giới thiệu trong bản cập nhật XE2 3. Nó không có trong các phiên bản trước. Cũng lưu ý rằng việc xử lý số bản phát hành đã thay đổi từ bản cập nhật 2 thành cập nhật 3.

+0

Nó phải là (số giây kể từ nửa đêm) div 2. Điều đó làm cho tối đa 43200, mà không phù hợp trong 16 bit. Nếu nó là gói, đó chắc chắn là một lỗi. –

+0

@Allen hmm, bản dùng thử nhanh của tôi trông giống như nó đang gói như bạn thấy. Tôi có cần phải gửi QC hay không hoặc bạn có thể mang nó từ đây không. –

+0

Tốt nhất bạn gửi nó ... sau đó bạn nhận được tín dụng và có thể theo dõi nó. –

Các vấn đề liên quan