انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: برنامه نویسی با Lazarus (پست اول ویرایش شد ۹۳/۰۴/۲۳ )  (دفعات بازدید: 203780 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین محمدرضا ح.

  • High Hero Member
  • *
  • ارسال: 3117
  • جنسیت : پسر
  • Your Future is our Past!
پاسخ : برنامه نویسی با Lazarus
« پاسخ #180 : 29 خرداد 1392، 04:14 ب‌ظ »
عاقا من اومدم یه مثال ماشین حساب ساده رو با این جناب لازاروس محترم درست کنم، اما نمیدونم چطور باید نوع متغیر Edit ها رو تغییر بدم.

ممنون میشم راهنمایی کنید :).
منظورتون رو کامل متوجه نشدم ولی
برای تغییر مقدار داخل یک شی Edit باید خاصیت Text اون را مقدار دهی کنید. مثلا این یک نمونه :
Edit1.text:='Hello';
در صورتی که بخواهید مقداری به غیر یک رشته به آن اختصاص دهید باید حتما قبل از اینکار آن مقدار را به رشته ای تبدیل کنید. مثلا برای تغییر مقدار integer (عددی) به رشته از تابع Inttostr باید استفاده کنید. به این شکل :
Edit1.text:=Inttostr(123456);
برای تبدیل های مقادیر دیگه هم توابع خاص خودشون وجود داره.

یک نکته هم در آخر کار بگم : ماشین حساب به نظر برنامه خیلی ساده ای میاد ولی الگوریتم ها و پیچیدگی های خاص خودشو داره. البته اگه بخواهید ماشین حساب کاملی بنویسید.
امیدوارم تونسته باشم کمکت کنم. ;)
یا حق

الان برای تست، یک برنامه درست کردم که توی اون، یک متغیر از نوع Integer به نام number ساختم. یک Label و Edit هم دارم. کارش فقط اینه که ورودی بگیره، به توان ۲ برسونه و بزاره تو خروجی ;D.

این قطعه کدی هست که برای این کار نوشتم :

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

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

var
  Form1: TForm1;
  number : integer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=inttostr(number);
Label1.Caption:=Edit1.Text^2;
end;

end.

ولی بازم ارور میگیرم :(. ممنون میشم راهنمایی کنید :).
قاضی : تو السالوادور چه کار میکردی؟
چه‌گوارا : آفتاب میگرفتم
قاضی : پس چرا ساختمان دادگستری رو منفجر کردی؟
چه‌گوارا : جلوی آفتاب رو گرفته بود

آفلاین علی هردان

  • Full Member
  • *
  • ارسال: 243
  • جنسیت : پسر
پاسخ : برنامه نویسی با Lazarus
« پاسخ #181 : 29 خرداد 1392، 07:17 ب‌ظ »
الان برای تست، یک برنامه درست کردم که توی اون، یک متغیر از نوع Integer به نام number ساختم. یک Label و Edit هم دارم. کارش فقط اینه که ورودی بگیره، به توان ۲ برسونه و بزاره تو خروجی ;D.

این قطعه کدی هست که برای این کار نوشتم :

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

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

var
  Form1: TForm1;
  number : integer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=inttostr(number);
Label1.Caption:=Edit1.Text^2;
end;

end.

ولی بازم ارور میگیرم :(. ممنون میشم راهنمایی کنید :).
خب خیلی واضحه، گفته بودی لازاروس قبلا دوست پسرت بود  ;D
اشکال از این خطه:
Label1.Caption:=Edit1.Text^2;
آخرش ^2 رو قرار دادی، برای چی این کار رو کردی؟  :o کار این علامت ^ چی هست؟

آفلاین محمدرضا ح.

  • High Hero Member
  • *
  • ارسال: 3117
  • جنسیت : پسر
  • Your Future is our Past!
پاسخ : برنامه نویسی با Lazarus
« پاسخ #182 : 29 خرداد 1392، 07:19 ب‌ظ »
الان برای تست، یک برنامه درست کردم که توی اون، یک متغیر از نوع Integer به نام number ساختم. یک Label و Edit هم دارم. کارش فقط اینه که ورودی بگیره، به توان ۲ برسونه و بزاره تو خروجی ;D.

این قطعه کدی هست که برای این کار نوشتم :

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

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

var
  Form1: TForm1;
  number : integer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=inttostr(number);
Label1.Caption:=Edit1.Text^2;
end;

end.

ولی بازم ارور میگیرم :(. ممنون میشم راهنمایی کنید :).
خب خیلی واضحه، گفته بودی لازاروس قبلا دوست پسرت بود  ;D
اشکال از این خطه:
Label1.Caption:=Edit1.Text^2;
آخرش ^2 رو قرار دادی، برای چی این کار رو کردی؟  :o کار این علامت ^ چی هست؟

علامت ^ نماینده «فلان به توان فلان» هست. یعنی :

Folan^Folan
اما این پاسکال ....  :-X
قاضی : تو السالوادور چه کار میکردی؟
چه‌گوارا : آفتاب میگرفتم
قاضی : پس چرا ساختمان دادگستری رو منفجر کردی؟
چه‌گوارا : جلوی آفتاب رو گرفته بود

آفلاین علی هردان

  • Full Member
  • *
  • ارسال: 243
  • جنسیت : پسر
پاسخ : برنامه نویسی با Lazarus
« پاسخ #183 : 29 خرداد 1392، 08:17 ب‌ظ »
الان برای تست، یک برنامه درست کردم که توی اون، یک متغیر از نوع Integer به نام number ساختم. یک Label و Edit هم دارم. کارش فقط اینه که ورودی بگیره، به توان ۲ برسونه و بزاره تو خروجی ;D.

این قطعه کدی هست که برای این کار نوشتم :

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

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

var
  Form1: TForm1;
  number : integer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=inttostr(number);
Label1.Caption:=Edit1.Text^2;
end;

end.

ولی بازم ارور میگیرم :(. ممنون میشم راهنمایی کنید :).
خب خیلی واضحه، گفته بودی لازاروس قبلا دوست پسرت بود  ;D
اشکال از این خطه:
Label1.Caption:=Edit1.Text^2;
آخرش ^2 رو قرار دادی، برای چی این کار رو کردی؟  :o کار این علامت ^ چی هست؟

علامت ^ نماینده «فلان به توان فلان» هست. یعنی :

Folan^Folan
اما این پاسکال ....  :-X

من نمیدونم توی پاسکال فرمول توان چی هست. البته میشه براش یه فانکشن نوشت که فکر میکنم خودش یه دستوری برای این کار داشته باشه...
ولی یه اشتباه خیلی ضایع توی کدی که نوشتی هست  ;D ما به جای علامت ^ که برای رسوندن به توان هست، میخوایم توی این دستوری که جنابعالی دادید از علامت * برای ضرب کردن استفاده کنیم.
یعنی میشه این:
Edit1.Text:=inttostr(number);
Label1.Caption:=Edit1.Text*2;
حالا اگه این دستور رو بزنی با ارور مواجه میشی  :D چرا؟ خب خیلی تابلویه. تو اول integer رو به string تبدیل کردی، حالا میخوای string رو ضربدر ۲ بکنی. نمیتونی  ;)
باید عدد رو ضربدر ۲ بکنی و بعد تبدیلش کنی به string
یعنی میشه:
Edit1.Text:=inttostr(number*2);
Label1.Caption:=Edit1.Text;
« آخرین ویرایش: 29 خرداد 1392، 08:18 ب‌ظ توسط علی هردان (ojZim) »

آفلاین محمدرضا ح.

  • High Hero Member
  • *
  • ارسال: 3117
  • جنسیت : پسر
  • Your Future is our Past!
پاسخ : برنامه نویسی با Lazarus
« پاسخ #184 : 29 خرداد 1392، 08:34 ب‌ظ »
الان برای تست، یک برنامه درست کردم که توی اون، یک متغیر از نوع Integer به نام number ساختم. یک Label و Edit هم دارم. کارش فقط اینه که ورودی بگیره، به توان ۲ برسونه و بزاره تو خروجی ;D.

این قطعه کدی هست که برای این کار نوشتم :

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

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

var
  Form1: TForm1;
  number : integer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=inttostr(number);
Label1.Caption:=Edit1.Text^2;
end;

end.

ولی بازم ارور میگیرم :(. ممنون میشم راهنمایی کنید :).
خب خیلی واضحه، گفته بودی لازاروس قبلا دوست پسرت بود  ;D
اشکال از این خطه:
Label1.Caption:=Edit1.Text^2;
آخرش ^2 رو قرار دادی، برای چی این کار رو کردی؟  :o کار این علامت ^ چی هست؟

علامت ^ نماینده «فلان به توان فلان» هست. یعنی :

Folan^Folan
اما این پاسکال ....  :-X

من نمیدونم توی پاسکال فرمول توان چی هست. البته میشه براش یه فانکشن نوشت که فکر میکنم خودش یه دستوری برای این کار داشته باشه...
ولی یه اشتباه خیلی ضایع توی کدی که نوشتی هست  ;D ما به جای علامت ^ که برای رسوندن به توان هست، میخوایم توی این دستوری که جنابعالی دادید از علامت * برای ضرب کردن استفاده کنیم.
یعنی میشه این:
Edit1.Text:=inttostr(number);
Label1.Caption:=Edit1.Text*2;
حالا اگه این دستور رو بزنی با ارور مواجه میشی  :D چرا؟ خب خیلی تابلویه. تو اول integer رو به string تبدیل کردی، حالا میخوای string رو ضربدر ۲ بکنی. نمیتونی  ;)
باید عدد رو ضربدر ۲ بکنی و بعد تبدیلش کنی به string
یعنی میشه:
Edit1.Text:=inttostr(number*2);
Label1.Caption:=Edit1.Text;

این مدیریت بحرانت تو حلقم ;D . الان فقط صفر چاپ میکنه ;D (یه بار امتحانش کن خودت). دقیقا به همین دلیل دلفی هم توی وین دنبال نکردم :|
قاضی : تو السالوادور چه کار میکردی؟
چه‌گوارا : آفتاب میگرفتم
قاضی : پس چرا ساختمان دادگستری رو منفجر کردی؟
چه‌گوارا : جلوی آفتاب رو گرفته بود

آفلاین علی هردان

  • Full Member
  • *
  • ارسال: 243
  • جنسیت : پسر
پاسخ : برنامه نویسی با Lazarus
« پاسخ #185 : 29 خرداد 1392، 08:47 ب‌ظ »
الان برای تست، یک برنامه درست کردم که توی اون، یک متغیر از نوع Integer به نام number ساختم. یک Label و Edit هم دارم. کارش فقط اینه که ورودی بگیره، به توان ۲ برسونه و بزاره تو خروجی ;D.

این قطعه کدی هست که برای این کار نوشتم :

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

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

var
  Form1: TForm1;
  number : integer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=inttostr(number);
Label1.Caption:=Edit1.Text^2;
end;

end.

ولی بازم ارور میگیرم :(. ممنون میشم راهنمایی کنید :).
خب خیلی واضحه، گفته بودی لازاروس قبلا دوست پسرت بود  ;D
اشکال از این خطه:
Label1.Caption:=Edit1.Text^2;
آخرش ^2 رو قرار دادی، برای چی این کار رو کردی؟  :o کار این علامت ^ چی هست؟

علامت ^ نماینده «فلان به توان فلان» هست. یعنی :

Folan^Folan
اما این پاسکال ....  :-X

من نمیدونم توی پاسکال فرمول توان چی هست. البته میشه براش یه فانکشن نوشت که فکر میکنم خودش یه دستوری برای این کار داشته باشه...
ولی یه اشتباه خیلی ضایع توی کدی که نوشتی هست  ;D ما به جای علامت ^ که برای رسوندن به توان هست، میخوایم توی این دستوری که جنابعالی دادید از علامت * برای ضرب کردن استفاده کنیم.
یعنی میشه این:
Edit1.Text:=inttostr(number);
Label1.Caption:=Edit1.Text*2;
حالا اگه این دستور رو بزنی با ارور مواجه میشی  :D چرا؟ خب خیلی تابلویه. تو اول integer رو به string تبدیل کردی، حالا میخوای string رو ضربدر ۲ بکنی. نمیتونی  ;)
باید عدد رو ضربدر ۲ بکنی و بعد تبدیلش کنی به string
یعنی میشه:
Edit1.Text:=inttostr(number*2);
Label1.Caption:=Edit1.Text;

این مدیریت بحرانت تو حلقم ;D . الان فقط صفر چاپ میکنه ;D (یه بار امتحانش کن خودت). دقیقا به همین دلیل دلفی هم توی وین دنبال نکردم :|
پس میخوای چند چاپ کنه  ???
Edit1.Text:=inttostr(number*2);
این بنظرت مقدارش چقدر میشه؟  ;D
مقدار پیشفرض نامبر، 0 هست. وقتی 0 رو ضربدر 2 بکنی، چه جوابی بدست میاد؟ میخوای بزنه ۵؟  ;D
باید برای نامبر، یه عدد تعریف کنی. الان صفر هست.

آفلاین امیر شهریاری

  • Sr. Member
  • *
  • ارسال: 323
  • جنسیت : پسر
پاسخ : برنامه نویسی با Lazarus
« پاسخ #186 : 29 خرداد 1392، 09:01 ب‌ظ »
این مدیریت بحرانت تو حلقم ;D . الان فقط صفر چاپ میکنه ;D (یه بار امتحانش کن خودت). دقیقا به همین دلیل دلفی هم توی وین دنبال نکردم :|
سلام
عجله نکن محمد رضا  ;)
شما هنوز به دستورات پایه ای پاسکال مسلط نشدی برا همین همش دستوراتت خطا داره و برنامه ات درست جواب نمیده.
تو دلفی ، لازاروس و در کل در پاسکال شما باید متغیر های هم نوع را با هم مرتبط کنید و در غیر این صورت باید به هم تبدیل بشن. مثلا رشته ای به عددی یا برعکس. در زمینه استفاده از ضرب و جمع و تقسیم و تفریق هم حتما باید قبلا مقدارتون به عددی تبدیل شده باشه. یعنی شا نمی توانید Etid1.text را که مقداری رشته ای است جمع یا تفریق کنید.
در مورد برنامه کدی که نوشته بودید باید بگم شما باید آن را به این کد تغییر دهید.
number:= strtoint(edit1.text)*2;
Label1.Caption:=inttostr(number);

آفلاین محمدرضا ح.

  • High Hero Member
  • *
  • ارسال: 3117
  • جنسیت : پسر
  • Your Future is our Past!
پاسخ : برنامه نویسی با Lazarus
« پاسخ #187 : 29 خرداد 1392، 09:06 ب‌ظ »
این مدیریت بحرانت تو حلقم ;D . الان فقط صفر چاپ میکنه ;D (یه بار امتحانش کن خودت). دقیقا به همین دلیل دلفی هم توی وین دنبال نکردم :|
سلام
عجله نکن محمد رضا  ;)
شما هنوز به دستورات پایه ای پاسکال مسلط نشدی برا همین همش دستوراتت خطا داره و برنامه ات درست جواب نمیده.
تو دلفی ، لازاروس و در کل در پاسکال شما باید متغیر های هم نوع را با هم مرتبط کنید و در غیر این صورت باید به هم تبدیل بشن. مثلا رشته ای به عددی یا برعکس. در زمینه استفاده از ضرب و جمع و تقسیم و تفریق هم حتما باید قبلا مقدارتون به عددی تبدیل شده باشه. یعنی شا نمی توانید Etid1.text را که مقداری رشته ای است جمع یا تفریق کنید.
در مورد برنامه کدی که نوشته بودید باید بگم شما باید آن را به این کد تغییر دهید.
number:= strtoint(edit1.text)*2;
Label1.Caption:=inttostr(number);
ممنون آقای شهریاری. الان رفرنسی در مورد این متغیرها دارید که در اختیارمون بزارید؟ شدیدا محتاجم :|.
قاضی : تو السالوادور چه کار میکردی؟
چه‌گوارا : آفتاب میگرفتم
قاضی : پس چرا ساختمان دادگستری رو منفجر کردی؟
چه‌گوارا : جلوی آفتاب رو گرفته بود

آفلاین علی هردان

  • Full Member
  • *
  • ارسال: 243
  • جنسیت : پسر
پاسخ : برنامه نویسی با Lazarus
« پاسخ #188 : 29 خرداد 1392، 09:34 ب‌ظ »
این مدیریت بحرانت تو حلقم ;D . الان فقط صفر چاپ میکنه ;D (یه بار امتحانش کن خودت). دقیقا به همین دلیل دلفی هم توی وین دنبال نکردم :|
سلام
عجله نکن محمد رضا  ;)
شما هنوز به دستورات پایه ای پاسکال مسلط نشدی برا همین همش دستوراتت خطا داره و برنامه ات درست جواب نمیده.
تو دلفی ، لازاروس و در کل در پاسکال شما باید متغیر های هم نوع را با هم مرتبط کنید و در غیر این صورت باید به هم تبدیل بشن. مثلا رشته ای به عددی یا برعکس. در زمینه استفاده از ضرب و جمع و تقسیم و تفریق هم حتما باید قبلا مقدارتون به عددی تبدیل شده باشه. یعنی شا نمی توانید Etid1.text را که مقداری رشته ای است جمع یا تفریق کنید.
در مورد برنامه کدی که نوشته بودید باید بگم شما باید آن را به این کد تغییر دهید.
number:= strtoint(edit1.text)*2;
Label1.Caption:=inttostr(number);
ممنون آقای شهریاری. الان رفرنسی در مورد این متغیرها دارید که در اختیارمون بزارید؟ شدیدا محتاجم :|.
رفرنس نمیخواد! همین بود که جناب شهریاری عرض فرمودند. ;D

تو دلفی ، لازاروس و در کل در پاسکال شما باید متغیر های هم نوع را با هم مرتبط کنید و در غیر این صورت باید به هم تبدیل بشن. مثلا رشته ای به عددی یا برعکس. در زمینه استفاده از ضرب و جمع و تقسیم و تفریق هم حتما باید قبلا مقدارتون به عددی تبدیل شده باشه. یعنی شا نمی توانید Etid1.text را که مقداری رشته ای است جمع یا تفریق کنید.

جمع و تفریق و ضرب، باید با اعداد انجام بشن. نمیشه عدد ۵ رو از یک string کم کرد، برای اینکه این کار رو بکنی، باید اون string رو تبدیل به integer بکنی:
StrToInt(str);

آفلاین محمدرضا ح.

  • High Hero Member
  • *
  • ارسال: 3117
  • جنسیت : پسر
  • Your Future is our Past!
پاسخ : برنامه نویسی با Lazarus
« پاسخ #189 : 29 خرداد 1392، 09:39 ب‌ظ »
این مدیریت بحرانت تو حلقم ;D . الان فقط صفر چاپ میکنه ;D (یه بار امتحانش کن خودت). دقیقا به همین دلیل دلفی هم توی وین دنبال نکردم :|
سلام
عجله نکن محمد رضا  ;)
شما هنوز به دستورات پایه ای پاسکال مسلط نشدی برا همین همش دستوراتت خطا داره و برنامه ات درست جواب نمیده.
تو دلفی ، لازاروس و در کل در پاسکال شما باید متغیر های هم نوع را با هم مرتبط کنید و در غیر این صورت باید به هم تبدیل بشن. مثلا رشته ای به عددی یا برعکس. در زمینه استفاده از ضرب و جمع و تقسیم و تفریق هم حتما باید قبلا مقدارتون به عددی تبدیل شده باشه. یعنی شا نمی توانید Etid1.text را که مقداری رشته ای است جمع یا تفریق کنید.
در مورد برنامه کدی که نوشته بودید باید بگم شما باید آن را به این کد تغییر دهید.
number:= strtoint(edit1.text)*2;
Label1.Caption:=inttostr(number);
ممنون آقای شهریاری. الان رفرنسی در مورد این متغیرها دارید که در اختیارمون بزارید؟ شدیدا محتاجم :|.
رفرنس نمیخواد! همین بود که جناب شهریاری عرض فرمودند. ;D

تو دلفی ، لازاروس و در کل در پاسکال شما باید متغیر های هم نوع را با هم مرتبط کنید و در غیر این صورت باید به هم تبدیل بشن. مثلا رشته ای به عددی یا برعکس. در زمینه استفاده از ضرب و جمع و تقسیم و تفریق هم حتما باید قبلا مقدارتون به عددی تبدیل شده باشه. یعنی شا نمی توانید Etid1.text را که مقداری رشته ای است جمع یا تفریق کنید.

جمع و تفریق و ضرب، باید با اعداد انجام بشن. نمیشه عدد ۵ رو از یک string کم کرد، برای اینکه این کار رو بکنی، باید اون string رو تبدیل به integer بکنی:
StrToInt(str);

این که همون پست آقای شهریاری بود ;). منظور من سایر انواع متغیر بود مثل Float, Double و ...!
قاضی : تو السالوادور چه کار میکردی؟
چه‌گوارا : آفتاب میگرفتم
قاضی : پس چرا ساختمان دادگستری رو منفجر کردی؟
چه‌گوارا : جلوی آفتاب رو گرفته بود

آفلاین امیر شهریاری

  • Sr. Member
  • *
  • ارسال: 323
  • جنسیت : پسر
پاسخ : برنامه نویسی با Lazarus
« پاسخ #190 : 30 خرداد 1392، 12:29 ق‌ظ »
تو پست های قبلی لینک این کتاب رو گذاشته بودم :
http://ubuntuone.com/67MUEH9ASIr9ecHoQQZfR8
این مطالب توسط متاز عبدل عظیم از سودان نوشته شده و عنوانش شروع برنامه نویسی با پاسکال شی گرا است. کتاب خوبیه و برای شروع خیلی کمک می کنه. شاید اگه فرصتی پیدا کنم بتونم ترجمه اون رو به فارسی برگردونم.
موفق باشید.  :)

آفلاین MohsenB

  • Newbie
  • *
  • ارسال: 4
  • جنسیت : پسر
پاسخ : برنامه نویسی با Lazarus
« پاسخ #191 : 30 خرداد 1392، 10:19 ب‌ظ »
سلام

با تشکر از پاسخ کاملتون

یه چندتا سوال اساسی داشتم که خیلی ذهنم رو مشغول کرده :

1. از کجا بفهمیم یه کامپوننت در چه سیستم عاملهایی قابل نصب و استفاده هست ؟؟

2. این کامپوننت های RTTI چه فرقی با کامپوننت های استاندارد دارن ؟

3. اون برگه آخر Object Inspector که اسمش Restricted هست کارش دقیقا چیه ؟ مخصوصا اون لوگو های بالاش که یسری اعداد هم دارن ؟

4. برای اینکه بتونم برا اندروید هم بعدا کامپایل بگیرم کار خاصی لازم نداره یا نکته مهمی رو نباید رعایت کنم؟ و در کل اگر بخوام برنامه ای که مینویسم رو بتونم با حداقل تغییرات تو سیستم عاملهای مختلف ( مخصوصا : ویندوز ، مک ، لینوکس و اندروید ) کامپایل بگیرم چه چیزایی رو باید رعایت کنم و از چه ابزارهایی استفاده کنم و از کدوما استفاده نکنم ؟

5. به نظر شما از چه دیتابیسی استفاده کنم که نیاز به نصب روی کامپیوتر کاربر نهایی رو نداشته باشه و کاملا کراس پلتفرم باشه . ترجیها هم از دستورات اس کیو ال پشتیبانی کنه ؟؟؟؟


پیش پیش از  پاسخون صمیمانه تشکر میکنم

 :?:

آفلاین امیر شهریاری

  • Sr. Member
  • *
  • ارسال: 323
  • جنسیت : پسر
پاسخ : برنامه نویسی با Lazarus
« پاسخ #192 : 31 خرداد 1392، 12:03 ق‌ظ »
سلام

با تشکر از پاسخ کاملتون

یه چندتا سوال اساسی داشتم که خیلی ذهنم رو مشغول کرده :

1. از کجا بفهمیم یه کامپوننت در چه سیستم عاملهایی قابل نصب و استفاده هست ؟؟

2. این کامپوننت های RTTI چه فرقی با کامپوننت های استاندارد دارن ؟

3. اون برگه آخر Object Inspector که اسمش Restricted هست کارش دقیقا چیه ؟ مخصوصا اون لوگو های بالاش که یسری اعداد هم دارن ؟

4. برای اینکه بتونم برا اندروید هم بعدا کامپایل بگیرم کار خاصی لازم نداره یا نکته مهمی رو نباید رعایت کنم؟ و در کل اگر بخوام برنامه ای که مینویسم رو بتونم با حداقل تغییرات تو سیستم عاملهای مختلف ( مخصوصا : ویندوز ، مک ، لینوکس و اندروید ) کامپایل بگیرم چه چیزایی رو باید رعایت کنم و از چه ابزارهایی استفاده کنم و از کدوما استفاده نکنم ؟

5. به نظر شما از چه دیتابیسی استفاده کنم که نیاز به نصب روی کامپیوتر کاربر نهایی رو نداشته باشه و کاملا کراس پلتفرم باشه . ترجیها هم از دستورات اس کیو ال پشتیبانی کنه ؟؟؟؟


پیش پیش از  پاسخون صمیمانه تشکر میکنم

 :?:
سلام
بعضی از سوالاتتون خیلی مشکل بودن و تا به حال بهشون فکر نکرده بودم برا همین ممکنه جواب کاملی براشون نداشته باشم اگه کسی از دوستان اطلاعات بیشتری داشت جواب های منو اصلاح کنه.

1- سوال اولتون از پایه اشتباه است. کامپوننت تو سیستم عامل نصب نمیشه بلکه تو IDE یا همون محیط مجتمع توسعه (مثل دلفی یا لازاروس) نصب میشه و ربطی به سیستم عامل نداره. البته چندان بی ربط هم نیستن  :P .کامپوننت ها در حقیقت کدها و قسمت های ویژالی هستن که به خاطر استفاده زیاد به این شکل در میان تا راحت تر و سریع تر استفاده بشن. یعضی از کامپوننت ها به واسطه کدهایی که دارن یا قابلیت هایی که در قسمت ویژال خود دارند ممکنه مختص یک سیستم عامل باشن و تو بقیه اونها به درستی کار نکنند. کامپوننت هایی که در کتابخانه LCL لازاروس وجود دارند از نوع مستقل از سکو هستن و مشکلی با سیستم عامل ندارند.(هرچند مواردی دیدم که کامپوننت نمیتونه از همه قابلیت هاش در بعضی از سیستم عامل ها استفاده بکنه). بقیه کامپوننت ها هم معمولا خودشون در سایت سازنده مشخص می کنند که مستقل از سکو هستن یا مختص یک سیستم عامل خاص.

2- این مورد رو تا به حال بهش فکر نکرده بودم و زیاد برخوردی نداشتم. با این حال توضیح ویکی لازاروس در مورد این کامپوننت ها ممکنه کمی کمکتون کنه : http://wiki.lazarus.freepascal.org/RTTI_controls

3-این یکی رو هم دیده بودم ولی کاری به کارش نداشتم. فکر می کنم این برگه محدودیت های اون شی انتخاب شده را برای سیستم عامل های مختلف و به طور کلی بیان میکنه ولی بازم مطمئن نیستم.  ???

4- آندروید قضیش با بقیه سیستم عامل ها خیلی فرق میکنه و نمیشه برنامه رو برای همه و اون با هم طراحی کرد. آندروید محدودیت ها و قابلیت های خودشو داره و با سیستم عامل های دسکتاپ خیلی متفاوته. برای اینکه بتونید برنامه ای که نوشتین تو بقیه سیستم عامل ها با کمترین تغییرات اجرا کنید بهتره تا حد امکان از کامپوننت هایی استفاده کنید که تو همه سیستم عامل ها قابلیت کار داشته باشن. نکته مهم اینجاست که همیشه وقتی یک برنامه برای چند سیستم عامل طراحی میشه دلیل بر این نیست که اونو تو محیطی شبیه به لازاروس که مستقل از سکو هست ساختن و برای اونها تولید کردن. بعضی شرکت های بزرگ محصولاتشون رو برای سیستم عامل های مختلف با الگوریتم و محیط یکسان طراحی می کنند. یعنی هسته برنامه یکی است ولی امکانات و پوسته اون از روش های مختلف تو سیستم عامل های مختلف بدست میاد. به همین دلیل است که برخی برنامه ها نسخه یک سیستم عاملشون خیلی خوب و بی نقص کار میکنه ولی همون تو یک سیستم عامل دیگه مواقعی دچار خطا میشه.

5- من برای این مورد SQLite رو پیشنهاد می کنم. تو استفاده از اون در ویندوز و لینوکس خیلی راحت بودم و برنامه ام با کد مشترک تو هر دو سیستم عامل با این دیتابیس کار میکنه. از دستورات SQL هم پشتیبانی می کنه و نیازی به نصب نداره و مستقل از سکو هستش. البته محدودیت های خودشو داره ولی در مجموع گزینه خیلی مناسبیه.
Firebrid هم شنیدم گزینه خیلی خوبی هستش  که همین قابلیت ها رو داره ولی هنوز تجربش نکردم.
موفق باشید.  ;)

آفلاین MohsenB

  • Newbie
  • *
  • ارسال: 4
  • جنسیت : پسر
پاسخ : برنامه نویسی با Lazarus
« پاسخ #193 : 31 خرداد 1392، 12:39 ق‌ظ »
نقل‌قول
سلام
بعضی از سوالاتتون خیلی مشکل بودن و تا به حال بهشون فکر نکرده بودم برا همین ممکنه جواب کاملی براشون نداشته باشم اگه کسی از دوستان اطلاعات بیشتری داشت جواب های منو اصلاح کنه.

1- سوال اولتون از پایه اشتباه است. کامپوننت تو سیستم عامل نصب نمیشه بلکه تو IDE یا همون محیط مجتمع توسعه (مثل دلفی یا لازاروس) نصب میشه و ربطی به سیستم عامل نداره. البته چندان بی ربط هم نیستن  :P .کامپوننت ها در حقیقت کدها و قسمت های ویژالی هستن که به خاطر استفاده زیاد به این شکل در میان تا راحت تر و سریع تر استفاده بشن. یعضی از کامپوننت ها به واسطه کدهایی که دارن یا قابلیت هایی که در قسمت ویژال خود دارند ممکنه مختص یک سیستم عامل باشن و تو بقیه اونها به درستی کار نکنند. کامپوننت هایی که در کتابخانه LCL لازاروس وجود دارند از نوع مستقل از سکو هستن و مشکلی با سیستم عامل ندارند.(هرچند مواردی دیدم که کامپوننت نمیتونه از همه قابلیت هاش در بعضی از سیستم عامل ها استفاده بکنه). بقیه کامپوننت ها هم معمولا خودشون در سایت سازنده مشخص می کنند که مستقل از سکو هستن یا مختص یک سیستم عامل خاص.
...

سلام

ممنون از پاسختون ، همینقدر که هر چی میدونستید گفتید خیلی عالیه . سوال اولم اشتباه نیست ، اشتباه برداشت کردین ، شایدم من بد پرسیدم . منظورم این بود که فرض کنید الان شما توی ویندوز یک کامپوننت رو نصب می کنید ، حالا از کجا میشه فهمید این کامپوننت نصب شده توی چه سیستم عاملهای دیگه ای هم قابلیت نصب روی لازاروس رو داره . من دلفی کارم خیلی وقت نیست دارم با این لازاروس ور میرم و تنها سوالاتی که برام پیش اومده همینا بود وگرنه خیلی از مواردش شبیه دلفیه .

بازم ممنون

آفلاین امیر شهریاری

  • Sr. Member
  • *
  • ارسال: 323
  • جنسیت : پسر
پاسخ : برنامه نویسی با Lazarus
« پاسخ #194 : 02 تیر 1392، 08:00 ق‌ظ »
سلام
صفحه اصلی جدید سایت لازاروس بارگذاری شده  \\:D/  \\:D/  \\:D/
برای مشاهده به آدرس زیر بروید.
http://www.lazarus.freepascal.org