Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Débutant
Débutant Pour bien débuter avec Delphi
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/01/2013, 15h36   #1
tarekk73
Membre habitué
 
Homme Tarek Kouda
Développeur informatique
Inscription : décembre 2012
Messages : 72
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 : 72
Points : 102
Points : 102
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..!
tarekk73 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 16h17   #2
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 416
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

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

Informations forums :
Inscription : novembre 2002
Messages : 4 416
Points : 10 797
Points : 10 797
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%
Paul TOTH est actuellement connecté   Envoyer un message privé Réponse avec citation 11
Vieux 03/01/2013, 09h19   #3
peter27x
Membre expérimenté
 
Avatar de peter27x
 
Inscription : janvier 2007
Messages : 996
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 996
Points : 572
Points : 572
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...
peter27x est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/01/2013, 11h01   #4
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 416
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

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

Informations forums :
Inscription : novembre 2002
Messages : 4 416
Points : 10 797
Points : 10 797
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%
Paul TOTH est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/01/2013, 11h08   #5
peter27x
Membre expérimenté
 
Avatar de peter27x
 
Inscription : janvier 2007
Messages : 996
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 996
Points : 572
Points : 572
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).
peter27x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 06h09   #6
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 416
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

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

Informations forums :
Inscription : novembre 2002
Messages : 4 416
Points : 10 797
Points : 10 797
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%
Paul TOTH est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2013, 15h18   #7
e-ric
Membre émérite
 
Avatar de e-ric
 
Homme Eric BARBIER
Développeur informatique
Inscription : mars 2002
Messages : 592
Détails du profil
Informations personnelles :
Nom : Homme Eric BARBIER
Âge : 44
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2002
Messages : 592
Points : 869
Points : 869
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 L E M
e-ric est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 24/04/2013, 00h10   #8
e-ric
Membre émérite
 
Avatar de e-ric
 
Homme Eric BARBIER
Développeur informatique
Inscription : mars 2002
Messages : 592
Détails du profil
Informations personnelles :
Nom : Homme Eric BARBIER
Âge : 44
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2002
Messages : 592
Points : 869
Points : 869
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 L E M
e-ric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2013, 03h49   #9
dragonno
Membre éprouvé
 
Inscription : janvier 2009
Messages : 582
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 582
Points : 493
Points : 493
Citation:
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 :
Citation:
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
dragonno est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 24/04/2013, 09h11   #10
Rayek
Modérateur
 
Avatar de Rayek
 
Homme
Développeur informatique
Inscription : mars 2005
Messages : 4 993
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
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 : 4 993
Points : 7 729
Points : 7 729
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
Rayek est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 24/04/2013, 10h58   #11
Roland Chastain
Membre Expert
 
Homme Roland Chastain
Inscription : décembre 2011
Messages : 687
Détails du profil
Informations personnelles :
Nom : Homme Roland Chastain
Âge : 39
Localisation : Mali

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : décembre 2011
Messages : 687
Points : 1 002
Points : 1 002
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.

Citation:
Identificateur non déclaré : 'TInteger'
Qu'est-ce que c'est que ce TInteger ?
__________________
L'Art est long et le Temps est court.
Roland Chastain est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2013, 13h36   #12
ShaiLeTroll
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 9 190
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

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

Informations forums :
Inscription : juillet 2006
Messages : 9 190
Points : 13 239
Points : 13 239
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é !
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/04/2013, 14h25   #13
dragonno
Membre éprouvé
 
Inscription : janvier 2009
Messages : 582
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 582
Points : 493
Points : 493
Citation:
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
dragonno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2013, 17h08   #14
tarekk73
Membre habitué
 
Homme Tarek Kouda
Développeur informatique
Inscription : décembre 2012
Messages : 72
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 : 72
Points : 102
Points : 102
bon jour
Citation:
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
tarekk73 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2013, 13h31   #15
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 416
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

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

Informations forums :
Inscription : novembre 2002
Messages : 4 416
Points : 10 797
Points : 10 797
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%
Paul TOTH est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2013, 15h25   #16
Andnotor
Rédacteur/Modérateur
 
Avatar de Andnotor
 
Inscription : septembre 2008
Messages : 2 856
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 2 856
Points : 5 966
Points : 5 966
@ 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
__________________
Mes tutoriels Delphi
Andnotor est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/04/2013, 16h54   #17
ShaiLeTroll
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 9 190
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

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

Informations forums :
Inscription : juillet 2006
Messages : 9 190
Points : 13 239
Points : 13 239
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é !
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2013, 18h56   #18
Andnotor
Rédacteur/Modérateur
 
Avatar de Andnotor
 
Inscription : septembre 2008
Messages : 2 856
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 2 856
Points : 5 966
Points : 5 966
Avec {$T-}, peu importe ce qui se cache derrière. A partir du moment où c'est un pointeur, le compilateur est content
__________________
Mes tutoriels Delphi
Andnotor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h15.


 
 
 
 
Partenaires

Hébergement Web