IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Turbo Pascal Discussion :

Borland Pascal : Erreur 202 fantôme


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 42
    Par défaut Borland Pascal : Erreur 202 fantôme
    J'ai réalisé un petit programme assez simple qui ne fait que manipuler des données de fichier à l'aide Borland pascal.
    J'ai choisi ce compilateur parcequ'il est assez proche du turbo pascal 5.5 que j'utilisais il y a une quinzaine d'année à titre professionnel. (depuis, le désert ...)
    Donc pour mon bon plaisir je réalise ce petit programme.
    Mais rapidement je rencontre un problème étrange : il plante avec une erreur 202 - dépassement de stack -.
    Dans un premier temps je commence à chercher mon erreur, mais à l'évidence, il n'y en a pas. Le programme est simple, que des boucles for, while, until. Pas d'objet, pas de gestion dynamique de la mémoire, pas d'appel récurent de procédure ... Je m'arrache les cheveux.

    Finalement, j'instal la version Lazarus.
    je fait 4 modifications à mon fichier source pour être compatible avec Lazarus :
    - je remplace "uses windos" par "uses dos".
    - je retire la directive {$N+} dont n'a pas besoin Lazarus.
    - je remplace TSearchTRec par SearchRec.
    - la façon de lire un nom de fichier dans SearchRec.

    C'est tout.

    Je compile ... et

    CA MARCHE !

    Alors ... ou est le problème ??? Il me semble pourtant que le compilateur Borland est des plus sérieux ...

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Par défaut
    Sans voir de code c'est quand même difficile de deviner...

    Est-ce que par hasard tu ne passerais pas de gros record ou des tableaux en paramètre à des procédures ou des fonctions sans avoir pris soin de spécifier un passage de paramètre par référence ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 42
    Par défaut
    Citation Envoyé par batyann811 Voir le message
    Sans voir de code c'est quand même difficile de deviner...

    Est-ce que par hasard tu ne passerais pas de gros record ou des tableaux en paramètre à des procédures ou des fonctions sans avoir pris soin de spécifier un passage de paramètre par référence ?
    Ah, ben si tu veux le code : TXM2Mmod.pas.zip
    et un fichier de donnée 'source' pour essayer de faire tourner le programme : LOMBOS.TXM.zip

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Par défaut
    J'ai essayé ton programme sous TP7.

    J'ai du modifier la partie du code ou tu obtiens le nom du fichier source.

    Résultat : Le fichier TXM est lu et j'obtiens un fichier MMO et un RAPPORT.TXT.

    Je suppose donc que ça marche. Pas de problème de pile et je n'ai pas vu dans ton code de procedures ou de fonctions ou tu passerais de gros parametres par valeur.

    Peut être que la taille de la pile dans ton IDE est réglée à une valeur trop faible ? Tu peux sûrement modifier la taille de la pile dans ton IDE (pour TP7 c'est dans Options > Memory Sizes...) ou utiliser la directive $M. Mais le mieux c'est encore de passer à FreePascal...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 42
    Par défaut
    En effet, pour toi ca marche. (Ce programme n'est pas terminé)

    Ce programme fonctionne sous Lazarus. Mais c'est vrai que pour qu'il fonctionne il faut changer la lecture du nom de fichier. Mais le changement que j'ai fait pour Lazarus ne marche pas pour Borland Pascal 7.

    C'est quoi le changement que tu as fait ?

    Je ne pense pas qu'il y ai un problème de taille de pile. J'ai laissé les valeurs standard, et le programme n'est pas lourd à ce point la !

  6. #6
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Par défaut
    J'ai juste modifié ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Procedure ConvertAllTXM2Mmod;
    var
     F : SearchRec; { à la place de TSearchRect }
     
     ...
     
    begin
     FindFirst('*.TXM',W,F);               { Trouver le 1 fichier .TXM }
     while DosError=0 do begin            { si le fichier existe, continuer }
     
       { contruire une chaine de caractère comportant le nom du fichier .TXM trouvé }
      { J'ai viré tout ça }
      (*  i:=0;
      NameF:='';
      while F.Name[i]<>char(0) do begin
       NameF:=NameF+F.Name[i];
       inc(i);
      end;
      *)
     
      { Remplacé par ça }
      NameF:=F.Name;
    Pour la taille de la pile c'est vrai que ton programme n'est pas gros mais la pile du DOS non plus.

    Par défaut sous TP7 elle est de 16ko. Tu peux essayer de mettre ça au début de ton programme pour voir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {$M 16384, 0, 655360}
    J'ai même essayé avec 2ko de pile et ton prog passe encore.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {$M 2048, 0, 655360}
    Avec 1ko de pile j'ai une Runtime error 202.

    Mais le mieux c'est d'utiliser FreePascal.

Discussions similaires

  1. [BP] Où trouver Borland Pascal 7.0 ?
    Par botkes dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 23/07/2006, 11h12
  2. Borland C++ - erreur lors de l'éxecution
    Par cout dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 01/06/2006, 20h54
  3. [Free Pascal] Erreur de compilation hallucinante
    Par molesqualeux dans le forum Free Pascal
    Réponses: 9
    Dernier message: 06/05/2006, 21h10
  4. [Free Pascal] Erreur lors de l'éxecution. (exitcode = 106)
    Par phoebos dans le forum Free Pascal
    Réponses: 2
    Dernier message: 03/03/2006, 22h24
  5. [BP]Borland Pascal : modifier les couleurs par défaut.
    Par Pipoland dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 12/10/2004, 21h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo