PDA

View Full Version : خطای زمان اجرا در دلفی



mnakhaei67
دوشنبه 02 آبان 1390, 10:11 صبح
سلام.خسته نباشید.کی میدونه خطای زیر کی رخ میده؟و چگونه میشه اونو رفع کرد؟منو زود راهنمایی کنید.ممنونم
project project1.exe raised exception class evarianttypecasterror with message 'could not convert variant of type (Null)into type (string)'

daneshmand1354
دوشنبه 02 آبان 1390, 11:29 صبح
if FieldByname('maxx').IsNull then begin


از دستور isnull استفاده کنید مانند نمونه تا در زمانی که متغیر مقدار null می گیره خطا ندهد

mnakhaei67
دوشنبه 02 آبان 1390, 11:38 صبح
میشه بیشتر توضیح بدین.کجا از این پیام استفاده کنم؟بعد از then چی بنویسم؟؟؟؟؟؟؟؟؟؟

BORHAN TEC
دوشنبه 02 آبان 1390, 11:48 صبح
میشه بیشتر توضیح بدین.کجا از این پیام استفاده کنم؟بعد از then چی بنویسم؟؟؟؟؟؟؟؟؟؟
لطفاً کد مربوط به قسمتی از برنامه که خطا در اونجا اتفاق میفته رو قرار بدین.

mnakhaei67
دوشنبه 02 آبان 1390, 12:03 عصر
لطفاً کد مربوط به قسمتی از برنامه که خطا در اونجا اتفاق میفته رو قرار بدین.

ممنون میشم راهنماییم کنین.من کد رو میذارم.این کد برروی یه کلید در فرم نوشته میشه:
procedure TForm1.btn1Click(Sender: TObject);
var
reco,o,dore,tdore,day,tday:Integer;
b,a,q:string;
d,c,f,w,i,e,m: Integer ;
x,result,r:integer;
label l1;
begin
o:=strtoint(Edit1.Text);
tdore:=strtoint(Edit2.Text);
tday:=StrToInt(Edit3.Text);
form1.adtbl1.Append;
form1.adtbl1.Edit;
form1.adtbl1.FieldValues['موجودی ابتدای روز']:=form1.edit4.text;

for dore := o to tdore do
begin
c:=ram();
for Day := 1 to tday do
begin
// adtbl1.Insert;
adtbl1.FieldByName('دوره').Value:=dore;
adtbl1.FieldByName('روز').Value:=day;
d:=ra();
form1.adtbl1.FieldValues['ارقام تصادفی تقاضا']:=inttostr(d);
request();
////// vahar etelati digeiii ke bekhayn vared konid
if day=tday then
begin
form1.adtbl1.FieldValues['ارقام تصادفی مهلت تحویل']:=inttostr(c);
mo();
end;
b:='';
b:=form1.adtbl1.FieldValues['تقاضا'];
a:='';
a:=form1.adtbl1.FieldValues['موجودی ابتدای روز'];
w:=0;
w:=strtoint(a);
f:=0;
f:=strtoint(b);
q:='';
q:=form1.adtbl1.FieldValues['مقدار کمبود'];
e:=0;
e:=strtoint(q);
form1.adtbl1.FieldValues['موجودی انتهای روز']:=inttostr((w-f)-e);
if f>w then dearth();
form1.adtbl1.Next;
if form1.adtbl1.FieldValues['روزهای مانده تا ورود سفارش']<>0 then
form1.adtbl1.FieldValues['موجودی ابتدای روز']:=form1.adtbl1.FieldValues['موجودی انتهای روز']
else if form1.adtbl1.FieldValues['روزهای مانده تا ورود سفارش']=0 then
begin
if form1.adtbl1.FieldValues['مقدار کمبود']=0 then
form1.adtbl1.FieldValues['موجودی ابتدای روز']:=form1.adtbl1.FieldValues['موجودی انتهای روز']
else
begin
form1.adtbl1.Next;
form1.adtbl1.FieldValues['موجودی ابتدای روز']:=form1.adtbl1.FieldValues['مقدار سفارش'];
end;
if f>w then dearth();
end;
if day=tday then
begin
i:=0;
i:=strtoint(form1.adtbl1.FieldValues['موجودی انتهای روز']);
m:=strtoint(form1.Edit4.Text);
e:=0;
e:=strtoint(form1.adtbl1.FieldValues['مقدار کمبود']);
form1.adtbl1.FieldValues['مقدار سفارش']:=inttostr((m-i)+e);
end;
// adtbl1.Post;
end;


end;

end;
end.

daneshmand1354
دوشنبه 02 آبان 1390, 13:10 عصر
اینطور بنویسید

if FieldByname('fact_no').IsNull then begin
Result:='';
end else begin
result:=FieldByname('fact_no').AsString;
end;

mnakhaei67
دوشنبه 02 آبان 1390, 16:26 عصر
اینطور بنویسید

if FieldByname('fact_no').IsNull then begin
Result:='';
end else begin
result:=FieldByname('fact_no').AsString;
end;


باسلام و تشکر.اما از همین کدی که شما هم نوشتید خطا میگیره.همون خطا که در پست اول بهش اشاره کردم