Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 18 sur 18
  1. #1
    Membre habitué
    Homme Profil pro Tarek Kouda
    Développeur informatique
    Inscrit en
    décembre 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Nom : Homme Tarek Kouda
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2012
    Messages : 110
    Points : 149
    Points
    149

    Par défaut Est-ce possible en Delphi !

    bon soir a tt le monde
    voisi un petite program avec un autre langage de programation (clipper)

    A = 5 // je declare une variable numerique A et sa valeur 5
    B = 'A' //je declare une variable alphanurerique B qui a la valeur 'A'
    juste pour l'instant tt est posible en delphil

    la commande suivante est
    C = &B
    en appel '&' un macro en clipper il signifie que C recoit la valeur d'une variable , le nom de cette variable se trouve dans une autre variable qui est B dans notre cas, c'est a dire C recoit 5
    la question est: ést ce que ça est posible en delphi..!

  2. #2
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 482
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : Réunion

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 482
    Points : 14 364
    Points
    14 364

    Par défaut

    pour faire simple, non...de façon moins directe c'est envisageable.

    le langage Pascal est compilé en binaire à un niveau ou le nom des variables n'a plus d'existence. A devient une position en mémoire qui n'a qu'une adresse et aucun nom.

    par contre les classes objets avec leurs propriétés bénéficient des Run Time Type Informations (RTTI) qui permettent de retrouver la propriété "A" d'un objet. C'est ce que fait l'IDE Delphi quand on défini la propriété "Caption" d'un objet par exemple, c'est bien le nom "Caption" qui est stocké dans le DFM et GetProperty permet de la retrouver.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  3. #3
    Membre chevronné Avatar de peter27x
    Inscrit en
    janvier 2007
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 1 024
    Points : 603
    Points
    603

    Par défaut

    Hello,
    si je puis me permettre, n'ayant pas les connaissances de Paul Toth, juste une petite remarque, je crois que dans ton cas, tarekk73, c'est possible mais il suffit que B soit déclaré comme un simple pointeur.
    Ensuite tu affecte à B l'adresse de la variable A.
    Pour finir, tu pourras affecter à C la valeur contenue à l'adresse stockée dans B.
    Il faudra surement aussi "caster" ce que tu récupèreras du pointeur B (afin que Delphi te retourne le format attendu (integer ou byte ici, au choix)).
    J'espère que c'est assez clair...

  4. #4
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 482
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : Réunion

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 482
    Points : 14 364
    Points
    14 364

    Par défaut

    Citation Envoyé par peter27x Voir le message
    Hello,
    si je puis me permettre, n'ayant pas les connaissances de Paul Toth, juste une petite remarque, je crois que dans ton cas, tarekk73, c'est possible mais il suffit que B soit déclaré comme un simple pointeur.
    Ensuite tu affecte à B l'adresse de la variable A.
    Pour finir, tu pourras affecter à C la valeur contenue à l'adresse stockée dans B.
    Il faudra surement aussi "caster" ce que tu récupèreras du pointeur B (afin que Delphi te retourne le format attendu (integer ou byte ici, au choix)).
    J'espère que c'est assez clair...
    oui mais non

    tu parles de ceci:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var
      a: Integer;
      b: ^Integer;
      c: Integer;
    begin
      a := 5;
      b :=@a; // adresse de a
      c := b^; // récupère le 5 dans a
    end;
    mais ça ne fonctionne pas avec le nom 'a'
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  5. #5
    Membre chevronné Avatar de peter27x
    Inscrit en
    janvier 2007
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 1 024
    Points : 603
    Points
    603

    Par défaut

    Citation Envoyé par Paul TOTH Voir le message
    oui mais non

    tu parles de ceci:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var
      a: Integer;
      b: ^Integer;
      c: Integer;
    begin
      a := 5;
      b :=@a; // adresse de a
      c := b^; // récupère le 5 dans a
    end;
    mais ça ne fonctionne pas avec le nom 'a'
    Oui c'est exactement ce que je voulais dire. Ensuite effectivement ce n'est plus le nom 'a', mais son adresse, je suis bien d'accord, mais je voyais que ça pour approcher au plus près de ce qu'il cherche à faire (ou à reproduire).

  6. #6
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 482
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : Réunion

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 482
    Points : 14 364
    Points
    14 364

    Par défaut

    ceci dit, après il est toujours possible d'ajouter des rustines

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var
      noms: TStringList;
      a: Integer;
      b: string;
      i : Integer;
      c: Integer;
    begin
      noms := TStringList.Create;
      noms.AddObject('a', TInteger(@a));
      b := 'a';
      i := noms.IndexOf(b);
      c := PInteger(noms.Objects[i])^;
    end;
    et on pourra dériver TStringList pour lui ajouter des méthodes AddInteger(nom:string; Addr: PInteger); GetInteger(nom:string):Integer;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  7. #7
    Membre Expert
    Avatar de e-ric
    Homme Profil pro Eric BARBIER
    Développeur informatique
    Inscrit en
    mars 2002
    Messages
    1 098
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric BARBIER
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2002
    Messages : 1 098
    Points : 2 042
    Points
    2 042

    Par défaut

    Avis perso : les constructions exotiques de ces vieux langages de programmation n'ont en général pas beaucoup d'intérêt. Il vaut mieux comprendre l'intention du code et tenter de la traduire en exploitant au mieux les possibilités du langage.

    @+

    M E N S . A G I T A T . M O L E M

  8. #8
    Membre Expert
    Avatar de e-ric
    Homme Profil pro Eric BARBIER
    Développeur informatique
    Inscrit en
    mars 2002
    Messages
    1 098
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric BARBIER
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2002
    Messages : 1 098
    Points : 2 042
    Points
    2 042

    Par défaut

    Je précise "les constructions exotiques de ces vieux langages de programmation n'ont en général plus beaucoup d'intérêt. Il vaut mieux comprendre l'intention du code et tenter de la traduire au mieux avec les possibilités du nouveau langage, comme Delphi.

    M E N S . A G I T A T . M O L E M

  9. #9
    Membre expérimenté
    Inscrit en
    janvier 2009
    Messages
    599
    Détails du profil
    Informations forums :
    Inscription : janvier 2009
    Messages : 599
    Points : 512
    Points
    512

    Par défaut

    la commande suivante est
    C = &B
    Ce qu'il voulait je pense c'est mettre dans C la valeur contenue à l'adresse de B.
    Comme vous l'avez constaté.
    Mais pourquoi ne fait-il pas juste C=B ?

    Ou alors je ne comprend rien à cette heure-ci^^

    Tout a fait d'accord avec Eric :
    Avis perso : les constructions exotiques de ces vieux langages de programmation n'ont en général pas beaucoup d'intérêt. Il vaut mieux comprendre l'intention du code et tenter de la traduire en exploitant au mieux les possibilités du langage.
    C'est ce qu'il essaie de faire en choisissant Delphi non ?
    Cliquez ici et reprenez le pouvoir !
    A bas IE !, Google, et le pistage du net, testons DuckDuckGo.com
    Lords Of The Realm II Download : Lords of the realm 2
    Infos en anglais :Ici

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2005
    Messages
    5 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 5 192
    Points : 7 620
    Points
    7 620

    Par défaut

    Citation Envoyé par dragonno Voir le message
    Ce qu'il voulait je pense c'est mettre dans C la valeur contenue à l'adresse de B.
    Comme vous l'avez constaté.
    Mais pourquoi ne fait-il pas juste C=B ?

    Ou alors je ne comprend rien à cette heure-ci^^

    Tout a fait d'accord avec Eric :

    C'est ce qu'il essaie de faire en choisissant Delphi non ?
    Sauf que tu n'as pas compris. ce n'est pas C=B mais C=A donc C = 5 qu'il veut.
    B contient le nom d'une variable (dans ce cas c'est A) et quand il fait appel à C=&B cela doit lui retourner C = A donc C = 5.
    Modérateur Delphi Combattez la brute
    Aucune réponse aux sollicitations techniques par MP

    Le guide du bon forumeur :
    __________
    [Projet en cours] Des unités pour faciliter l'utilisation d'indy : EasyIndy 1.3

  11. #11
    Rédacteur/Modérateur
    Avatar de Roland Chastain
    Homme Profil pro Roland Chastain
    Inscrit en
    décembre 2011
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Nom : Homme Roland Chastain
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : décembre 2011
    Messages : 1 200
    Points : 2 970
    Points
    2 970

    Par défaut

    Citation Envoyé par Paul TOTH Voir le message
    ceci dit, après il est toujours possible d'ajouter des rustines

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var
      noms: TStringList;
      a: Integer;
      b: string;
      i : Integer;
      c: Integer;
    begin
      noms := TStringList.Create;
      noms.AddObject('a', TInteger(@a));
      b := 'a';
      i := noms.IndexOf(b);
      c := PInteger(noms.Objects[i])^;
    end;
    Bonjour Paul !

    J'ai regardé avec intérêt ton exemple mais je n'ai pas pu le compiler.

    Identificateur non déclaré : 'TInteger'
    Qu'est-ce que c'est que ce TInteger ?
    L'Art est long et le Temps est court.

  12. #12
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 020
    Points : 12 811
    Points
    12 811

    Par défaut

    Le TInteger est mentionné comme type personnalisé dans E2020: Type object ou class requis (Delphi)

    TInteger est peut-être un type de Paul dans ses lib perso car AddObject n'accepte pas un pointer non typé mais un TObject
    Code :
    noms.AddObject('a', TObject(@a));
    Avez-vous remarqué que tarekk73 a posé la question le 02/01/2013 et n'est pas revenu depuis 4 mois pour nous lire !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

    Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !

  13. #13
    Membre expérimenté
    Inscrit en
    janvier 2009
    Messages
    599
    Détails du profil
    Informations forums :
    Inscription : janvier 2009
    Messages : 599
    Points : 512
    Points
    512

    Par défaut

    Sauf que tu n'as pas compris.
    Ok, merci, je m'en doutais un peu
    D'où ma question...
    Cliquez ici et reprenez le pouvoir !
    A bas IE !, Google, et le pistage du net, testons DuckDuckGo.com
    Lords Of The Realm II Download : Lords of the realm 2
    Infos en anglais :Ici

  14. #14
    Membre habitué
    Homme Profil pro Tarek Kouda
    Développeur informatique
    Inscrit en
    décembre 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Nom : Homme Tarek Kouda
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2012
    Messages : 110
    Points : 149
    Points
    149

    Par défaut

    bon jour
    Avez-vous remarqué que tarekk73 a posé la question le 02/01/2013 et n'est pas revenu depuis 4 mois pour nous lire !
    non, j'ai tous lu, et j'ai pas trouver la bonne réponse ou bien c'est impossible de faire ça en Delphi.

    c'est juste une petite question qui ma passer dans la tête quant j'ai fait une petite comparaison entre deux langage de programmation et pour connaitre les capacités de mon langage de programmation préfére Delphi

    merci mes amies pour tout vos réponses

  15. #15
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 482
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : Réunion

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 482
    Points : 14 364
    Points
    14 364

    Par défaut

    Citation Envoyé par Roland Chastain Voir le message
    Qu'est-ce que c'est que ce TInteger ?
    c'est très probablement une erreur de saisie

    AddObject attend un TObject, c'est donc TObject qu'il faut lire et non TInteger
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  16. #16
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    septembre 2008
    Messages
    3 339
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 3 339
    Points : 5 352
    Points
    5 352

    Par défaut

    @ est un pointeur non typé si le contrôle de type est désactivé {$T-} et dans ce cas, AddObject('a', @a) fonctionne puisqu'un pointeur non typé est compatible avec tous les types de pointeurs

  17. #17
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 020
    Points : 12 811
    Points
    12 811

    Par défaut

    En fait, j'ai introduit "pointeur non type" mais j'aurais du plutôt dire 'pointeur non objet"

    Car AddObject n'accepte que du TObject, donc que ce soit 'pointer non type' ou 'pointeur typé int', ils seront refusés peu importe l'option ! non ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

    Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !

  18. #18
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    septembre 2008
    Messages
    3 339
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 3 339
    Points : 5 352
    Points
    5 352

    Par défaut

    Avec {$T-}, peu importe ce qui se cache derrière. A partir du moment où c'est un pointeur, le compilateur est content

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •