PDA

View Full Version : اشکال در کدنویسی



mehdi_moosavi
چهارشنبه 15 تیر 1384, 16:31 عصر
سلام
من یک Unit به برنامه Add کردم و کد زیر رو توی اون نوشتم

unit Func;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Unit1, Unit2;

implementation

procedure X2;
begin
with TADOTable.Create(self) do begin
name:='T1'
end;
end;
end.

ولی Error داد !

[Error] Func.pas(11): Undeclared identifier: 'self'
[Fatal Error] Unit1.pas(27): Could not compile used unit 'Func.pas'
در حالی که همین کد در یونیت فرمهای دیگه کار میکنه لطفا راهنمایی کنید
با تشکر

m-khorsandi
چهارشنبه 15 تیر 1384, 17:33 عصر
درود

مشخصه که شما Self رو تعریف نکردید.

****
زمانی که ما از کلمه کلیدی Self به عنوان پارامتر در متد Create استفاده میکنیم در اصل
کلاس جاری رو به عنوان مالک (Owner) آبجکت معرفی میکنیم که در این صورت وظیفه مدیریت
حافظه Object ساخته شده بر عهده مالک Object میباشد.

mehdi_moosavi
چهارشنبه 15 تیر 1384, 21:20 عصر
خیلی متشکر
خواهش می کنم بیشتر توضیح بدید
باید دقیقا چطور بنویسم؟
اگه یک قطعه کد مثال بنویسید خیلی ممنون میشم

brians2000
چهارشنبه 15 تیر 1384, 22:15 عصر
unit Func;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Unit1, Unit2;

implementation

procedure X2;
begin
with TADOTable.Create(self) do begin
name:='T1'
end;
end;
end.


غزیز دل برادر... دیس یا سلف یعنی خودم و خودم کیه؟ یه کلاس و یا آبجکته! :)) شما یه پروسیجر سینگل نوشتی می تونی بگی تو کدوم کلاس تعریفش کردی؟ جای اون سلف یه نیل بگذار!!! یادمه اولین بار که سی کار می کردم حالشو نداشتم برم سرکلاس (شاید 12 سالم بود! ) بعد یه پروژه خواستند ورداشتم یه ریترنت بالاش نوشتم و بعد گفتم اینهم سی++!!!!!!!!!!!!!!!!!!!!!!!!!! :)) خوب... چند ماه بود کامپیوتر کار می کردم توقعی نبود !!! سال بعد که 13 سالم شده بود و دیگه از سی ++ سر در میاوردم به خودم می خندیدم! یکی از مشکلاتی که خود من دارم چیزی که بی فایده است رو بهش فکر نمی کنم : مثلا توی یه امتحان همون موقعا خواسته بود یک کد تبدیل باینری به دسیمال رو بنویسم .... خوب ساده است ولی به نظر من کد احمقانه ای می رسید و ننوشتم! لجبازی! البته خوب... توی سن 12 13 سالگی لجبازی آدم زیاد میشه! ! ":))

mehdi_moosavi
پنج شنبه 16 تیر 1384, 10:23 صبح
دوست عزیز اگه بجای تعریف کردن خاطره به سوال جواب بدید خیلی بیشتر به درد میخوره

brians2000
پنج شنبه 16 تیر 1384, 14:12 عصر
غزیز دل برادر... دیس یا سلف یعنی خودم و خودم کیه؟ یه کلاس و یا آبجکته! ) شما یه پروسیجر سینگل نوشتی می تونی بگی تو کدوم کلاس تعریفش کردی؟ جای اون سلف یه نیل بگذار!!!

جواب شما این دو خط بود! :)) توی تمامی زبانهای برنامه نویسی دیس و سلف معنی خودم که یه آبجکت باشه رو می دهند!‌