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

Langage Delphi Discussion :

[D7] Problème de virgule flottante


Sujet :

Langage Delphi

  1. #1
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut [D7] Problème de virgule flottante
    Bonjour,

    A l'exécution de mon application, j'obtiens le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'Débordement BCD' n'est pas une valeur en virgule flottante correcte
    Voici la fonction incriminée :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    function FindChamp(CDS : TSimpleDataSet ; FindChamp1 : string ; Valeur1 : string ; RetourneChamp : string ; FindChamp2 : string = '' ; Valeur2 : string = '' ; AliasRetourneChamp : string = '') : string;
    begin
      with usersession.DMPrimeur.QryDataFetch do
      begin
        Active:=False;
        Close;
        with SQL do
        begin
          Clear;
          Add('select '+RetourneChamp);
          if AliasRetourneChamp<>'' then
            Add(' as '+AliasRetourneChamp);
          Add(' from PR0050');
          Add(' where '+FindChamp1+'='''+AnsiReplaceStr(Valeur1,'''','''''')+'''');
        end;
        Open;
        try
          if (RecordCount<1) then
            result:=''
          else
          begin
            if AliasRetourneChamp<>'' then
              result:=FieldByName(AliasRetourneChamp).Text
            else
              result:=FieldByName(RetourneChamp).Text;
          end;
        except
          result:='';
        end;
        Close;
      end;
    end;
    Quelle est la cause de ce message ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 75
    Points : 61
    Points
    61
    Par défaut
    C'est surement une erreur dans la requette, remplace AnsiReplaceStr par Quotedstr et met le DECIMALSEPARATOR à '.'
    Ca fait quoi ?

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    en mode debug, ça fait planter complètement Delphi et en mode d'exécution "standard" (ie non-debug) j'obtiens le message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Violation d'accès à l'adresse 004D9E4C dans le module 'Primeurs.exe'. Lecture de l'adresse 00000000
    Conclusion : ça n'a rien changé parce que ce message de violation je l'avais aussi en mode d'exécution non-debug.

    Cela dit, j'ai regardé dans l'aide et je ne vois pas pouquoi AnsiReplaceStr ferait planter le programme (as-tu des infos contraires ?) ?

    Par contre, je suis sur une piste et j'aimerais savoir ce que tu en penses : actuellement je stocke le résultat de FieldByName dans une var de type string or le résultat de la requête SQL est un double ; plus précisément c'est : 0,333333... Du coup, j'essaye de limiter (en SQL ?) le nombre de décimales renvoyées, qu'en penses-tu ?

    Merci de ton aide.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 75
    Points : 61
    Points
    61
    Par défaut
    Tout d'abord avec le AnsiReplaceStr, il pourrait avoir une erreur (pas obligatoirement de type float)
    Imagine que
    Valeur1 = '
    tout simplement, ton programme planterais (sauf si tu utilises Quotedstr(valeur1) qui te le remplacerait par ''''
    Et puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Add(' where '+FindChamp1+'= '+quotedstr(valeur1));
    est mieux que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Add(' where '+FindChamp1+'='''+AnsiReplaceStr(Valeur1,'''','''''')+'''');
    Ensuite, ta variable "AliasRetourneChamp" ne te sert a rien, utilise directement "RetourneChamp" ca revient au meme

    Au lieu de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result:=FieldByName(RetourneChamp).text
    utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result:=FieldByName(RetourneChamp).asstring
    Je ne pense pas qu'il est necessaire de limité ton 0,333333, c'est déjà géré dans le SQL (je peux me tromper) mais effectivement, il y a une erreur de conversion comme ci "FindChamp1" est de type DOUBLE et que le comparait à un string.

    Voici ton code aleger.
    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
    25
    26
    function FindChamp(CDS : TSimpleDataSet ; FindChamp1 : string ; Valeur1 : string ; RetourneChamp : string ;
                       FindChamp2 : string = '' ; Valeur2 : string = '') : string;
    begin
    with usersession.DMPrimeur.QryDataFetch do
       begin
       Active:=False;
       Close;
       with SQL do
          begin
          Clear;
          Add('select '+RetourneChamp+' from PR0050');
          Add(' where '+FindChamp1+' = '+quotedstr(Valeur1));
          if FindChamp2 <> '' then
             Add(' and '+FindChamp2+' = '+quotedstr(Valeur2));
          end;
       Open;
       if (RecordCount < 1) then
          result := '' else
          try
            result:=FieldByName(RetourneChamp).asstring;
            except
             result:='';
            end;
       Close;
       end;
    end;
    En définitif, vérifie que FindChamp1 et FinChamp2 sont bien de type STRING (VARCHAR).

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    quelque idées:
    1-remplasse:result:=FieldByName(RetourneChamp).Text;
    par result:=FieldByName(RetourneChamp).asstring;

    2-regarde "QuotedStr()"
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 75
    Points : 61
    Points
    61
    Par défaut
    Maintenant, une petite modification si ton FindChamp1 et bien de type DOUBLE :

    Voici la même procédure avec un FindChamp1 de type double et un FindChamp2 de type String (je ne change pas l'appel, je te laisse passe tes variables en type string)

    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
    25
    26
    function FindChamp(CDS : TSimpleDataSet ; FindChamp1 : string ; Valeur1 : string ; RetourneChamp : string ; 
                       FindChamp2 : string = '' ; Valeur2 : string = '') : string; 
    begin 
    with usersession.DMPrimeur.QryDataFetch do 
       begin 
       Active:=False; 
       Close; 
       with SQL do 
          begin 
          Clear; 
          Add('select '+RetourneChamp+' from PR0050'); 
          Add(' where '+FindChamp1+' = '+Valeur1); 
          if FindChamp2 <> '' then 
             Add(' and '+FindChamp2+' = '+quotedstr(Valeur2)); 
          end; 
       Open; 
       if (RecordCount < 1) then 
          result := '' else 
          try 
            result:=FieldByName(RetourneChamp).asstring; 
            except 
             result:=''; 
            end; 
       Close; 
       end; 
    end;
    Tu remarqueras que dans le where du findchamp1, j'ai enlevé le QUOTEDSTR.

  7. #7
    Membre averti
    Avatar de delphichem
    Inscrit en
    Octobre 2002
    Messages
    280
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 280
    Points : 338
    Points
    338
    Par défaut
    Add(' where '+FindChamp1+'='''+AnsiReplaceStr(Valeur1,'''','''''')+'''');
    Remarque
    si tu mets ''' , il n'est plus necessaire de metre AnsiReplaceStr(Valeur1,'''','''''') puis encore + '''', tu mets directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Add(' where '+FindChamp1+'='''+Valeur1+'''');
    Mais attention, il faut etre sûr qu'il sagisse de chaine de caractère

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 75
    Points : 61
    Points
    61
    Par défaut
    Oui, mais si
    Valeur1 = S'lut
    Ca merde non ?
    Le quotedstr() remplace les cotés et l'intérieur, c'est indispensable.

    Avec Valeur1 = S'lut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Add(' where '+FindChamp1+'='''+AnsiReplaceStr(Valeur1,'''','''''')+'''');
    PAS BON

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Add(' where '+FindChamp1+'='''+Valeur1+'''');
    PAS BON

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Add(' where '+FindChamp1+'='+quotedstr(Valeur1));
    BON

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Add(' where '+FindChamp1+'='''+'S''lut'+'''');
    BON

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Hola hola

    J'ai plusieurs remarques suite à vos conseils :

    - je me sers de AnsiReplaceStr pour remplacer tout quote dans une chaine de caractère par un double quote
    ex : "s'lut" est transformé en "s''lut" qui ne pose donc plus de problème à l'exécution

    - dans la clause where :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Add(' where '+FindChamp1+'='''+QuotedStr(Valeur1)+'''');
    il faut obligatoirement mettre un quote avant la chaine de caractères et un autre quote après sinon c'est une requête SQL incorrecte.

    - selon ce que je comprends dans la doc, QuotedStr produit EXACTEMENT le même effet que mon appel à AnsiReplaceStr

    Enfin, j'ai d'autres infos concernant l'exécution : il s'agit d'une qui encore une fois selon la doc serait due à un champ inexistant (ie 'select ... as X ...' qui est utilisé comme suit FieldByName('X') --> EDatabaseError)

    Maintenant pourquoi cette exception alors là je vous pose la question 8) mais je continue de chercher en parallèle.

    Thx pour votre soutien les gars
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 75
    Points : 61
    Points
    61
    Par défaut
    hum, hum, Bon, je veux pas être lourd, si tu préfère le ansiReplaceStr, c'est toi qui voit, mais voici le code DELPHI du Quotedstr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function QuotedStr(const S: string): string;
    var
      I: Integer;
    begin
      Result := S;
      for I := Length(Result) downto 1 do
        if Result[I] = '''' then Insert('''', Result, I);
      Result := '''' + Result + '''';
    end;
    Lit la dernière ligne de la function.

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    D'accord !

    Je n'insinuais pas une seconde que tu te trompais mais j'ai repris une application dans laquelle ils utilisent à plusieurs reprises AnsiReplaceStr() donc mea culpa

    ...et j'utiliserai QuotedStr() now
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  12. #12
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Je veux pas avoir l'air d'insister mais j'ai une question sur QuotedStr :
    Avec Valeur1 = S'lut
    Code:
    Add(' where '+FindChamp1+'='''+AnsiReplaceStr(Valeur1,'''','''''')+'''');
    PAS BON

    Code:
    Add(' where '+FindChamp1+'='''+Valeur1+'''');
    PAS BON

    Code:
    Add(' where '+FindChamp1+'='+quotedstr(Valeur1));
    BON

    Code:
    Add(' where '+FindChamp1+'='''+'S''lut'+'''');
    BON
    concernant ta 1ère requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Add(' where '+FindChamp1+'='''+AnsiReplaceStr(Valeur1,'''','''''')+'''');
    hormis la (non) lisibilité, elle est équivalente à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Add(' where '+FindChamp1+'='+quotedstr(Valeur1));
    car tu insères un quote AVANT et chaque quote DANS la chaine est dupliqué ? 8)

    (Si ce n'est pas le cas je vais avoir du code existant à modifier)
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  13. #13
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    J'ai encore une info sur cette exception : j'ai encadré précisément mon problème à l'exécution et (sauf erreur de ma part) elle se situe dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FiedlByName('X').asString
    Je m'explique : quand la var X retourne une valeur entière (j'ai testé avec 1) alors pas de pb mais si c'est un flottant comme 0.333...alors l'exception est déclenchée...

    Mais je ne vois toujours pas comment gérer ce problème (.asString me semblait pouvoir répondre à ce pb)
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 75
    Points : 61
    Points
    61
    Par défaut
    Exact pour ton premier ansireplacestr ;-) t'as raison.

    Pour ton fieldbyname, ca doit etre un truc bete dans ta table. Je ne vois rien d'autre avec les info que tu nous donnes.
    Ton code est bon, il ne reste plus que t'as DATABASE. Mais là... On va pas pouvoir faire grand chose si on n'a pas la structure.

  15. #15
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    A'y'est j'ai trouvé --> le souci résidait effectivement dans le fait que 1/3 par ex retourne un nb important de chiffres après la virgule.

    Voici le code permettant de gérer ce pb :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function FindChamp(CDS : TSimpleDataSet ; FindChamp1 : string ; Valeur1 : string ; RetourneChamp : string ; FindChamp2 : string = '' ; Valeur2 : string = '' ; resultIsFloat : Boolean = False) : string;
    begin
      with usersession.DMPrimeur.QryDataFetch do
      begin
        Active:=False;
        Close;
        with SQL do
        begin
          Clear;
          // ATTENTION : si le champ retourné par la requête est un flottant alors
          // il faut gérer son format sinon cela provoque un débordement BCD (ex : 1/3 soit 0,3333...)
          if resultIsFloat then
            Add('select TO_CHAR('+RetourneChamp+', ''9999.99'') as champDemande')
          else
            Add('select '+RetourneChamp+' as champDemande');
     
          Add(' from PR'+copy(CDS.Name,length(CDS.Name)-3,4));
          Add(' where '+FindChamp1+'='+QuotedStr(Valeur1));
          if (FindChamp2<>'') then Add(' and '+FindChamp2+'='+QuotedStr(Valeur2));
        end;
        Open;
        First;
        try
          if (RecordCount<1) then
            result:=''
          else
            result:=FieldByName('champDemande').AsString;
        except
          result:='';
        end;
        Close;
      end;
    end;
    Maintenant il ne s'agit que de mon interprétation et le problème est peut être plus conséquent mais là ça marche

    Merci à tous (et à toutes ?)
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  16. #16
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    Citation Envoyé par Arrown
    Tout d'abord avec le AnsiReplaceStr, il pourrait avoir une erreur (pas obligatoirement de type float)
    Imagine que
    Valeur1 = '
    tout simplement, ton programme planterais (sauf si tu utilises Quotedstr(valeur1) qui te le remplacerait par ''''
    Et puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Add(' where '+FindChamp1+'= '+quotedstr(valeur1));
    est mieux que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Add(' where '+FindChamp1+'='''+AnsiReplaceStr(Valeur1,'''','''''')+'''');
    Ensuite, ta variable "AliasRetourneChamp" ne te sert a rien, utilise directement "RetourneChamp" ca revient au meme

    Au lieu de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result:=FieldByName(RetourneChamp).text
    utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result:=FieldByName(RetourneChamp).asstring
    Je ne pense pas qu'il est necessaire de limité ton 0,333333, c'est déjà géré dans le SQL (je peux me tromper) mais effectivement, il y a une erreur de conversion comme ci "FindChamp1" est de type DOUBLE et que le comparait à un string.

    Voici ton code aleger.
    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
    25
    26
    function FindChamp(CDS : TSimpleDataSet ; FindChamp1 : string ; Valeur1 : string ; RetourneChamp : string ;
                       FindChamp2 : string = '' ; Valeur2 : string = '') : string;
    begin
    with usersession.DMPrimeur.QryDataFetch do
       begin
       Active:=False;
       Close;
       with SQL do
          begin
          Clear;
          Add('select '+RetourneChamp+' from PR0050');
          Add(' where '+FindChamp1+' = '+quotedstr(Valeur1));
          if FindChamp2 <> '' then
             Add(' and '+FindChamp2+' = '+quotedstr(Valeur2));
          end;
       Open;
       if (RecordCount < 1) then
          result := '' else
          try
            result:=FieldByName(RetourneChamp).asstring;
            except
             result:='';
            end;
       Close;
       end;
    end;
    En définitif, vérifie que FindChamp1 et FinChamp2 sont bien de type STRING (VARCHAR).

    Juste une petite remarque concernant l'utilisation de condition dans une
    requête SQL.

    il est toujours préférable d'utiliser des paramètres plutot que de concaténer des chaines de caractères :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    Add('select '+RetourneChamp+' from PR0050');
    Add(' where '+FindChamp1+' =:Param1');
    etc...
     
    parambyname('Param1').asstring := Valeur1;

  17. #17
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par RamDevTeam
    il est toujours préférable d'utiliser des paramètres plutot que de concaténer des chaines de caractères
    C'est une des choses que j'ai appris depuis que je fréquente (TRES régulièrement les forums de www.developpez.com)
    Cependant, je n'ai pas encore trouvé de mécanisme pour effectuer automatiquement cette translation sur des projets de 80 000 et 120 000 lignes de code

    Il faut dire que je n'ai pas vraiment cherché parce que je ne crois pas aux miracles alors je fais les translations manuellement quand j'ai le temps.
    Ceci dit si tu as mécanisme plus rapide alors je suis preneur.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  18. #18
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    A part bcp, bcp, bcp de patience, je n'ai hélas pas de solution.



    Bon dev.

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

Discussions similaires

  1. problème virgule flottante de delphi
    Par khadi8 dans le forum Langage
    Réponses: 4
    Dernier message: 14/02/2012, 17h27
  2. Problème de virgule flottante
    Par lolitta_dz dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/03/2008, 12h21
  3. Problème de virgule flottante
    Par breizh44 dans le forum Débuter
    Réponses: 9
    Dernier message: 21/02/2008, 16h23
  4. Problème virgule flottante
    Par cretindezalpes dans le forum Delphi
    Réponses: 18
    Dernier message: 15/06/2007, 11h34
  5. Probléme de débordement en virgule flottante
    Par wikers dans le forum Langage
    Réponses: 7
    Dernier message: 05/08/2005, 17h35

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