[Turbo Pascal] Besoin d'aide :)

Répondre
Partager Rechercher
j'ai un Tp d'info à finir pour la rentrée, et j'ai quelques problèmes

deja je bloque sur le fait que je doit attribuer à la fin de chaines de caractères une variable composée de numéros, mais cette variable je dois la faire varier, donc je suis obligé de la définir en tant qu'integer
or quand je rajoute cette variable à la chaine, il me dit qu'il attend un Ansistring et non un longint

Si vous voulez jetez un coup d'oeil au fichier, le voila
http://membres.lycos.fr/screenst4c/Divers/TP.zip


sinon il faut que je récupère toutes les variables contenues dans un flot constitué du code d'un prog
pour cela j'utilise un vecteur précédement crée qui a récupéré tous les mots et les as mis en majuscule (c'est la démarche qu'on nous avait fait prendre au début)
j'ai bien pensé à récupérer ce qui se situe apres var, mais certaines variables ne sont pas précédées de var, j'ai pas encore trouvé comme les récupérer, de meme pour celles séparées par une virgule
car le vecteur ne stocke que les mots, donc plus de ponctuations.

merci d'avance
Pr ton probleme d'integer en fin de chaine :
/agree les autres, IntToStr doit etre ton ami..

Pour la 2eme partie
(apparte : Pourquoi on a toujours tendance a skipper les questions secondaires ? )

Si j'ai bien compris, tu as le source d'un prog, et tu dois recuperer les variables..
Or, tes variables sont forcements declarees dans le bloc "var", donc je ne vois pas ou est la difficulte de les recuperer.. ..

*apres relecture*
Ah ok, je crois comprendre..
En gros, si t'as

var
var1: integer;
var2, var3: string;
begin
...

Tu utilises un truc qui va te retourner :
VAR VAR1 INTEGER VAR2 VAR3 STRING BEGIN

Si c'est bien ca, ben effectivement, tu vas en chier..
Je dirais meme que c'est quasiment pas possible, si tu prends en compte le fait qu'il peut y avoir des types personnalises (et dans ce cas, il faut carrement verifier les 'uses' pour recuperer toutes les declarations de type )...

Tu te refais un parser a toi, et tu utilises pas le truc bizarre de ton prof, et tu pis voila, tu lui mets en commentaire que c'etait nul !

Sinon, je te conseille de demander de l'aide aux pros (non pas qu'il n'y ait pas de pro ici, mais c'est pas franchement specialise TP..)
http://www.developpez.com/delphi pr le plus connu !
Bon mes connaissances de Pascal sont hyper vieilles mais si j'ai bonne mémoire faudra faire un truc comme ça :

var maString : String;
var monInt : Integer;

maString := "Hello World!";
monInt := 123;

maString := Str(monInt, maString);

Donc maString contiendra : "Hello World!123"


Et pour ton 2ème problème, comme le dit Mindark moi je referai un parser. D'ailleurs c'est quoi ce vecteur dont tu parles? Une liste chaînée?

Moi voila comment je ferais :

Tu lis toutes les lignes du fichier, et tu stock tout ça dans une liste chaînée à 2 dimensions (attention aux allocations mémoires ). Chaque colonne contient une ligne du fichier, et chaque ligne un mot de la ligne du fichier que tu viens de lire.

Pour filtrer chaque ligne tu parse sur le ';' ou le '\n' et pour filtrer les mots tu parse sur la ponctuation : ' ' ',' ':' etc...

Ensuite si le premier mot de la ligne est 'var' tu sais que tous les N-1 mots suivants (N étant le nombre de mots de la ligne) sont les noms des variables et le Nième est le type de la variable. Et pour les noms de variables passés en paramètres de tes fonctions tu dois bien pouvoir ruser et pondre un petit algorythme.
merci

en fait je suis allez sur developpez.com, et ils m'ont dit aussi d'utiliser str
car marche tres bien avec

en effet Mindark j'y arrive pas :bouffon:

disons que c'est pas explicitement dis quelle méthode utilisée, mais vu qu'on avait avant tapper 3 procédures, la 1ere qui créer ce vecteur avec seulement les mots du flot, une 2eme qui mets les mots en majuscule, et une 3eme qui cherche si un mot appartient au vecteur

je crois que je vais me contenter de travailler directement sur le flot
citation :
Bon mes connaissances de Pascal sont hyper vieilles mais si j'ai bonne mémoire faudra faire un truc comme ça :

var maString : String;
var monInt : Integer;

maString := "Hello World!";
monInt := 123;

maString := Str(monInt, maString);

Donc maString contiendra : "Hello World!123"

non maString contiendra : '123';


Je dirais plutôt : MaString := MaString + IntToStr(MonInt);
donc MaString := 'Hello World!123';
Citation :
Provient du message de Stanley
citation :
Je dirais plutôt : MaString := MaString + IntToStr(MonInt);
donc MaString := 'Hello World!123';
Exact, Str ne concaténe pas l'entier et la string fournis en paramètres :

Citation :
Syntax: Str(number, mystr)
where number is a numeric data type and
mystr is a string identifier

Str is used to convert an integer, real, etc. into a string. This procedure has little utility. It is provided basically to mirror/reverse the effect of the procedure Val. Given the following declarations and assignments, several things are possible.

num_int : integer;
num_real : real;
mystr : string;

num_int := 345;
num_real := 34.567;

* The following code would result in mystr containing '345'.

Str(num_int, mystr)

* The following code would result in mystr containing ' 345', with two leading spaces.

Str(num_int:5, mystr)

* The following code would result in mystr containing '34.57'.

Str(num_real:1:2, mystr)

* The following code would result in mystr containing ' 34.6', with three leading spaces.

Str(num_real:7:1, mystr)
Autant pour moi, enfin ça faisait 8 ans que j'avais plus vu de code en Pascal
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés