Il y a actuellement 113 visiteurs
Mardi 27 Juillet 2021
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

[réglé]probleme de fonction en pascal avec fpc et geany

Besoin d'aide pour configurer un serveur ? Vous souhaitez obtenir des conseils pour référencer votre site ? Un petit souci pour accéder à votre FTP ? Des soucis de programmation en PHP / ASP / HTML / XHTML / XML / XSLT / CSS / ReactJS / AngularJS / VueJS / CGI / PERL / C / MySQL / PostgreSQL ??? Nous avons peut-être la solution dans ce forum ...

[réglé]probleme de fonction en pascal avec fpc et geany

Message le 27 Juil 2008 19:11

Salut,

J'utilise FPC avec comme editeur de texte Geany pour faire des exercices en pascal.

Lorsque je code une fonction simple de type :

Code: Tout sélectionner
program testfunction;

function plus3 (var x:integer):integer;
begin
  result := x+3;
end;

var a,b:integer;
begin
  writeln ('entrez un nombre');
  readln (a);
  b:= plus3 (a);
  writeln (a, '+ 3 =',b);
end. 


le compilateur me sort une erreur : Error: Identifier not found "result"

Alors que la meme fonction se compile bien avec textpad et borland sous windows.

Que puis je faire pour regler ce probleme ?
Merci d'avance.
Asus P5Q pro // Quad Core Q9450 // Corsair XMS2 PC6400 CL4 - (8 go) // WD Caviar 250 go Sata II x4 - WD Caviar 500 go Sata II- Maxtor 320 go Sata I // 8800 GT Zilent // Alim Corsair TX650W
Avatar de l'utilisateur
blu
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 315
Inscription: 28 Avr 2003 19:51
 


Message le 29 Juil 2008 12:05

Est ce que cela pourrait venir du fait que mon os soit 64bits ?
Asus P5Q pro // Quad Core Q9450 // Corsair XMS2 PC6400 CL4 - (8 go) // WD Caviar 250 go Sata II x4 - WD Caviar 500 go Sata II- Maxtor 320 go Sata I // 8800 GT Zilent // Alim Corsair TX650W
Avatar de l'utilisateur
blu
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 315
Inscription: 28 Avr 2003 19:51
 

Message le 29 Juil 2008 12:19

Sans connaitre ni avoir appris le Pascal, je dirais que l'erreur est logique.
Ta variable "result" n'est pas déclarée (en global, ou en local dans la fonction), et surtout elle n'est pas retournée par la fonction si je ne me trompe pas. Tu affecte une valeur mais elle n'est pas utilisée par la suite.
Je pense que le programme tel qu'il est écrit est faux. Après, il y a des compilateurs souples et d'autres moins compréhensifs, d'où la différence de traitement à la compilation :)
Libérez-vous : http://www.debian.org
Nobody knows what sysadmin does... until he stops doing it
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 8978
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... et jamais loin d'une Debian
 

Message le 29 Juil 2008 12:28

Mais est ce que cette ligne :

Code: Tout sélectionner
result := x+3;


Ne constituerais pas à la fois en une déclaration et une initialisation de le variable result ?

Je ne connais pas le Pascal, je me fie au peu de C que je connais...

En C, cela aurait donné :
Code: Tout sélectionner
int result = x+3;
En cas de problème constaté sur un sujet, contactez un modérateur par MP. N'intervenez pas vous-même. Merci bien.
Aucune aide ni support ne sera fourni par MP.
Avatar de l'utilisateur
H3bus
Moderateur
Moderateur
 
Messages: 12195
Inscription: 08 Avr 2008 15:13
Localisation: /home/h3bus
 

Message le 29 Juil 2008 12:53

La variable result n'est elle pas implicitement déclarée par le deuxiemme "integer" celui apres les parentheses ?
Code: Tout sélectionner
function plus3 (var x:integer):integer;


mon programme est supposé etre correct, c'est un prof qui nous a apris a coder les fonctions comme cela.
Asus P5Q pro // Quad Core Q9450 // Corsair XMS2 PC6400 CL4 - (8 go) // WD Caviar 250 go Sata II x4 - WD Caviar 500 go Sata II- Maxtor 320 go Sata I // 8800 GT Zilent // Alim Corsair TX650W
Avatar de l'utilisateur
blu
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 315
Inscription: 28 Avr 2003 19:51
 

Message le 29 Juil 2008 14:56

Soit le prof a oublié qqchose, soit le Pascal c'est très crade comme langage.
J'ai jamais trop vu ça en programmation, et j'analyse bêtement le code :
Code: Tout sélectionner
function plus3 (var x:integer):integer;

Déclaration d'integer, soit, mais ici rien n'indique que cet integer est la variable "result".
Code: Tout sélectionner
result := x+3;

Pas de déclaration explicite de "result". C'est quoi ? un integer, autre chose ?
Et sur la fin de la fonction, rien n'indique que la variable result est à retourner en résultat. Donc rien n'indique son type et rien ne la rattache au fameux 1er "integer"...

D'intuition, je mettrais qqchose comme
Code: Tout sélectionner
var result:integer;

OU
Code: Tout sélectionner
return result;
(si ça se déclare comme cela en Pascal)
... dans la fonction. Je pense que ce serait plus propre et que ça aurait plus de chances de passer.
Je pense d'ailleur plus fortement à la 2eme solution.
Libérez-vous : http://www.debian.org
Nobody knows what sysadmin does... until he stops doing it
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 8978
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... et jamais loin d'une Debian
 

Message le 29 Juil 2008 15:41

CaSa a écrit:Et sur la fin de la fonction, rien n'indique que la variable result est à retourner en résultat. Donc rien n'indique son type et rien ne la rattache au fameux 1er "integer"...

Je pensais que result est implicitement le resultat de la fonction.

J'ai essayé de déclarer result en variable locale. Cela résous le probleme sous linux. Par contre sous windows, j'ai un message d'erreur qui dit :
Error : identifier redeclared : 'result'
Asus P5Q pro // Quad Core Q9450 // Corsair XMS2 PC6400 CL4 - (8 go) // WD Caviar 250 go Sata II x4 - WD Caviar 500 go Sata II- Maxtor 320 go Sata I // 8800 GT Zilent // Alim Corsair TX650W
Avatar de l'utilisateur
blu
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 315
Inscription: 28 Avr 2003 19:51
 

Message le 29 Juil 2008 20:28

j'ai posté mon problème sur les forums de developpez.net, voici la solution :

Je pense qu'il faut activer la compatibilité Delphi avec la directive

Code: Tout sélectionner
{$MODE DELPHI}


J'ai pas tout compris, mais ca fonctionne :)
Asus P5Q pro // Quad Core Q9450 // Corsair XMS2 PC6400 CL4 - (8 go) // WD Caviar 250 go Sata II x4 - WD Caviar 500 go Sata II- Maxtor 320 go Sata I // 8800 GT Zilent // Alim Corsair TX650W
Avatar de l'utilisateur
blu
Apprenti(e) Expert(e)
Apprenti(e) Expert(e)
 
Messages: 315
Inscription: 28 Avr 2003 19:51
 



Sujets similaires

Message probleme ecran en veile et ordi qui tourne
jai un probleme avec mon ordi de bureau tout tourne normalement lecran marche bien et quelque jours apres en le ralument lecran reste en veil et lordi tourne bien en le demontent jai toucher un peut la carte graphique jai ralumer lordie et la sa a marcher mais quelques jours apres rebelote ecrant en ...
Réponses: 5

Message probleme age of empires 3 sur steam
Salut tout le monde depuis quelque temps lorsque je joue sur Steam avec age of empire 3 définitive édition pendant le jeu aléatoirement le jeu plante comme si ma carte graphique était soit défaillante, soit le processeur car le jeu est souvent assez lent voici le type de message que j'ai avant que t ...
Réponses: 4

Message [Réglé] marre des fenêtres d'acceptation des cookies ?
bonjour je trouvais insupportable d'avoir a accepter des cookies sur tous les sites et surtout sur ceux ou je ne suis que de passage .après une recherche, j'ai trouvé pour supprimer les "cookies warnings" https://www.presse-citron.net/marre-coo ... barrasser/la solution est peut être (a vo ...
Réponses: 9

Message [Réglé] Installer Office 2007
Bonjour,Je possède la suite Office 2007 avec sa clef d'activation sur CD que j'aimerais installer sur PC portable Windows 10, sans lecteur. Comment puis-je procéder, sachant que je ne suis pas une foudre de guerre en matière informatique?Merci à tous.
Réponses: 9

Message Problème d’affichage 2e écran et tablette graphique
Bonjour à tous,Le problème est le suivant, j?ai besoin de travailler sur 2 écrans et sur une tablette graphique, le câble de mon 2e écran est en HDMI et ma tablette également. Ne possédant qu?une connectique en HDMI sur ma tour j?ai donc acheté un adaptateur HDMI pour double HDMI histoire de faire f ...
Réponses: 0

Message [Réglé] dommage pas de forum pour tirage photos
Salut tout le monde ! J?ai besoin d'un petit conseil pour imprimer une photo que je dois mettre dans un cadre photo de 15 cm par 15 cm, mais je ne trouve pas comment la rendre normale pas minuscule pas étirée ou autre ..... il n'y a pas de forum photo ou tirage photos imprimante, mais bon qui sait ...
Réponses: 10


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


.: Nous contacter :: Flux RSS :: Données personnelles :.