Bonjour.
Je désirerais pouvoir lire un fichier texte contenant des coordonnées de points (X,Y) par ligne comme ceci:
1.000000 0.113161
1.000000 -0.090921
0.975530 -0.089751
0.938150 -0.089231
et extraire chaque coordonnée afin de les mettre dans un tableau pour les utiliser par la suite.
Quel serait la meilleur façon de procéder?
-Lire chaque ligne et les mettre dans un tableau et ensuite extraire de ce tableau les coordonnées ou bien
-Prendre les 8 premiers caractères, puis les 8 suivants (après l'espace)
J'ai tester un peu la fonction Readblock mais je ne crois pas que se soit la meilleur solution (d'autant plus que je n'ai pas trouvé cmt extraire toutes les valeurs du buffer afin de placer le chiffre complet dans un tableau)
Il y a sans doute encore d'autres solutions
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 6 juin 2013 à 20:37
Salut
Tu n'as pas besoin d'une nouvelle boucle
dans ta boule qui lit les données de ton fichier
déclare
Public Class Form1
private minpointx as single
private minpointy as single
Private ptmin As PointF
dans ta fonction
GetListPoint
'
je donne exprès une grande valeur
'initialise les valeurs
minpointx = 6000
minpointy = 6000
'et dans ta boucle
pt.X = Convert.ToSingle(val(0))
pt.Y = Convert.ToSingle(val(1))
if pt.x < minpointx then
minpointx = pt.x
end if
if pt.y < minpointy then
minpointy = pt.y
end if
if (pt.x < minpointx) andalso (pt.y < minpointy) then
ptmin = pt
end if
Je ne peux pas trier la liste (enfin je crois) car les éléments doivent rester dans cet ordre bien précis.
Il n'y a donc pas de fonction toute faite (on ne sais jamais ^^)
J'ai donc fais ceci:
Dim MinX = listp1(1).X
Dim MaxX = listp1(1).X
Dim MinA = listp2(1).X
Dim MaxA = listp2(1).X
For Each element In listp1
If MinX > element.X Then
MinX = element.X
End If
If MaxX < element.X Then
MaxX = element.X
End If
Next
For Each element In listp2
If MinA > element.X Then
MinA = element.X
End If
If MaxA < element.X Then
MaxA = element.X
End If
Next
Par contre je galère vraiment avec le clipboard.
Je voudrais bien copier tous les éléments sélectionner dans ma listeview pour pouvoir les coller sur excel (de la même manière, donc en 4 colonnes)
J'ai fait ceci:
Private Sub ListView1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles ListView1.KeyDown
If e.KeyCode = Keys.C Then
If e.Modifiers = Keys.Control Then
MsgBox(ListView1.SelectedItems.Count)
Clipboard.Clear()
Clipboard.SetText(ListView1.SelectedItems(0).Text)
End If
End If
End Sub
Mais forcément ça ne prend qu'un seul item. Je n'arrive pas à mettre tous les éléments dans le clipboard (je suppose qu'il faut faire une boucle). Peut être faut-il utiliser Clipboard.ContainsFileDropList
Bah sinon tu fais une requête linq qui ne touche pas à ta liste :
Dim lp As New List(Of PointF) From {New PointF(4.7, 3.6), New PointF(4.6, 4.5), New PointF(4.8, 2.1)}
Dim requete As IEnumerable(Of PointF) = (From pt As PointF In lp Order By pt.X Ascending, pt.Y Ascending)
MessageBox.Show(requete(0).X.ToString & " " & requete(0).Y.ToString)
Pour le collage dans excel, il faut connaitre le caractère de séparation des valeurs des cellules qui est utilisé habituellement dans le clipboard. Mais je ne suis pas VBAtiste. On ne pose qu'une question par topic (cf règlement du forum). Poste donc un autre sujet