Bonjour,
Est il possible en delphi, d'avoir un tableau a deux dimensions avec plusieurs types ?
Bonjour,
Est il possible en delphi, d'avoir un tableau a deux dimensions avec plusieurs types ?
Mon problème, est que je dois récupérer plusieurs champs d'une table oracle dans un tableau, en Delphi, et ces champs là ne sont pas tous du même type.
On ne peut avoir de tableau avec des colonnes de types différents (émulation possible avec pointeurs ou variants). On utilise couramment dans ce cas un tableau d'enregistrements :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 type TMyRec = record id: integer; name: string; end; var MyTab: array[1..100] of TMyRec;
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
Donc je créer un type ou j'indique tout les champs de ma table que j'ai besoin d'avoir en leur indiquant leur type et ensuite je parcours ma table et je récupère les champs que j'envoi dans mon tableau et cela marcherai du coup ? Mais dans ce cas la il faudrait que je fasse un table a deux dimensions non ?
J'ai un problème il ne reconnait pas mon type, lorsque j’écris type il ne se met pas en gras, mon langage est du PascalScript
La deuxième dimension du tableau est "remplacée" par la réunion des champs au sein de l'enregistrement :
Quel est précisément ton langage de script ? RemObjects ? Ces derniers permettent apparemment les enregistrements.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 MyRec[1].id:=123; MyRec[1].Name:='toto'; // ou with MyRec[i] do begin id:=123; Name:='toto'; end;
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
dac mais je peux aussi faire une boucle qui parcourt ma table pour afficher les valeurs ensuite dans le tableau parce que sinon si j'ai 20 valeur je devrais faire 20 fois :
J'utilise winpro, et dedans fastreport avec comme langage PascalScript mais pour moi c'est pareil que le Delphi
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 MyRec[1].id:=123; MyRec[1].Name:='toto'; // ou with MyRec[i] do begin id:=123; Name:='toto'; end; MyRec[1].id:=456; MyRec[1].Name:='titi'; // ou with MyRec[i] do begin id:=456; Name:='titi'; end; ...
Pas de bol pour les enregistrements ; en effet, on peut lire dans la documentation de FastScript :qui n'est donc pas PascalScript...Missing features
- No type declarations (records, classes) in the script; no records, no pointers, no sets
(but you can use 'IN' operator - "a in ['a'..'c','d']"), no shortstrings, no GOTO statement.
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
Les record sont une excellent solution
Mais c'est possible avec des champs string. Et c'est d’ailleurs la solution que je privilégie.
Ou encore (ce que la solution précédente amène), tu déclares plusieurs tableau à une dimension et chaque tableau a son type propre, et chaque indice de chaque tableau correspond au même enregistrement.
Je ne suis pas sûr d'avoir bien compris tout le problème, malgré le MP.
S'il s'agit de remplacer une fonction VB6 externe par un script FastScript dans FastReport de WinPro7, il n'y a pas de rapport avec Delphi.
S'il s'agit de remplacer un programme VB6 par un programme Delphi, pourquoi aurait-on des limitations de types de données liées à un langage de script ? D'autant que le traitement est indépendant et que le lien entre script et fonction Delphi concerne une procédure, donc sans paramètres.
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
Je sais pas si c'est dans le cadre du problème, mais pour récupérer ta table sous forme de tableau 2D,
tu crées un type record, comme on t'a déjà expliqué, avec les types voulus pour chaque champ de ta DB, et ensuite tu fait un array de record de la taille voulue?
Envoyé par deuche
Oui ca j'ai bien compris j'avais pensé a faire aussi avec un enregistrement mais mon environnement ne me permet pas de faire cela il ne reconnait pas le mot clé type
Euh, t'es sûr que tu codes dans l'IDE delphi? Que tu déclares ton type au bon endroit?
Envoyé par deuche
Non je code dans winpro avec fastreport. Sinon est il possible de créer une base de donnée via delphi, comme çà je créer une nouvelle base de donnée avec tout mes champs plus trois nouveaux champs
Donc attend je résume:
tu nous demande si tu peux peindre en vert avec un crayon bleu, alors que t'utilise un crayon rouge?
T'a pas un peu l'impression que t'es à côté de la plaque?
Pour ta question concernant Delphi, non (enfin je ne crois pas) que tu puisses créer une DB sous Delphi, par contre tu peux très bien en attaquer une (paradoxe, Firebird, mySql, PostGre, Oracle, le choix est très vaste).
Envoyé par deuche
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager