JeuxOnLineForumsPlusConnectés : 274 (sites) | 409 (forums)Créer un compte
Forums divers
La Taverne
Les forums JOL > Forums divers > La Taverne > [Turbo Pascal] Besoin d'aide :) RSS
   
Répondre
Partager Outils Rechercher
Avatar de Ulushyu
Ulushyu [Mosh]
Alpha & Oméga
 
Avatar de Ulushyu
 

[Turbo Pascal] Besoin d'aide :)

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://******************/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
Lien direct vers le message - Vieux
Christian Troy
Alpha & Oméga
 
Lien direct vers le message - Vieux
Avatar de Héristophène Pillon
Héristophène Pillon
Alpha & Oméga
 
Avatar de Héristophène Pillon
 
Suffit de faire Str(le integer, une chaine temporaire) ensuite tu les concatène...Enfin ca marche en Delphi
Lien direct vers le message - Vieux
Avatar de Hanny Drocéphale
Hanny Drocéphale [FED]
 
Avatar de Hanny Drocéphale
 
IntToStr(Value: Integer)

en Turbo Pascal ca devrait exister.
Lien direct vers le message - Vieux
Mindark
Roi / Reine
 
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 !
Lien direct vers le message - Vieux
Avatar de Bio
Bio [AJ]
Empereur / Impératrice
 
Avatar de Bio
 
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.
Lien direct vers le message - Vieux
Avatar de Seiyar
Seiyar
Alpha & Oméga
 
Avatar de Seiyar
 
Je suis plutot dans le Java et j'ai pas touché à Turbo pascal depuis 3 ans, mais je suivrais les autres.

Le IntToStr est ton ami.
Lien direct vers le message - Vieux
Avatar de Ulushyu
Ulushyu [Mosh]
Alpha & Oméga
 
Avatar de Ulushyu
 
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
Lien direct vers le message - Vieux
Avatar de Stanley
Stanley
Roi
 
Avatar de Stanley
 
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';
Lien direct vers le message - Vieux
Avatar de Bio
Bio [AJ]
Empereur / Impératrice
 
Avatar de Bio
 
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
Lien direct vers le message - Vieux
Avatar de Stanley
Stanley
Roi
 
Avatar de Stanley
 
tu es pardonné
Lien direct vers le message - Vieux
Avatar de Ulushyu
Ulushyu [Mosh]
Alpha & Oméga
 
Avatar de Ulushyu
 
parser, c'est faire une analyse syntaxique ?

sinon, Bio tu me conseilles de faire une matrice ?
l'idée n'est pas mauvaise, je vais réfléchir à ca
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forums divers > La Taverne > [Turbo Pascal] Besoin d'aide :)
   

Connectés sur ce fil

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

Outils Rechercher
Rechercher:

Recherche avancée

Thème visuel : Fuseau horaire GMT +1. Il est actuellement 07h18.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite