Delphi i błąd w programie do sprawdzania czy z podanych dł. da się zrobić trójkąt

1

Trochę utknęłam i nie bardzo mi przychodzi do głowy, co wklepałam nie tak, że wyskakuje błąd? Program po naciśnięciu na przycisk ma sprawdzić, czy podane wartości w editach są odpowiednie do utworzenia trójkąta.

procedure TForm1.Button1Click(Sender: TObject);

 var
    a, b, c: integer;
    triangle: boolean;
begin
a:=strtoint(edit1.Text);
b:=strtoint(edit2.Text);
c:=strtoint(edit3.Text);
 triangle:=False;
    if a+b > c then
        if a+c>b then
           if b+c>a then triangle:=True;
    if triangle then
     label1.Caption:='Triangle can be built '   (i tutaj: could not compile used unit '..\..\..\..\Users\Name\Desktop\del\Unit1.pas')
    else
        label1.Caption:='Triangle cannot be built ';

end;

end.
0
var
  a, b, c : integer;
begin
  a := StrToIntDef(Edit1.Text, 0);
  b := StrToIntDef(Edit2.Text, 0);
  c := StrToIntDef(Edit3.Text, 0);

  if (a + b > c) and (a + c > a) and (b + c > a) then
    Label1.Caption := 'Trójkąt OK'
    else
      Label1.Caption := 'Trójkąt BE';

Twój kod nie powinien "wywalać" błędu:

var
  a, b, c : integer;
  triangle: boolean;
begin
  a := StrToInt(Edit1.Text);
  b := StrToInt(Edit2.Text);
  c := StrToInt(Edit3.Text);

  triangle := False;

  if a + b > c then
    if a + c > b then
      if b + c > a then triangle:=True;

  if triangle then
    Label1.Caption:='Triangle can be built '
    else
        label1.Caption:='Triangle cannot be built ';

Kompilator każdego języka ma w zwyczaju wypisywać mniej więcej powód tego co jest źle... poszukaj dobrze za tymi komunikatami...

Ale strzelam widząc ścieżkę do unitu: on próbuje kompilować nie ten unit który edytujesz. O ile dobrze jeszcze pamiętam w starszych wersjach delplhi można było popełnić taką pomyłkę/błąd.

Zamknij wszyskie projekty w delphi, załóż nowy katalog na projekt, utwórz projekt i zapisz w tym katalogu. Staraj się nadawać unitom swoje nazwy, chociażby UTriangle.pas - będziesz wiedziała do czego co jest...

Ew. znajdź sobie w głównym menu Project i po rozwinięciu wybierz Remove from project (albo coś w tym rodzaju) i pousuwaj unity, które "nie biorą udziału" w Twoim programie.

1
 program Project2;

uses
  Forms,
  Unit1 in '..\..\..\..\Users\Aldona\Desktop\dproj\Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

o to chodzi?

2

Zmień linijkę:

Unit1 in '..\..\..\..\Users\Aldona\Desktop\dproj\Unit1.pas' {Form1};

na

Unit1 in 'Unit1.pas' {Form1};

jeśli więcej cudów nie masz w kodzie, to powinno ruszyć... No chyba, że nie ruszy :]

1

coś jakby zaczęło działać, zaraz wklepię kod i zobaczę czy jest ok; dziękuję za pomoc :)

1
  1. Załóż nowy folder na pulpicie, powiedzmy, że będzie to: delphi01
  2. Włącz delphi
  3. Wybierz z menu Files->Close All
  4. Wybierz z menu Files->New->Application (zakładam, że masz delphi 7)
  5. Wybierz z menu Files->Save All, wybierz ten założony katalog i zapisz wszyskie pliki po kolei w tym jednym katalogu
  6. Nadawaj plikom swoje nazwy, nie Unit1, tylko np. UMain itp.
  7. Tak utworzony od nowa projekt powinien być czysty i dobrze zapisany
  8. Pisz od nowa swój kod
  9. Zakładasz nowy projekt, zaczynaj od punktu 0

Jak następnym razem będziesz miała spakować projekt, to pakujesz wszyskie pliki w tym katalogu/folderze :] Pakujesz, to znaczy używasz jakiegoś programu do pakowania do formatu np. zip :]

I jako dodatek, staraj się naprawdę utrzymywać porządek w kodzie. Twój kod w dwóch wersjach, wybierz, która czytelniejsza ;)

procedure  TForm1.Button1Click(Sender: TObject);
 var
    a, b, c: integer;
    triangle: boolean;
begin
a:=strtoint(edit1.Text);
b:=strtoint(edit2.Text);
c:=strtoint(edit3.Text);
 triangle:=False;
    if a+b > c then
        if a+c>b then
           if b+c>a then triangle:=True;
    if triangle then
     label1.Caption:='Triangle can be built ' 
    else
        label1.Caption:='Triangle cannot be built ';
procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c  : integer;
  triangle : boolean;
begin
  a := StrToInt(Edit1.Text);
  b := StrToInt(Edit2.Text);
  c := StrToInt(Edit3.Text);

  triangle := False;

  if a + b > c then
    if a + c > b then
      if b + c > a then triangle := True;

  if triangle then
    Label1.Caption := 'Triangle can be built '
    else
        label1.Caption := 'Triangle cannot be built ';
0

A twierdzenie Pitagorasa to pies?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.