2012-03-08 72 views
12

Chỉ cần cho sự tò mò,Làm thế nào để xác định Rỗng Char trong Delphi

Tại sao trong Delphi, nếu chúng ta định nghĩa một char rỗng bởi:

a:Char; 
a:=''; 

chúng tôi nhận được một lỗi: loại không tương thích: 'Char' và 'string'

Tuy nhiên, nếu chúng ta đặt

a:='a'; 

nó sẽ ổn chứ?

Có cần phải xác định một thẻ trống rỗng bằng cách: a:=#0?

+1

Trong thế giới .net, bạn có thể có một "trống" Char vì chúng có các loại Nullable (thông qua hệ thống generics của chúng). Và trong thế giới cơ sở dữ liệu, các trường cơ sở dữ liệu có thể là Nullable, nhưng tất cả các loại 'Ordinal' Delphi, bao gồm' Integer', 'Char',' Byte' và phần còn lại, trong khi chúng có thể có một số giá trị (flag) hoặc zero (# 0) cho Char, chẳng hạn, không thể là "trống" hoặc "rỗng". Vì các chuỗi và các mảng không phải là các kiểu Ordinal nên các quy tắc khác nhau. Một chuỗi giống như một "mảng ký tự động". –

+1

Bạn đang bối rối về '''' biểu thức liên tục. Nó thuộc loại 'string' và không tương thích với kiểu' char'. Ngược lại ''a'' tương thích. Vì vậy, bạn ** có ** để ** xác định ** "trống char" quy ước. – OnTheFly

Trả lời

22

Một char là ký tự đơn (nghĩa là, chính xác một). Vì vậy, 'a', '∫', và '⌬' đều ổn, nhưng không phải 'ab' (chuỗi hai ký tự), 'Hello World!' (chuỗi mười hai ký tự) hoặc '' (chuỗi ký tự bằng 0 ký tự).

Tuy nhiên, ký tự NULL (# 0) là ký tự giống như bất kỳ ký tự nào khác.

Ngoài ra, kiểu dữ liệu ký tự được thực hiện như một từ (trong các phiên bản hiện đại của Delphi), tức là hai byte. Nếu tất cả các giá trị 0, 1, ..., 2^16 - 1 này được sử dụng cho các ký tự thực, thì bạn sẽ đại diện cho 'char rỗng' của mình thế nào?

+2

+1 cho '' (không có ký tự). Nó đã thuyết phục tôi !! – Zeina

+3

@Zeina đừng quên chấp nhận câu trả lời ... – ComputerSaysNo

+0

ur phải với cụm từ được chỉnh sửa lần cuối, tôi có nghĩa là rỗng char một ký tự rỗng, nhưng tôi nghĩ rằng khi tôi đặt một: = '', trình biên dịch sẽ lấy nó như # 0 theo mặc định và không ngờ lỗi như vậy, vì vậy tôi muốn biết tại sao lại như vậy. Cảm ơn trước! – Zeina

17

Không có thứ gì như trống char. A char phải có giá trị. Nó là một loại thứ tự, một loại giá trị đơn giản. Cũng giống như một số nguyên, nói rằng, luôn luôn có một giá trị, do đó, hiện một char.

Giá trị #0 không phải là trống char, đó là ký tự có giá trị 0, thường được gọi là NUL.

+2

Trong Pascal có kiểu 'thứ tự'. – OnTheFly

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