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

EDI Delphi Discussion :

Bizarrerie de debugage


Sujet :

EDI Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut Bizarrerie de debugage
    Bonjour

    Je vous livre la procédure suivante :
    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
    24
    Procedure TGisForm.ClosestPointOnSegmentFromPoint(const x1,y1,x2,y2,Px,Py:Double; out Nx,Ny:Double);
    var
      Vx,Vy ,Wx, Wy, c1, c2, Ratio : Double;
    begin
      Vx := x2 - x1; Vy := y2 - y1;
      Wx := Px - x1; Wy := Py - y1;
      c1 := Vx * Wx + Vy * Wy;
      if c1 <= 0.0 then
      begin
        Nx := x1;
        Ny := y1;
        Exit;
      end;
      c2 := Vx * Vx + Vy * Vy;
      if c2 <= c1  then
      begin
        Nx := x2;
        Ny := y2;
        Exit;
      end;
      Ratio := c1 / c2;
      Nx := x1 + Ratio * Vx;
      Ny := y1 + Ratio * Vy;
    end;
    Lors de sa compilation s'il y a une erreur de syntaxe, l'instruction mise en évidence n'est pas celle où se situe l'erreur mais bien une des lignes de déclaration.
    Il en va de même pour toutes les procédures qui suivent dans la source.

    Si quelqu'un a une idée...

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Citation Envoyé par defluc Voir le message
    Lors de sa compilation s'il y a une erreur de syntaxe, l'instruction mise en évidence n'est pas celle où se situe l'erreur mais bien une des lignes de déclaration.
    Ca veut dire que l'erreur ne se produit pas à chaque fois?

    Autre chose qui n'a rien à voir, fais attention avec ceci:
    En effet, c1 et c2 sont de type double et l'égalité ne se produira jamais telle que tu l'as écrite. Il faut utiliser les fonctions spéciales comme SameValue, CompareValue, etc de l'unité Math.
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    L'erreur se produit à chaque fois.
    J'ai donc relégué cette fonction en fin de source et tout se passe normalement pour les erreurs qui seraient relevées au débugage dans les procédures ou fonctions qui précèdent.

    Ceci dit, merci pour ton éclairage sur les fonctions d'égalité que tu m'as renseignées.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Par défaut
    Ne serait-ce pas une division par zéro ?
    If(c2<>0)then Ratio:=c1/c2;
    Cordialement.

  5. #5
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Je pourrais faire le test si le risque existait que c2 soit égal à 0.
    Mais ici mon problème n'est pas à l'exécution mais bien à la compilation.
    La raison en est donc autre.

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Je ne comprends pas où se situe l'erreur:
    • Dans la fonction?
    • Dans les déclarations de la fonction?
    • Dans la déclaration de la fonction dans l'unité?
    Te serait-il possible de montrer plus de code le cas échéant?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  7. #7
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Jipete,

    J'en suis resté à reléguer ma procédure en fin de source.
    La «Bizarrerie de débugage» n'est donc pas résolue.
    J'ai supprimé le paramètre Out et déclaré Nx et Ny public mais rien n'y change. Ce n'est donc pas le paramètre «out» qui en est la cause.

  8. #8
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    z'êtes tous à coté de la plaque les amis (jipété, Pedro,...)

    Bon, c'est normal !

    c'est souvent la présence d'un caractère invisible (non imprimable) dans le fichier.pas, et l'EDI en perd son Latin. En général, c'est du à un copié collé d'un code sur le Web vers la fenêtre d'édition, un formatage du passage à la ligne dans le fichier texte .pas avec #13 ou #10 seulement au lieu de #13#10...

    La seule chose à faire c'est d'insérer une erreur volontaire du style grblzeesf (incompréhensible pour Delphi) et la déplacer du bas du fichier pas, vers le haut afin de déterminer où se trouve le caractère fautif (en général situé en fin de ligne).

    Et là, il s'agit de supprimer le retour à la ligne entre 2 portions de code et de remettre le retour à la ligne.

    voilà, voilà...

  9. #9
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Waskol à te lire, je n'y croyais pas parce que ma source ne provient pas d'un copier/coller. Je l'ai tapée dans l'Edi.

    Mais tu as vu juste.
    Pourtant,
    La seule chose à faire c'est d'insérer une erreur volontaire du style grblzeesf (incompréhensible pour Delphi) et la déplacer du bas du fichier pas, vers le haut afin de déterminer où se trouve le caractère fautif (en général situé en fin de ligne).
    ça ne marche pas. La ligne qui se met en surbrillance est aléatoire et en tout cas pas celle où est située l'erreur.

    Alors, j'ai copié la source dans le bloc-notes et là j'ai vu toute la source sur une seule ligne avec un petit rectangle vertical à la place des renvois à la ligne. Puis, j'ai recopié le tout dans l'EDI.
    Plus de problème.

    Merci à toi

  10. #10
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Citation Envoyé par defluc Voir le message
    Waskol à te lire, je n'y croyais pas parce que ma source ne provient pas d'un copier/coller.
    oui, c'était un exemple... Mais par contre, le coup du caractère parasite.... c'est un grand classique.

    C'est le genre de truc qui m'arrive souvent avec Delphi 7, je ne compte plus le nombre de fois que ça m'est arrivé !!!
    C'est agaçannnnnnnnt, hein ?

    Citation Envoyé par defluc Voir le message
    Pourtant, ça ne marche pas. La ligne qui se met en surbrillance est aléatoire et en tout cas pas celle où est située l'erreur.
    Non, bien sur, toujours uune ligne avant, jusqu'à ce que tu mettes la ligne d'erreur avant le caractère parasite. Et là, toc.

    Mais le coup du Bloc-note est bien vu
    Citation Envoyé par defluc Voir le message
    Merci à toi
    De rien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Debugage] Connection Mysql
    Par e1lauren dans le forum MFC
    Réponses: 6
    Dernier message: 25/04/2005, 16h18
  2. Word :saut de page bizarrerie n°3
    Par 120 dans le forum VBA Word
    Réponses: 1
    Dernier message: 17/02/2005, 14h35
  3. [CR8-ORACLE9] entiers divisés par 100 et autres bizarreries
    Par Seb des Monts dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 29/09/2004, 10h49
  4. Une ch'tite bizarrerie dans les Updates de SQL Server
    Par Wakko2k dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 08/04/2004, 14h14
  5. Réponses: 4
    Dernier message: 19/03/2004, 11h48

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