Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Débutant] Erreurs de compil

12 views
Skip to first unread message

Olivier

unread,
Feb 23, 2013, 1:00:33 PM2/23/13
to
Bonjour,

Formᅵ sur Pascal et Turbo-Pascal par le Cnam en 1990, je reviens en
formation avec Ada comme langage qui semble trᅵs proche de Pascal.
J'utilise l'IDE AdaGide, n'ayant pas rᅵussi ᅵ installer correctement
GPS sous Vista.
Je ne comprends pas certaines erreurs donnᅵes par le compilateur.
Je suis obligᅵ de mettre 2 fois Enf if; ᅵ la fin sinon le compilateur
dᅵtecte une erreur (missing "END IF;" for "IF" at line 19)
[code]
FOR I IN sDate'RANGE LOOP
IF sDate(I) = " " THEN
nFormat := 1;
Else if sDate(I) = "/" then
nFormat := 2;
ELSE
nFormat := 0;
END IF;
end if;
END LOOP
[/code]
Et dans ce cas il me sort les erreurs suivantes :

invalid operand types for operator "="
left operand has type "Standard.Character"
right operand has a string type
invalid operand types for operator "="
left operand has type "Standard.Character"
right operand has a string type
invalid operand types for operator "&"

J'avoue ne plus comprendre ce qui se passe et si qqu'un pouvait
m'ᅵclairer ᅵa m'aiderait beaucoup.

Merci d'avance.


J-P. Rosen

unread,
Feb 23, 2013, 3:31:18 PM2/23/13
to
Le 23/02/2013 19:00, Olivier a ᅵcrit :
> Je ne comprends pas certaines erreurs donnᅵes par le compilateur.
> Je suis obligᅵ de mettre 2 fois Enf if; ᅵ la fin sinon le compilateur
> dᅵtecte une erreur (missing "END IF;" for "IF" at line 19)
En Ada, il faut ᅵcrire elsif et non else if; sinon, il y a deux if
imbriquᅵs, donc il faut deux end if

> [code]
> FOR I IN sDate'RANGE LOOP
> IF sDate(I) = " " THEN
> nFormat := 1;
> Else if sDate(I) = "/" then
> nFormat := 2;
> ELSE
> nFormat := 0;
> END IF;
> end if;
> END LOOP
> [/code]
> Et dans ce cas il me sort les erreurs suivantes :
>
> invalid operand types for operator "="
> left operand has type "Standard.Character"
En Ada (contrairement ᅵ Pascal), on fait la diffᅵrence entre une chaᅵne
contenant un seul caractᅵre et un caractᅵre simple. Les caractᅵres
s'ᅵcrivent entre apostrophes simples, donc il faut ᅵcrire '/' et non "/".

--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr

Ludovic Brenta

unread,
Feb 23, 2013, 3:53:24 PM2/23/13
to
Olivier writes on fr.comp.lang.ada:
> Form� sur Pascal et Turbo-Pascal par le Cnam en 1990, je reviens en
> formation avec Ada comme langage qui semble tr�s proche de Pascal.
> J'utilise l'IDE AdaGide, n'ayant pas r�ussi � installer correctement
> GPS sous Vista.
> Je ne comprends pas certaines erreurs donn�es par le compilateur.
> Je suis oblig� de mettre 2 fois Enf if; � la fin sinon le compilateur
> d�tecte une erreur (missing "END IF;" for "IF" at line 19)
> [code]
> FOR I IN sDate'RANGE LOOP
> IF sDate(I) = " " THEN
> nFormat := 1;
> Else if sDate(I) = "/" then

Essaie "elsif sDate(I) = "/" then"

> nFormat := 2;
> ELSE
> nFormat := 0;
> END IF;
> end if;
> END LOOP
> [/code]
> Et dans ce cas il me sort les erreurs suivantes :
>
> invalid operand types for operator "="
> left operand has type "Standard.Character"
> right operand has a string type
> invalid operand types for operator "="
> left operand has type "Standard.Character"
> right operand has a string type
> invalid operand types for operator "&"
>
> J'avoue ne plus comprendre ce qui se passe et si qqu'un pouvait
> m'�clairer �a m'aiderait beaucoup.

Tu as deux "if" imbriqu�s. Si tu remplaces "else if" par "elsif", tu
n'a plus qu'un seul "if".

--
Ludovic Brenta.

Olivier

unread,
Feb 24, 2013, 10:46:03 AM2/24/13
to
Olivier a pensᅵ trᅵs fort :
Ok vu. Merci beaucoup.

Olivier


0 new messages