PDA

View Full Version : سوال: توضیح مقادیر زیر.



Mask
شنبه 06 اسفند 1390, 11:46 صبح
با عرض سلام
من با اصطلاحات زیر مشکل دارم(مقاله هم خوندم . اما زیاد سر در نیاوردم).اگه دوستان محبت کنند برای دلفی قبل از 2009 و بعد 2009 یه توضیحی بدهند ممنون میشم.
Pchar
Char
PWideChar
WideChar
AnsiString
PAnsiString
PWideString
WideString
PShortString
PUnicodeString
PString
LongWord
ممنون از راهنماییتون.

Ananas
یک شنبه 07 اسفند 1390, 02:01 صبح
سلام.
اونایی که با P شروع میشن که معلومه اشاره گر هستند .
Ansi هم 8 بیت برای هر کاراکتر استفاده میکنه ولی WideChar برای هر کاراکتر از 16 بیت استفاده میکنه.
Ansi ظرفیت کمتری داره و فقط حروف انگلیسیو ذخیره میکنه ولی با WideChar می تونید فارسیو عربیو ... خط های آسیایی رو ذخیره کنید.
وقتی تو یه نوشته به کاراکتر 0 می رسیم یعنی به آخر نوشته رسیدیم حالا تو AnsiChar این 0 اندازه 1 بایته ولی تو WideChar به اندازه دو بایت جا میگیره برای همین بعضی وقتا (وقتی متن به زبان انگلیسی باشه و فقط از 8 بیت اول استفاده کنه) اگه یه متغیر PWideChar رو به PAnsiChar نسبت بدیم فقط یک کاراکتر اول اون رو می خونه یعنی برای کاراکتر دوم به 0x00 میرسه در حالی که بر حسب WideChar همون کاراکتر دومی مثلا به شکل 0x0013 ذخیره شده بوده. پس برای تبدیل باید دونه دونه کاراکتر های 16 بیتی رو به کاراکتر های 8 بیتی تبدیل کنیم نه یکدفه کل متن رو پشت سر هم.
Char هم همون WideChar هست و string خود دلفی هم به شکل 16 بیتی یعنی WideChar کار میکنه.
UnicodeString هم همون string هست.
LongWord یه متغیر 32 بیتی هست که معادل دو تا Word کنار هم هست. (DWORD و یا Cardinal)
برای متن ها و نوشته ها در کل می تونی همشون رو یه سری بیت پشت سر هم ذخیره شده، فرض کنی که از یه جایی (اشاره گر) شروع میشن و به یک کاراکتر 0 (NULL) ختم میشن. حالا اگه به دستگاه بگی این Ansi هست، 1 بایت 1 بایت کاراکترها رو می خونه و اگه بگی این Wide هست 2 بایت 2 بایت کاراکترها رو می خونه.