Acceptation des données sous forme de colonne, conversion en chaîneJ'essaie de faire ce qui suit :
Acceptez cette entrée de l'utilisateur :
A1234965
A1233339
A1234736
A123494Z
A1233114
Convertissez-le en chaîne : "A1234965,A1233339,A1234736,A123494Z,A1233114"
Sans limite de longueur pour la "colonne" saisie. Je souhaite que l'utilisateur colle la "colonne" dans une fenêtre contextuelle qui le demande, puis stocke ces données sous la forme de la chaîne ci-dessus. Mon vrai problème est de trouver un moyen d'accepter cette entrée de l'utilisateur ("la zone d'édition de texte" ne laissera pas un format de colonne être collé). Ensuite, bien sûr, je ne sais pas comment convertir cette entrée dans le format de chaîne dont j'ai besoin. Toute aide serait appréciée. Merci!
Automatisation et scriptRe : Accepter des données sous forme de colonne, les convertir en chaîneUtiliser la fonction Concat Items()
names default to here(1);
x={"aa","bb"};
y=concat items(x,",");Re : Accepter des données sous forme de colonne, les convertir en chaîneVous devrez d'abord diviser les données en utilisant Mots() avant d'utiliser Concat Items(). Selon l'endroit d'où les données sont collées, vous devrez parfois effectuer des substitutions avant d'utiliser Words(). Ceux-ci peuvent être réalisés avec Regex () utilisant GLOALREPLACE ou Remplacer()/Remplacer dans() .
Il peut également être judicieux de supprimer les doublons (les tableaux associatifs peuvent être utilisés pour cela, s'il n'est pas important qu'ils soient classés par ordre alphabétique).
Re : Accepter des données sous forme de colonne, les convertir en chaîneMerci, je vais certainement utiliser la fonction concat. Mon gros problème est de prendre en compte l'entrée de l'utilisateur. Ils copieraient une colonne d'une table de données et la colleraient dans une zone d'édition. Dans mon code actuel (voir ci-dessous), il ne prendra que la première cellule de la colonne copiée... Je suppose que c'est parce que j'utilise une "zone d'édition de texte" et le type de données Texte - existe-t-il une zone d'édition et un type de données qui pourraient prendre des données formatées comme ceci ? :
A1234965
A1233339
A1234736
A123494Z
A1233114
Voici mon code actuel :
Lots = "abc";
w = New Window("Lot(s) of Interest",
Border Box(top(50), bottom(50), Left(50), Right(50),
V List Box(
H Center Box(Text Box("Lot(s) of Interest Input")),
Spacer Box(size(1, 30)),
H List Box(Text Box("Lots: "), b1 = Text Edit Box(Lots)),
Spacer Box(size(1, 10)),
H Center Box(
Button Box("Save",
Lots = b1 << get text;
w << closeWindow;
)
)
)
)
);Re : Accepter des données sous forme de colonne, les convertir en chaîneSalut @aidanweb ,
Il semble que vous soyez déterminé à analyser l'entrée, mais que l'affichage de l'entrée vous pose des problèmes. Il peut sembler que la zone d'édition de texte ne prend qu'une seule ligne alors qu'en fait toutes les lignes se collent très bien, mais la hauteur de la zone ne vous permet pas de les voir (si vous faites des flèches vers le haut et vers le bas dans la zone d'édition vous verrez les autres lignes).
Ce que je ferais, c'est pré-dimensionner la zone d'édition lors de la création de la boîte de dialogue à peu près à la taille attendue de la pâte. Vous pouvez le faire en ajoutant quelque chose comme :
b1<<SETNLINES></SETNLINES>

J'espère que ça aide!
@julien
Lots = "abc";
w = New Window("Lot(s) of Interest",
Border Box(top(50), bottom(50), Left(50), Right(50),
V List Box(
H Center Box(Text Box("Lot(s) of Interest Input")),
Spacer Box(size(1, 30)),
H List Box(Text Box("Lots: "), b1 = Text Edit Box(Lots)),
Spacer Box(size(1, 10)),
H Center Box(
Button Box("Save",
Lots = b1 << get text;
w << closeWindow;
)
)
)
)
);
b1<<SetNLines(10)<<set width(150);
Re : Accepter des données sous forme de colonne, les convertir en chaîne
Re : Accepter des données sous forme de colonne, les convertir en chaîneComme je l'ai dit plus tôt, utilisez Words() pour le diviser en une liste. Utilisez ensuite Concat Items() pour combiner cette liste en une chaîne. Il peut suffire d'utiliser \!N comme séparateur avec Words() mais parfois cela peut ne pas fonctionner correctement
Names Default To Here(1);
str = "abc
def";
lst = Words(str, "\!N");
str2 = "'" || Concat Items(lst, "','") || "'";
show(str, lst, str2);
Re : Accepter des données sous forme de colonne, les convertir en chaîneMerci, cela aide des tonnes. J'ai toujours un problème pour convertir l'entrée en une liste, formatée comme suit : {"aa", "bb", "cc"}. J'aurais pensé que la fonction de mots fonctionnerait tout de suite, car l'entrée n'est qu'une longue chaîne .... mais je fais probablement quelque chose de mal. J'ai joint une capture d'écran de mon journal.

Re : Accepter des données sous forme de colonne, les convertir en chaîneVous avez oublié d'inclure le délimiteur approprié dans le Mots() fonction. Dans votre cas, vous voulez un caractère de fin de ligne (ou des caractères) comme délimiteur. Voir le tableau des séquences d'échappement pour les chaînes entre guillemets dans le Règles de syntaxe JSL .
Essaye ça:
Names Default To Here( 1 );
Lots = "abc";
w = New Window( "Lot (s) of Interest",
Border Box( top( 50 ), bottom( 50 ), Left( 50 ), Right( 50 ),
V List Box(
H Center Box( Text Box( "Lot (s) of Interest Input" ) ),
Spacer Box( size( 1, 30 ) ),
H List Box( Text Box( ("Lots: ") ), b1 = Text Edit Box( Lots, <<SETNLINES></SETNLINES> //include the delimiters for carriage and new line in the Words() function
newlots = Words( Lots, "\!r\!n" );
Show( Lots );
Show( newlots );
)
)
)
)
);