Jump to content

Малко помощ с Lazarus


tdf81bg

Препоръчан пост

Здравейте, нещо не мога да се справя с 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
Сподели другаде

Защо не ползваш 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
Сподели другаде

Благодаря, получи се!. :) Колкото до 3.9 :) благодаря, че забеляза трябваше да е >= ама :) нищо то има още неща за изчистване :). Благодаря още веднъж за помоща.
Link to comment
Сподели другаде

  • 2 weeks later...

За жалост отново се нуждая от помощ :(

Незнам във форума дали има хора, които да разбират от Паскал и пишат или са писали в 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
Сподели другаде

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...