Błędy w Delphi, Programowanie, Klasa II


Błędy w Delphi mają postać typu:

[Error] Unit1.pas(38): Missing operator or semicolon,

co oznacza, że w wierszu nr 38 jest błąd (brakuje średnika, jak widać w wiersz powyżej - po inkrementacji zmiennej „a”).

Nie trzeba liczyć wierszy, program sam pokaże miejsce błędu, gdy sami klikniemy 2x w nazwę błędu w dolnej części okna.

0x01 graphic

Po liście błędów (errors) i ostrzeżeń (warnings) pojawia się oczywista informacja:

[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

mówiąca po prostu nam, że program nie może być skompilowany (to compile - kompilować)

PRZYKŁADOWE BŁĘDY

Lp.

Nazwa błędu

Opis

1

Illegal character in input file: 'ł'

Niedozwolony znak - w tym przypadku była to nazwa zmiennej; w nazwach zmiennych nie używamy polskich liter

2

':=' expected but '=' found

Oczekiwano operatora przypisania, a znaleziono operator porównania

3

Undeclared identifier: 'haslo'

Niezadeklarowany identyfikator. Występuje np. gdy zadeklarujemy zmienną o nazwie „hasl0” a odwołujemy się potem do zmiennej „haslo”

4

Undeclared identifier: 'IntputBox'

Undeclared identifier: 'lebel1'

itd.

Podobnie jak wyżej, chociaż w tym przypadku nie chodzi o różnicę w nazewnictwie zmiennych, tylko źle podana nazwa funkcji (InputBox); lebel1 zamiast label1

5

':=' expected but ':' found

Oczekiwano := a jest :

6

Missing operator or semicolon

Brakuje operatora lub średnika (zazwyczaj średnika)

7

'.' expected but ';' found

Często występuje przy słowie „end” co może oznaczać, że mamy o jednego „enda” za dużo - oczekiwano kropki, czyli enda kończącego program (end.) a odnaleziono „end;”

8

'END' expected but ')' found

Tłumacząc wprost, to oczekiwano enda a znaleziono nawias zamykający. Sytuacja się komplikuje gdy okazuje się, że ten błąd wystąpił w tej linii kodu:

inputbox('baza danych-próba2':'hasło':'');

a ta linia była w pętli repeat.

Niektóre błędy trudno interpretować, po prostu zamiast przecinków między argumentami funkcji wstawione są dwukropki.

9

Not enough actual parameters

Za mało parametrów. Błąd występuje gdy podamy za mało parametrów funkcji, np. w funkcji InputBox tylko dwa

ŹLE: InputBox('Hasło', 'Podaj hasło:');

OK.: InputBox('Hasło', 'Podaj hasło:', '');

10

Invalid compiler directive: 'b'

Ten błąd pojawił się przy deklaracji zmiennych gdzie zapomniano średnika:

var

a : String

b : Integer;

Błąd w ostatnim wierszu wyskoczył

11

Incompatible types: 'String' and 'Real'

Niekompatybilne (niewłaściwe) typy danych, np. jeśli mamy dwie zmienne:

a : string

b : integer

i chcemy przypisać:

a:=b;

lub:

a:='tekst';

11a

Incompatible types: 'String' and 'Integer'

Niekompatybilne typy, np.

StringGrid1.Cells[i,0]:=i;

zamiast

StringGrid1.Cells[i,0]:=IntToStr(i);

(FloatToStr też zadziała)

11b

Incompatible types: 'Integer' and 'Extended'

a, b, c : Integer;

a:=6;

b:=3;

c:=a/b; // błąd w tej linii

Złe dobranie typów danych. Jeśli dzielimy to typy rzeczywiste.

11c

Incompatible types: 'TEdit' and 'Integer'

Tworzymy pole TEdit o nazwie „nazwa” oraz zmienną całkowitą „nazwa”, następnie taki kod:

nazwa:=3;

Kompilator myśli, że odwołujemy się do Edita. Natomiast sam taki kod zadziała:

nazwa.Text:='napis';

12

';' not allowed before 'ELSE'

w instrukcji IF THEN ELSE przed ELSE nie stawiamy średnika

13

Type of expression must be

BOOLEAN

typ wyrażenia musi być BOOLEAN (logiczne), czyli np. w pętli REPEAT na końcu gdy sprawdzamy warunek (a więc po słowie UNTIL) nie można użyć przypisania:

until a:=haslo;

tylko porównanie

until a=haslo;

14

Expression expected but 'END' found

Oczekiwano wyrażenia a odnaleziono „end”, np.:

a:=

end;

15

There is no overloaded version of 'IntToStr' that can be called with these arguments

Jeśli mamy zmienną „a” typu np. single a będziemy chcieli zrobić coś takiego:

IntToStr(a);

W drugą stronę zadziała, tzn zmienną całkowitą można użyć w funkcji FloatToStr

16

Unterminated string

Ciąg znaków (łańcuch tekstowy) nie został zakończony, np.:

Edit1.Text:='napis;

17

Undeclared identifier: 'napis'

Źle wpisany łańcuch znaków, kompilator uznaje go wtedy za identyfikator

Edit1.Text:=napis; lub

Edit1.Text:=napis';

18

Illegal character in input file: '"' ($22)

Źle oznaczony łańcuch znaków, czyli niedozwolone znaki (illegal characters)

Edit1.Text:="napis";

19

'[' expected but ':=' found

Złe użycie właściwości Cells, oczekiwano nawiasu kwadratowego i współrzędnych:

StringGrid1.Cells:='napis';

20

Incompatible types: 'Integer' and 'Extended'

Błąd typów (niekompatybilność) - Integer a Extender - podajemy współrzędne (komórki) w postaci liczb całkowitych a nie rzeczywistych (rozszerzonych):

StringGrid1.Cells [2.0, 3] := 'napis';

21

Declaration expected but identifier 'a' found

W języku Delphi wszystkie instrukcje i deklaracje muszą być umieszczone w procedurach (uproszczenie), a nie w dowolnym miejscu:

var

Form1: TForm1;

a: Integer;

implementation

{$R *.dfm}

a:=2; // tu pojawi się błąd

end.

Rozwiązaniem jest chociażby przypisanie tej wartości przy tworzeniu formularza (event OnCreate)

22

[Warning] Unit1.pas(36): For loop control variable must be simple local variable

Jest to ostrzeżenie, program wykona się. W pętlach używamy zmiennych lokalnych.

0x01 graphic

np. jeśli zadeklarujemy tylko zmienną a nie przypiszemy jej wartości, a potem robimy takie coś: Stringgrid1.Cells [i-1, 0] := 'Napis';

Jeśli zrobimy takie coś: Stringgrid1.Cells [i, 0] := 'Napis'; , to napis pojawi się w komórce [0,0]

0x01 graphic

Zmieniliśmy nazwę formularza na Tekst i chcemy następnie zapisać projekt jako Tekst.dpr.



Wyszukiwarka

Podobne podstrony:
07. Typy danych w Delphi, Programowanie, Klasa II
20. Delphi - konsola, Programowanie, Klasa II
21.1 Tablice - wprowadzenie, Programowanie, Klasa II
08. Zmienne i stałe, Programowanie, Klasa II
02b. Pseudokod - cd, Programowanie, Klasa II
02c-1. PROGRAM Suma n liczb, Programowanie, Klasa II
09. Operatory, Programowanie, Klasa II
PROGRAM ZAJĘĆ DYDAKTYCZN1, PROGRAM ZAJĘĆ DYDAKTYCZNO-WYRÓWNAWCZYCH KLASA II - I okres
Programuję w Delphi i C++ Builder Part II
RS 232C praktyczne programowanie Od Pascala i C do Delphi i Buildera Wydanie II
RS 232C praktyczne programowanie Od Pascala i C do Delphi i Buildera Wydanie II 2
RS 232C praktyczne programowanie Od Pascala i C do Delphi i Buildera Wydanie II
Programuje w delphi i c builder cz II
RS 232C praktyczne programowanie Od Pascala i C do Delphi i Buildera Wydanie II rs2322
RS 232C praktyczne programowanie Od Pascala i C do Delphi i Buildera Wydanie II rs2322
RS 232C praktyczne programowanie Od Pascala i C do Delphi i Buildera Wydanie II rs2322 2
Programuję w Delphi i C++ Builder Part II

więcej podobnych podstron