PDA

View Full Version : آموزش: ویژگی های جدید زبان دلفی



developing
دوشنبه 18 شهریور 1392, 10:27 صبح
با سلام

دیدم در تالارهای مختلف یه همچین پست هایی وجود داره گفتم چرا توی تالار دلفی این کار رو نکنیم:ناراحت:

من ویژگی های جدید دلفی رو (البته نسبت به دلفی 7 چون کاربرای زیادی داره) می نویسم شما هم کمک کنید تا کامل بشه.
البته برای راحتی کار هر پستی که یک ویژگی جدید را بنویسد در این پست لیست خواهد شد.

معین کلاس و رکورد (Class and Record Helper): از XE2 به بعد
در مورد این ویژگی می تونید در اینجا (http://barnamenevis.org/showthread.php?351076)و اینجا (http://barnamenevis.org/showthread.php?227514-Class-Helper-%D8%AF%D8%B1-%D8%AF%D9%84%D9%81%DB%8C&highlight=helper)بحث هایی رو ملاحظه کنید.

معین داده یا نوع (Type Helper): از XE3 به بعد
در این (http://barnamenevis.org/showthread.php?418465-%D9%88%DB%8C%DA%98%DA%AF%DB%8C-%D9%87%D8%A7%DB%8C-%D8%AC%D8%AF%DB%8C%D8%AF-%D8%B2%D8%A8%D8%A7%D9%86-%D8%AF%D9%84%D9%81%DB%8C&p=1871351&viewfull=1#post1871351) پست.

developing
دوشنبه 18 شهریور 1392, 10:31 صبح
شاید برای شما هم پیش آمده باشد که دوست داشته باشید داده های اولیه ی دلفی (مثل integer, string, ...) را توسعه دهید. برای این کار می توانید از این ویژگی استفاده کنید. مثلا کاری کنیم که اعداد به رشته تبدیل شوند (مثل زبان C#‎‎) و ...

در زیر یک مثال از نحوه ی نوشتن واستفاده از این ویژگی آورده می شود:

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

TIntHelper = record helper for integer
function ToString: string;
end;

TstrHelper = record helper for string
function GetLength: Cardinal;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Temp: Cardinal;
begin
ShowMessage(integer(123).ToString);
ShowMessage(Button1.Width.ToString);

Temp := string(Edit1.Text).GetLength;
Temp := 'A Sample Text'.GetLength;
end;


{ TIntHelper }

function TIntHelper.ToString: string;
begin
Result := IntToStr(Self);
end;

{ TstrHelper }

function TstrHelper.GetLength: Cardinal;
begin
Result := Length(Self);
end;
end.


توجه: در زمان استفاه از این ویژگی ها باید نوع همخوانی داشته باشد و در صورت ناهمخوانی (مانند خط 39 و خط 42) می توانید آنها را قالب ریزی (Type Casting) کنید.