Afficher le contenu d'un Fichier txt dans une CboBox

Bonjour, j’utilise ce code Vb6 pour afficher le contenu du fichier txt dans une CboBox.
je suis entrain de basculer vers Xojo, quelqu’un pourra t’il m’aider a rendre ce code lisible par Xojo ?

Dim star As String
’ Ouvre le fichier donnes etoiles
Open App.Path & “\avStars.txt” For Input As #1

’ Lit les donnes etoiles entre les sperateur bar | caractre,
’ tout le reste est ignor
With Cbo_Stars

While Not EOF(1)
Line Input #1, star
If InStr(star, “|”) > 0 Then .AddItem star
Wend
.ListIndex = 0
End With

Close 1

Quand on poste du code dans le forum, il est prfrable de le coller (ou entrer) comme code, en cliquant auparavant l’icne code : .

Pour lire un fichier texte, utilisez le premier exemple la page http://documentation.xojo.com/index.php/TextInputStream

Au lieu de TextArea1.Text = t.ReadAll employez star = t.ReadLine .

Voir http://documentation.xojo.com/index.php/StandardInputStream.ReadLine

Je n’ai pas ide de ce qu’est une “cboBox” mais si cela ressemble la Xojo ComboBox la ligne

If InStr(star, "|") > 0 Then .AddItem star

Pourra ressembler ceci. ComboBox1 est le nom de la ComboBox.

If InStr(star, "|") > 0 Then ComboBox1.addrow(star)

J’ai employ les tags code dans ce message, comme conseill en dbut.

Bonjour,
Les modifications n’ont rien donn, par contre les exemples de code, le premier par exemple de la TextArea
me permet d’afficher le contenu du fichier lu tel quel.
J’ai essay dans une ComboBox, mais le saut de lignes n’y est pas, tout est sur une seule ligne, d’o problme.
Merci de votre disponibilit.

If InStr(star, "|") > 0 Then ComboBox1.addrow(star)

Ce code incrmente la ligne de la combobox chaque nouvelle occurence de star.

Dim f As FolderItem
Dim i As Integer
Dim stream As BinaryStream
f = GetOpenFolderItem(FileTypes1.Text) //file type defined in File type set
If f <> Nil Then
stream = BinaryStream.Open(f, False)
Do
TextArea1.AppendText(stream.Read(255, Encodings.WindowsANSI))
Loop Until stream.EOF
stream.Close
End If

J’ai trouv ce bout de code o j’ai remplac TextArea1.AppendText par ComboBox1.AddRow
mais l’affichage ne respecte pas le saut de ligne il est tout en bloc.
Avez vous une ide pour que le saut de ligne sexcute ?

Normalement, AddRow() ajoute (add) une ligne, et la remplit. Postez le code que vous employez.

Suivant la source du texte, les valeurs pour le CR sont (peuvent tre) diffrentes. Il faut donc modifier le caractre “CR” pour quil ait la valeur 13.

Comment faire ? Je ne me souviens pas. Je cherche

Aprs de longues minutes infructueuses, j’ai abandonn.

Il sagit dune fonction qui remplace toutes les valeurs ‘connues’ de Return (Enter ?, une autre en UTF, etc.) en ASCII 13 (le “vrai” Return.

Une recherche sur ce forum (en anglais) doit donner une rponse: jai pos cette question et un ingnieur Xojo m’a donn la rponse. Pas de bol, cest tout ce que je me souviens.

I found it and I thank Greg for it:

ReplaceLineEndings

Here is the link in the docs.

C’est le code que j’ai post, que revoil :

Dim f As FolderItem
Dim i As Integer
Dim stream As BinaryStream
f = GetOpenFolderItem(FileTypes1.Text) //file type defined in File type set
If f <> Nil Then
stream = BinaryStream.Open(f, False)
Do
TextArea1.AppendText(stream.Read(255, Encodings.WindowsANSI))
Loop Until stream.EOF
stream.Close
End If

J’ai mis ComboBox.AddArrow () a la place de TextArea1.AppendText().
Si vous avez besoin du fichier txt utilis, je peux le poster.

[quote=93442:@Djamel AIT AMRANE]C’est le code que j’ai posté, que revoilà :
J’ai mis ComboBox.AddArrow () a la place de TextArea1.AppendText().
Si vous avez besoin du fichier txt utilisé, je peux le poster.[/quote]

J’espérais que vous aviez depuis lu la documentation que je vous avais conseillée sur TextInputStream et ReadLine, qui sont les véritables équivalents du code VB que vous aviez posté.

Votre code utilise BinaryStream ce qui n’est pas du tout la même chose, et lit tout d’un coup, au lieu de ligne par ligne.

Ce n’est pas du tout la même chose.

Voici le bon code.

Sub Action() Dim f As FolderItem Dim i As Integer dim stream as textinputstream f = GetOpenFolderItem(FileTypes1.Text) //file type defined in File type set If f <> Nil Then stream = TextInputStream.Open(f) Do ComboBox1.AddRow(stream.Readline) Loop Until stream.EOF stream.Close End If End Sub

a marche parfaitement avec cette modification.
Je vous remercie encore pour votre disponibilit.

Excellent. N’oubliez pas de cliquer sur l’icne coche blanche dans le cercle vert en haut droite de la rponse pour indiquer que votre question a t rsolue :slight_smile: