Indice de chaine et notation à point

: Patrick EMANUEL

Le mot ‘string’, tu le places où (je m’attends au pire vu que l’on
est vendredi :wink: )
DTC, forcément : je m’étonne que tu n’ais pas lu https://desencyclopedie.org/wiki/DTCla doc>, la parade est pourtant bien décrite.

: Arnaud DE MONTARD

Je parle pas avec des individus qui nomment une variable toto ; même
un vendredi, il y a des limites à la décence.
Dit l’individu qui pond un code illisible, incompréhensible, et qui ne marche pas… :razz: :mrgreen:

: Patrick EMANUEL

J’utilise le double crochet que dans des cas extrême
Dès lors que l’indice est valide, y’a pas plus rapide, le sous chaine va trop me plomber. En fait d’extrême, c’est la première fois de ma vie que je vois 500000 documents dans un dossier.
PS: Je t’ai répondu initialement depuis le train avec une connexion
plus que moyenne, d’où l’absence de copie écran :wink:
Fallait demander un wagon avec TSE.

: Arnaud DE MONTARD

Dès lors que l’indice est valide, y’a pas plus rapide, le sous chaine
va trop me plomber. En fait d’extrême, c’est la première fois de ma
vie que je vois 500000 documents dans un dossier.

euh, t’as regardé la commande https://doc.4d.com/4Dv17/4D/17.3/Path-to-object.301-4620426.fe.htmlPath to object >

Plutôt Folder.files()

[edit] 17R5+

Hello,
je suis en 17r4, donc je n’avais pas de possibilité d’utiliser ces commandes du thème “fichiers et dossiers”. En même temps, je doute que Folder.files parvienne à dresser la liste des documents de ce monstre. Jusqu’ici, seul le terminal y est arrivé, en prenant tout son temps. Le Finder, carbon copy cloner ou LISTE DES DOCUMENTS se réfugient d’emblée derrière la roue multicolore.

Et bien 4D sans sort pas mal !

Avec cette ligne de code :

<code 4D>
$c:=Folder(fk applications folder).parent.files(fk recursive)
</code 4D>

Je récupère une collection de 1 253 656 fichiers. Certes, ce n’est pas instantané, mais quand même.

C’est bon à savoir, merci Vincent ! Ceci posé, je suppose que ce million de fichiers est correctement “balancé” en sous dossiers, non (*) ? Auquel cas, l’arborescence de l’objet l’est aussi, et la méthode que j’ai posté ici (faute de 17R-plus-que-4) vient aussi au bout de très grosses taille (testé jusqu’à 300000 documents, après j’ai craqué, c’est fatigant en interprété avec une version https://forums.4d.com/Post/FR/28200955/1/28201767#28202168qui coince sur les slash dans les noms>).

(*) je parle bel et bien d’un dossier de 500000 documents tous au même niveau, vendredi ou pas.

: Arnaud DE MONTARD

je suppose que ce million de fichiers est correctement “balancé” en
sous dossiers

Non pas avec ce test. Je voulais avoir immédiatement un grand nombre de fichiers (dans ce cas tous les fichier de mon disque) à plat sans faire beaucoup de code.

Hmmm, le résultat de la collecte à plat en mémoire, en 64bits, ça ne parait pas monstrueux mais j’imagine que tu n’as pas 1 million de fichiers à la racine du volume :mrgreen:

Bon, en tout cas ça fait envie, ces nouvelles commandes…

<code 4D>
$c:=Folder(fk applications folder).parent.files(fk recursive)
</code 4D>
La simplification de cette syntaxe est impressionnante !

On a déjà parlé ici du fait que, dans ces comparaisons, la partie à évaluer doit être à droite de l’opérateur de comparaison : me trompé-je ?

J’ai trouvé plus simple depuis :slight_smile:

<code 4D>
$c:=Folder("/").files(fk recursive)
</code 4D>

: Bernard ESCAICH

La simplification de cette syntaxe est impressionnante !
Oui, j’ai été tout aussi impressionné…et frustré d’avoir dû me taper un truc similaire en code classique qq jours avant. Vivement que je puisse larguer le 32bits.

: Bernard ESCAICH

On a déjà parlé ici du fait que, dans ces comparaisons, la partie à
évaluer doit être à droite de l’opérateur de comparaison : me
trompé-je ?
Avec l’opérateur d’égalité et des chaines, @ n’est plus joker à gauche du comparateur et ne doit pas être doublé à droite ; à part ça, il me semble que c’est kif-kif : (A = B) = (B = A). Dans mon cas, le sens change la façon dont 4D interprète le code, mais j’y vois plus une faiblesse de sa part qu’une erreur de syntaxe de la mienne, non mais sans blagues.

: Vincent DE LACHAUX

J’ai trouvé plus simple depuis :slight_smile:
Bravo.

Tu as essayé f.f ? :lol: