|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre expérimenté
![]() ![]() Titouan Créac'hEpitech Inscription : mai 2009 Messages : 249 ![]() |
Bonjour,
je voulais savoir si il était possible de parcourir un record avec une boucle for. En gros, j'ai un type Tressources qui contient des pointeurs vers des images et pour savoir si elle sont bien toutes chargées, j'aimerais utiliser quelque chose dans ce style. Code :
Merci. |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 414 ![]() |
Qia,
Ce que tu veux faire est impossible, c'est sans doute le moment de penser à faire un tableau.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
00
|
|
|
#3 | |||||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 409 ![]() |
Citation:
prenons un exemple Code :
Code :
__________________
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% |
|||||
|
00
|
|
|
#4 |
![]() ![]() Inscription : avril 2002 Messages : 2 275 ![]() |
Même si ca marche (ce que je ne remets pas en question), ce n'est à mon avis pas la meilleure chose à faire et à montrer à des gens qui étudient le Pascal. Sans vouloir vexer personne, ce genre de code ressemble pour moi plus à du bricolage qu'à de la programmation. De plus ce genre de code généralement plus difficile à maintenir à la longue.
Je pencherai aussi pour un pointeur sur un tableau.
__________________
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal |
|
|
00
|
|
|
#5 | ||||||
|
Membre expérimenté
![]() ![]() Titouan Créac'hEpitech Inscription : mai 2009 Messages : 249 ![]() |
dans mon cas, j'ai :
Code :
Code :
Code :
merci
|
||||||
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 414 ![]() |
Bue,
Citation:
C'est sûr qu'avec ce genre de code, on peut dire que "impossible n'est pas Pascal", mais j'exclus systématiquement ce type d'acrobaties, ne serait-ce qu'en pensant aux éventuels repreneurs du code.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
|
00
|
|
|
#7 | |||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 409 ![]() |
Citation:
Code :
__________________
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% |
|||
|
10
|
|
|
#8 | |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 409 ![]() |
Citation:
c'est le cas par exemple quand on veux invoquer une méthode héritée en sautant l'ancètre direct...comme avec l'objet TPath de Delphi XE2
__________________
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% |
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 414 ![]() |
Zoi,
Peut-être, mais ce n'est pas une raison pour pour coder le cas présent comme tu le proposes, des solutions propres gèrent parfaitement la situation, donc. Si un élève me rendait une telle solution, c'est le zéro assuré, agrémenté d'un commentaire genre "Je regrette de ne pouvoir mettre une note négative" [si, si, j'ai déjà fait ça Franchement, pour imaginer ce genre de code alors qu'on résout le problème "proprement", je n'aimerais pas devoir reprendre tes sources.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
00
|
|
|
#10 | |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 409 ![]() |
Citation:
La question de titeee était de pouvoir "parcourir un record avec une boucle for", et non "comment déclarer ma structure pour pouvoir la parcourir dans une boucle". De plus, sans ta réponse initiale je lui aurais demandé qu'elle état son problème pour lui proposer une solution, ce que je fais un peu plus bas avec une solution qui répond à son problème : "j'aimerai bien utiliser des noms complets comme dans le record si dessus". En conclusion je dirais qu'il ne sert à rien d'avoir un code propre si on ne comprend pas ce que l'on fait. Pour la petite histoire, il y a 20 ans de cela alors que j'étais en cours de Pascal à l'université, le prof nous demandait un algo qui transformait la chaîne "1234" en "4321" (ou quelque chose du genre). Sa réponse passait par le traitement de chaîne de caractère. Moi j'ai de suite pensé à le faire en numérique en multipliant par 10 à chaque itération...ben ça ne l'a pas convaincu
__________________
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% |
|
|
00
|
|
|
#11 |
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 414 ![]() |
Dia,
Ça ne l'a pas convaincu parce que ta solution n'était pas générale., ne prenant en compte que les entiers positifs. Mais bon, la question aurait dû être mieux posée. Et rappel, les idées des débutants pour leur programme ne doit pas fixer le fait de faire du source tarabiscoté, mais doit conduire à leur donner une meilleure solution, sinon ça va carrément à contre-courant d'un apprentissage correct.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
00
|
|
|
#12 | |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 409 ![]() |
Citation:
je vois très souvent des tutos sur telle ou telle technologie qui en énonce les principes sans jamais expliquer à quoi ça peu bien servir ! c'est pourtant ça qui est important. j'aime bien en fait ma réponse à titeee, elle est instructive, on y apprend (ou pas) qu'un record comprenant des images est en tout point identique à un tableau d'images. On y apprend comment manipuler un pointeur sur un tableau variable. Technique qu'on pourra réutiliser pour traiter une portion du tableau au besoin. C'est une réponse plus riche à mon sens qu'un "Ce que tu veux faire est impossible" c'est avec ces idées en tête que j'ai écris "Delphi 7 Studio" qui a été très bien accueilli au passage
__________________
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% |
|
|
00
|
|
|
#13 |
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 414 ![]() |
Kue,
Bof ... Je n'y ai rien appris du tout (je parle de ta fameuse réponse), et je persiste à penser que ce n'est pas le genre de code à donner à un débutant. Ces "astuces" peuvent facilement être acquises et/ou inventées quand on commence à maîtriser, mais généralement perturbent beaucoup les débutants. Remets-toi dans ce cas : tu es débutant, et essaye d'imaginer comment tu aurais réagi devant un tel code. Je sais, tu vas dire "j'aurais appris ...", mais ça, c'est parce que tu ne vois que de ton point de vue actuel. Bien, je vais briser là, sinon on y sera encore après 2 ou 3 éternités.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
00
|
|
|
#14 |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 409 ![]() |
je suppose que tu savais déjà ce qui est dit dans ma réponse mais justement un débutant ne le sait pas, il n'a pas d'à priori, il fait des choix parfois inadapté et c'est toujours parce qu'il ne sait pas ce qu'il fait.
j'enrage à chaque fois que j'ai un problème sur Linux et que je ne trouve dans les HOWTO que des lignes de commande à passer, des paramètres à changer et à croiser les doigts pour que ça fonctionne sans aucune explication du pourquoi ! en tant que débutant j'aurais pris ma seconde réponse qui correspond plus à mon attente et j'aurais mis de côté les pointeurs en me disant que c'est bien compliqué pour parcourir un bête record, pourquoi donc n'a-t-on pas un for i in Record comme on peut le faire en Javascript (ce qui est une bêtise puisque Javascript n'a pas de Record mais des objets). c'était d'ailleurs ma première réaction quand Turbo Pascal 5.5 a introduit l'objet dans le langage Pascal...j'ai voulu m'y mettre et j'ai trouvé cela compliqué et que ça n'apportait rien à mes programmes. Je me suis forcé à créer des objets qui se sont avérés être des singletons avec des méthodes statiques, rien de bien intéressant, une simple unité remplaçait cela très bien. Même le polymorphisme pouvait être obtenu par l'ordre des unités dans le USES...et un jour, j'ai regardé un problème sous un autre angle, j'ai découvert que l'objet était une réponse efficace à une problématique, j'ai compris à quoi ça servait. Ce n'est pas pour autant que je fais du 100% objet, bien au contraire, je continue à utiliser des unités en lieu et place de singleton quand je n'ai pas besoin de plus. Je crée des bibliothèques de fonctions qui ne sont pas des méthodes de classe utilitaires car ça ne sert à rien d'en faire un objet ! Bref, pour moi la connaissance s'acquiert par la compréhension et non par le conformisme. Les explications sont donc indispensables. C'est quand on est débutant qu'il faut expérimenter des choses tordues, pour les comprendre et comprendre pourquoi ce n'est pas comme ça qu'on travaille le plus efficacement. Mais bon les enseignants n'aiment généralement pas les électrons libre ils sont là pour transmettre un savoir issu d'une longue expérience et non pour faire trébucher les débutants sur les pavés de la connaissance. Montaigne ne disait-il pas "enseigner, ce n'est pas remplir un vase, c'est allumer un feu" ?
__________________
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% |
|
10
|
|
|
#15 |
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 414 ![]() |
Xoe,
Oui, mais l'expérience m'a appris que la plupart des acrobaties dans le code sont dues à l'inadéquation de la structure des données. Donc, donner une piste qui conduit au changement de cette structure est une bonne réponse didactique, qui oriente vers une solution - changer la structure des données - qu'il faut toujours envisager quand on commence à patauger un peu avec le code, ça s'avère habituellement payant, même si ça oblige parfois - souvent ! - à reprendre une partie de code déjà écrite.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com