ورود

View Full Version : اشکال زدایی در خطوط برنامه به چه طریقی؟



V60
پنج شنبه 19 بهمن 1385, 21:15 عصر
سلام
همانطور که می دونید وقتی از کامپوننت جدول یا کوری استفاده می کنیم ، می شه روش کلید راست کرد و گزینه fieldeditor را انتخاب کنیم و هر تعداد که می خواهیم از فیلدها را اضافه کنیم در اینصورت می شه هنگامی که میخواهیم مقدار دهی به یک فیلد بکنیم می تونیم از این کد استفاده کنیم


Adotable1lastname.asstring

ولی یک راه دیگه هم هست ، که باز هم خودتان می دانید و اون اینه که همینجوری بدون اضافه کردن به fieldeditor انجام دهیم.


adotable1.Fieldbyname('lastname').AsString;

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

mzjahromi
جمعه 20 بهمن 1385, 08:25 صبح
ببینید دوست عزیز
تا اونجائی که من تجربه دارم روش اول یک روش استاتیک و روش دوم داینامیک است .
یعنی اینکه در روش اول فیلدها به عنوان یک ثابت تعریف میشود ولی در روش دوم فیلدها در زمان اجرا مشخص میشوند و ماهیتا امکان شناسائی آنها در زمان طراحی برنامه وجود ندارد. چون هنوز تعداد, نام و مشخصات فیلدها تعیین نشده است

mjdeveloper
جمعه 20 بهمن 1385, 10:03 صبح
بهتر است به صورت
Variant
کار کنید
-----------------------------------
Tablename['Fieldname']:=
-----------------------------------
موفق باشید

V60
شنبه 21 بهمن 1385, 23:51 عصر
منظورتون از variant چیه؟

mjdeveloper
یک شنبه 22 بهمن 1385, 06:08 صبح
منظورتون از variant چیه؟

variant یک نوع داده است که هم می تواند integer,string,float, char ,... باشد
نیاز به تبدیل هم نداره
نیازی هم به add کردن فیلدها به FieldEditor هم نیست
به طور مثال

------Add
adotable.append;
adotable['fname']:='Ali';
adotable['id']:=20;
adotable.post;
----------------Read--------
var_id:=integer(adotable['id']);
var_fname:=string(adotable['fname']);

حتی کلمه integer , string که من قبل از پرانتز نوشتم هم لازم نیست
آزمایش کنید

vcldeveloper
یک شنبه 22 بهمن 1385, 08:33 صبح
بهتر است به صورت
Variant
کار کنید
کمکی به حل مشکل مطرح شده نمی کنه. اینجا همونطور که آقای ذولقدری اشاره کردند بحث تفاوت بین Early Binding و Late Binding هست.

V60
یک شنبه 22 بهمن 1385, 14:37 عصر
پس برای اشکال زدایی هیچ روشی وجود ندارد؟ متشکرم از توجه دوستان

vcldeveloper
دوشنبه 23 بهمن 1385, 07:08 صبح
خیر
------------------------