PDA

View Full Version : کپی آرایه در pansichar



JalaliMehr
سه شنبه 18 آبان 1389, 12:22 عصر
سلام.
یک Array[0..2500] of char داریم .چطور می تونیم متغیر را در یک متغیر از نوع pansichar کپی کنم.

vcldeveloper
سه شنبه 18 آبان 1389, 23:32 عصر
یک Array[0..2500] of char داریم .چطور می تونیم متغیر را در یک متغیر از نوع pansichar کپی کنم.
توی چه نسخه ایی از دلفی؟ اگر دلفی 2010 هست، char یعنی WideChar، پس ست کردن یک PAnsiChar روی آن اشتباه هست. اگر میخواید حتما ANSI باشه، باید از AnsiChar به جای Char استفاده کنید.

PAnsiChar یک اشاره گر به AnsiChar هست، شما محتوای آرایه را به هر جا کپی کنید، و مقدار PAnsiChar مربوطه رو بر روی آدرس اولین خانه آرایه ست کنید، کارتان راه میافته. برای این کار، باید به اندازه آرایه مورد نظرتون روی Heap فضا اختصاص بدید (مثلا با استفاده از GetMem). محتوای آرایه را به اون آدرس کپی کنید (مثلا با استفاده از CopyMemory)، و در پایان هم باید حافظه اختصاص داده شده را آزاد کنید.

البته اگر به جای اون آرایه از string یا AnsiString استفاده کنید، برای کپی به یک فضای دیگه و استفاده از PAnsiChar، دلفی بهتون روتین های اختصاصی کار با string و PChar ارائه میکنه.