tdf81bg Публикувано Февруари 21, 2012 Report Share Публикувано Февруари 21, 2012 Здравейте, нещо не мога да се справя с if и съм тотално блокирал, да не говорим че отдавна не съм писал на Паскал (има няма над 12-тина години), но ми се наложи да направя една програма за изчисление и зациклих тук, ако може някой да помогне: modul:=5-(preminali_6+preminali_5+preminali_4+preminali_3+preminali_2)/100; modul_edit.Text:=FloatToStrf(modul,ffFixed,5,2); if (modul<2) or (modul>3.9) then begin vid:='Грешка'; vid_edit.Text:=vid; end; if (modul=2) or (modul=2.1) or (modul=2.2) or (modul=2.3) or (modul=2.4) or (modul=2.5) or (modul=2.5) then begin vid:='Ситен'; vid_edit.Text:=vid; end; if (modul=2.6) or (modul=2.7) or (modul=2.8) or (modul=2.9) or (modul=3.0) or (modul=3.1) or (modul=3.2) then begin vid:='Среден'; vid_edit.Text:=vid; end; if (modul=3.3) or (modul=3.4) or (modul=3.5) or (modul=3.6) or (modul=3.7) or (modul=3.8) then begin vid:='Едър'; vid_edit.Text:=vid; end; end; Лошото е че, не получавам грешка и проекта се компилира.След изчисленията обаче действа само зададеното на първият if т.е. извеждането в полето текста "Грешка". В смисъл извежда се текста, само ако крайният резултат т.е. "modul" е по-малък от 2 и по-голям от 3.9 - което е зададено в първият if. При друг резултат извън диапазона на дефинирата от мен "Грешка" не се извежда нищо. Т.е. дори и да е в диапазона на "Ситен", "Среден" и "Едър" не се извежда нищо, полето е празно. Нещо някъде бъркам, но не мога да схвана къде. Цитирай Link to comment Сподели другаде More sharing options...
VIS Публикувано Февруари 22, 2012 Report Share Публикувано Февруари 22, 2012 Защо не ползваш else if, вместо да отваряш и затваряш постоянно If-ове. if ((Value<2) or (Value>3.9)) then writeln('Greshka') else if((Value>=2) and (Value<=2.5)) then writeln('Siten') else if((Value>=2.6) and (Value<=3.2)) then writeln('Sreden') else if((Value>=3.3) and (Value<=3.8)) then writeln('Edyr'); Всичко предполагам е точно като твоята логика в този случай. При по-малко от 2 или по-голямо от 3.9(т.е. 4 и нагоре) дава грешка. При останалите интервали дава съответно съобщение. Не зная дали нарочно или просто такава е логиката на твоето приложение, но при стойност 3.9 няма условие за него. Т.е. не е предвидено за него отговор.Успех, дано съм помогнал. Цитирай Link to comment Сподели другаде More sharing options...
tdf81bg Публикувано Февруари 22, 2012 Author Report Share Публикувано Февруари 22, 2012 Благодаря, получи се!. Колкото до 3.9 благодаря, че забеляза трябваше да е >= ама нищо то има още неща за изчистване . Благодаря още веднъж за помоща. Цитирай Link to comment Сподели другаде More sharing options...
tdf81bg Публикувано Март 7, 2012 Author Report Share Публикувано Март 7, 2012 За жалост отново се нуждая от помощ :(Незнам във форума дали има хора, които да разбират от Паскал и пишат или са писали в Lazarus. Ако на някой знае и му се занимава да погледне кода по-долу. Аз ще продължавам да търся решение. Та става въпрос за следното: http://store.picbg.net/pubpic/30/29/67a9700589753029.jpg ще сложа целият код за да е по-ясно: unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Dialogs, FileUtil, Forms, Controls, Graphics, StdCtrls, Buttons; type { TForm1 } TForm1 = class(TForm) b_quit: TBitBtn; b_clear: TBitBtn; b_appendfile: TBitBtn; b_erasefile: TBitBtn; b_openfile: TBitBtn; b_createfile: TBitBtn; filename_edit: TEdit; Label1: TLabel; info_edit: TMemo; procedure b_appendfileClick(Sender: TObject); procedure b_clearClick(Sender: TObject); procedure b_createfileClick(Sender: TObject); procedure b_erasefileClick(Sender: TObject); procedure b_openfileClick(Sender: TObject); procedure b_quitClick(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } var tfile:TextFile; filename,info:string; error: integer; procedure TForm1.b_createfileClick(Sender: TObject); begin filename:=filename_edit.Text; info:=info_edit.Text; assignfile(tfile,filename); {$I-} rewrite(tfile); {$I+} error := IOResult; if error <> 0 then begin showmessage('Грешка!'); end else system.writeln(tfile,info); system.close(tfile); showmessage('Файлът ' + filename + ' е създаден!'); end; procedure TForm1.b_erasefileClick(Sender: TObject); begin filename:=filename_edit.Text; assignfile(tfile,filename); {$I-} erase(tfile); {$I+} error := IOResult; if error <> 0 then begin showMessage('Файлът ' + filename + ' не съществува!'); end else ShowMessage('Файлът ' + filename + ' е изтрит!'); end; procedure TForm1.b_appendfileClick(Sender: TObject); begin filename:=filename_edit.Text; info:=info_edit.Text; assignfile(tfile,filename); append(tfile); system.writeln(tfile,info); system.close(tfile); ShowMessage('Данните в ' + filename + ' са добавени успешно'); end; procedure TForm1.b_clearClick(Sender: TObject); begin filename_edit.Text:=''; info_edit.Text:=''; end; procedure TForm1.b_openfileClick(Sender: TObject); var readfile:string; begin filename:=filename_edit.Text; assignfile(tfile,filename); {$I-} reset(tfile); {$I+} error := IOResult; if error <> 0 then begin showMessage('Файлът ' + filename + ' не съществува или не може да бъде отворен!'); end else // как да покажа съдържанието на файла в info_edit:TMemo system.close(tfile); end; procedure TForm1.b_quitClick(Sender: TObject); begin close; end; end. Нуждая се от помощ за извеждането на текста от файла в info_edit:TMemo - в което въвеждам и самият текст.Създаването на файла, Добавянето на редове в него, Изтриването на файла, изчистването на полетата и бутона за изход от програмата си работят. ПС: Целта не ми е създаването на продобна програмка, а да си използвам тези неща в друга в която имам нужда, но за да ми е по-прегледно е съм я почнал отделно.Благодаря предварително, на отзовалите се.Поздрави! Цитирай Link to comment Сподели другаде More sharing options...
Препоръчан пост
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.