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

Free Pascal Discussion :

Différences entre Delphi et FPC


Sujet :

Free Pascal

  1. #1
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut Différences entre Delphi et FPC
    Bonjour,

    j'ai testé FPC pour WinCE et j'ai du modifier (entre autre) deux choses dans un programme Delphi pour que ça fonctionne

    1) Rewrite sur un TextFile me retourne "File not found" ?!

    2) Val('123abc',i,e) donne i à 0 alors qu'il vaut 123 sous Delphi

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 945
    Points : 59 442
    Points
    59 442
    Billets dans le blog
    2
    Par défaut
    Bonjour,
    Citation Envoyé par Paul TOTH
    Val('123abc',i,e) donne i à 0 alors qu'il vaut 123 sous Delphi
    Ah, j'ignorais que, sous Delphi, Val renvoyait la valeur numérique de la chaîne jusqu'au premier caractère invalide. A partir de quelle version ?

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Citation Envoyé par Alcatîz
    Bonjour,

    Ah, j'ignorais que, sous Delphi, Val renvoyait la valeur numérique de la chaîne jusqu'au premier caractère invalide. A partir de quelle version ?
    ah je ne sais pas, je viens de vérifier, ce n'est pas le cas sous BP7

    mais ça le fait sous Delphi 6 en tout cas.

  4. #4
    Membre éclairé

    Inscrit en
    Avril 2003
    Messages
    284
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 284
    Points : 773
    Points
    773
    Par défaut
    Pour ceux que celà interesserait,

    Voici un code (rip asm) réagissant exactement comme le val de delphi...
    ce code se compile avec freepascal avec la balise :
    {$ASMMODE Intel}


    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    procedure Val2(s: string; var v,Code: integer);
    var
    po : pointer;
    p: pchar;
    i : integer;
    begin
    po := addr(Code);
    p:= pchar(s);
    asm
            mov edx,dword ptr[po];
            mov eax,p;
     
    @@2ea4:
            push ebx
            push esi
            push edi
            mov esi,eax
            push eax
            test eax,eax
            je @@2f1a
            xor eax,eax
            xor ebx,ebx
            mov edi,$0ccccccc
    @@2eb7:
            mov bl,byte ptr ds:[esi]
            inc esi
            cmp bl,$020
            je @@2eb7
            mov ch,0
            cmp bl,$02d
            je @@2f28
            cmp bl,$02b
            je @@2f2a
    @@2ecb:
            cmp bl,$024
            je @@2f2f
            cmp bl,$078
            je @@2f2f
            cmp bl,$058
            je @@2f2f
            cmp bl,$030
            jnz @@2ef2
            mov bl,byte ptr ds:[esi]
            inc esi
            cmp bl,$078
            je @@2f2f
            cmp bl,$058
            je @@2f2f
            test bl,bl
            je @@2f10
            jmp @@2ef6
    @@2ef2:
            test bl,bl
            je @@2f23
    @@2ef6:
            sub bl,$030
            cmp bl,9
            ja @@2f23
            cmp eax,edi
            ja @@2f23
            lea eax,dword ptr ds:[eax+eax*4]
            add eax,eax
            add eax,ebx
            mov bl,byte ptr ds:[esi]
            inc esi
            test bl,bl
            jnz @@2ef6
    @@2f10:
            dec ch
            je @@2f1d
            test eax,eax
            jge @@2f6c
            jmp @@2f23
    @@2f1a:
            inc esi
            jmp @@2f23
    @@2f1d:
            neg eax
            jle @@2f6c
            js @@2f6c
    @@2f23:
            pop ebx
            sub esi,ebx
            jmp @@2f6f
    @@2f28:
            inc ch
    @@2f2a:
            mov bl,byte ptr ds:[esi]
            inc esi
            jmp @@2ecb
    @@2f2f:
            mov edi,$0fffffff
            mov bl,byte ptr ds:[esi]
            inc esi
            test bl,bl
            je @@2f1a
    @@2f3b:
            cmp bl,$061
            jb @@2f43
            sub bl,$020
    @@2f43:
            sub bl,$030
            cmp bl,9
            jbe @@2f56
            sub bl,$011
            cmp bl,5
            ja @@2f23
            add bl,$0a
    @@2f56:
            cmp eax,edi
            ja @@2f23
            shl eax,4
            add eax,ebx
            mov bl,byte ptr ds:[esi]
            inc esi
            test bl,bl
            jnz @@2f3b
            dec ch
            jnz @@2f6c
            neg eax
    @@2f6c:
            pop ecx
            xor esi,esi
    @@2f6f:
            mov dword ptr ds:[edx],esi
            pop edi
            pop esi
            pop ebx
            mov i,eax
     
     
    end;
      v:=i;
     
    end;
    la procedure val étant codé en dur au sein meme du compilateur de Delphi, son code source n'est pas disponible sans s'y pencher de très très près...

    Dans l'espoir que ce bout de code sera utile...

Discussions similaires

  1. différence entre Delphi 7 et Delphi 2007
    Par Henri-gp dans le forum Débuter
    Réponses: 2
    Dernier message: 18/06/2011, 13h28
  2. Différence entre Delphi 2007 sp1 et sp3
    Par Coussati dans le forum EDI
    Réponses: 2
    Dernier message: 08/11/2007, 04h27
  3. Différence entre Delphi 7 et Delphi 2007
    Par franck SEFIC dans le forum EDI
    Réponses: 5
    Dernier message: 25/09/2007, 16h19
  4. Différences entre C++ Builder et Delphi ?
    Par hitmman dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 22/07/2007, 21h56
  5. [Couleur] Différence entre Delphi, Php/Html
    Par Rayek dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2005, 13h06

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