Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ORDERING / ORDINAMENTO


Information sur la source

Description

Cliquez pour voir la capture en taille normale
Syntax:

<Record> <Number>

Component:

2 CommandButton;
1 TextBox;
1 ListView;
 

Source

  • [form]
  • Option Explicit
  • Private Sub Command1_Click()
  • ControlFile "\scores.txt"
  • ReadeR
  • End Sub
  • Private Sub Command2_Click()
  • ControlFile "\scores.txt"
  • WriteR (Split(Text1.Text, " ")(0)), (Split(Text1.Text, " ")(1))
  • End Sub
  • [end]
  • [Module]
  • Option Explicit
  • Public Type Scores
  • Id As Integer
  • User As String
  • Point As Integer
  • End Type
  • Dim LstPoint(0 To 256) As Scores
  • Public Function ReadeR(Optional str As String, Optional N As Integer)
  • On Error GoTo e
  • Dim LetturaDati As String
  • Dim lItem As ListItem
  • Dim i, J As Integer
  • i = Main.LP.ListItems.Count
  • Open App.Path & "\scores.txt" For Input As #1
  • Main.LP.ListItems.Clear
  • Do While Not (EOF(1))
  • Line Input #1, LetturaDati
  • LstPoint(i).Id = Split(LetturaDati, " ")(0)
  • LstPoint(i).User = Split(LetturaDati, " ")(1)
  • LstPoint(i).Point = Split(Replace(LetturaDati, " ", " "), " ")(2)
  • Set lItem = Main.LP.ListItems.Add(, , LstPoint(i).Id)
  • lItem.ListSubItems.Add = LstPoint(i).User
  • lItem.ListSubItems.Add = LstPoint(i).Point
  • Loop
  • Close #1
  • Ordina 'Function per ordinare
  • Exit Function
  • e:
  • MsgBox "Errore nella lettura del file, " & vbCrLf & "[" & App.Path & "\scores.txt]" & vbCrLf & "Chiusura forzata.", vbCritical, "Errore"
  • Close #1
  • End Function
  • Public Function WriteR(str As String, N As Integer)
  • Dim i As Integer
  • Dim lItem As ListItem
  • If (Main.LP.ListItems.Count < 1) Then
  • Debug.Print "Dati lista < 1"
  • Open App.Path & "\scores.txt" For Output As #1
  • Print #1, Main.LP.ListItems.Count & " " & str & " " & N
  • Close #1
  • Else
  • If (ControlClone(str, N) = False) Then 'Effettua controllo se cloni
  • Debug.Print "Clone Rilevato. Sostituzione valori..."
  • Open App.Path & "\scores.txt" For Output As #1
  • For i = 1 To Main.LP.ListItems.Count
  • Print #1, LstPoint(i).Id & " " & LstPoint(i).User & " " & LstPoint(i).Point
  • Next i
  • Close #1
  • Else
  • Debug.Print "Clone non rilevato..."
  • Open App.Path & "\scores.txt" For Append As #1
  • Print #1, Main.LP.ListItems.Count & " " & str & " " & N
  • Close #1
  • End If
  • End If
  • ReadeR 'Carica Nuovi dati
  • End Function
  • Public Function ControlClone(str As String, Score As Integer) As Boolean
  • ReadeR 'Carica dati
  • Dim i As Integer
  • For i = 1 To Main.LP.ListItems.Count
  • Debug.Print i
  • LstPoint(i).Id = i
  • LstPoint(i).User = Main.LP.ListItems(i).ListSubItems(1).Text
  • LstPoint(i).Point = Int(Main.LP.ListItems(i).ListSubItems(2).Text)
  • Next i
  • For i = 1 To Main.LP.ListItems.Count
  • If (LCase(str) = LCase(LstPoint(i).User)) Then
  • LstPoint(i).Point = LstPoint(i).Point + Score
  • Main.LP.ListItems(i).ListSubItems(2).Text = LstPoint(i).Point
  • Main.LP.Refresh
  • ControlClone = False 'Controllo negativo. Clone rilevato
  • Exit Function
  • Else
  • ControlClone = True 'Controllo positivo
  • End If
  • Next i
  • End Function
  • Function FileExists(Path As String) As Boolean
  • On Error GoTo e
  • Dim FL As Long
  • FL = FileLen(Path)
  • FileExists = True
  • e:
  • End Function
  • Public Function MkFiles(Path As String)
  • Open App.Path & Path For Output As #1
  • Close #1
  • End Function
  • Public Function ControlFile(Path As String)
  • If FileExists(App.Path & Path) = True Then
  • Exit Function
  • Else
  • MkFiles (Path)
  • End If
  • End Function
  • Sub Ordina()
  • Dim i, J, Temp As Integer
  • Dim Name As String
  • For i = Main.LP.ListItems.Count - 1 To 1 Step -1
  • For J = 1 To i
  • If Int(Main.LP.ListItems(J).ListSubItems(2).Text) < Int(Main.LP.ListItems(J + 1).ListSubItems(2).Text) Then
  • Name = Main.LP.ListItems(J).ListSubItems(1).Text
  • Temp = Main.LP.ListItems(J).ListSubItems(2).Text
  • Main.LP.ListItems(J).ListSubItems(1).Text = Main.LP.ListItems(J + 1).ListSubItems(1).Text
  • Main.LP.ListItems(J).ListSubItems(2).Text = Main.LP.ListItems(J + 1).ListSubItems(2).Text
  • Main.LP.ListItems(J + 1).ListSubItems(1).Text = Name
  • Main.LP.ListItems(J + 1).ListSubItems(2).Text = Temp
  • End If
  • Next J
  • Next i
  • For i = 1 To Main.LP.ListItems.Count
  • Main.LP.ListItems(i).Text = i
  • Next i
  • End Sub
  • [end]
[form]
Option Explicit

Private Sub Command1_Click()
ControlFile "\scores.txt"
ReadeR
End Sub

Private Sub Command2_Click()
ControlFile "\scores.txt"
WriteR (Split(Text1.Text, " ")(0)), (Split(Text1.Text, " ")(1))
End Sub
[end]

[Module]
Option Explicit

Public Type Scores
    Id As Integer
    User As String
    Point As Integer
End Type
Dim LstPoint(0 To 256) As Scores

Public Function ReadeR(Optional str As String, Optional N As Integer)
On Error GoTo e
Dim LetturaDati As String
Dim lItem As ListItem
Dim i, J As Integer
i = Main.LP.ListItems.Count
Open App.Path & "\scores.txt" For Input As #1
    Main.LP.ListItems.Clear
    Do While Not (EOF(1))
        Line Input #1, LetturaDati
        LstPoint(i).Id = Split(LetturaDati, " ")(0)
        LstPoint(i).User = Split(LetturaDati, " ")(1)
        LstPoint(i).Point = Split(Replace(LetturaDati, "  ", " "), " ")(2)
        Set lItem = Main.LP.ListItems.Add(, , LstPoint(i).Id)
            lItem.ListSubItems.Add = LstPoint(i).User
            lItem.ListSubItems.Add = LstPoint(i).Point
    Loop
Close #1
Ordina 'Function per ordinare
Exit Function
e:
MsgBox "Errore nella lettura del file, " & vbCrLf & "[" & App.Path & "\scores.txt]" & vbCrLf & "Chiusura forzata.", vbCritical, "Errore"
Close #1
End Function

Public Function WriteR(str As String, N As Integer)
Dim i As Integer
Dim lItem As ListItem
If (Main.LP.ListItems.Count < 1) Then

    Debug.Print "Dati lista < 1"
    Open App.Path & "\scores.txt" For Output As #1
        Print #1, Main.LP.ListItems.Count & " " & str & " " & N
    Close #1

Else

    If (ControlClone(str, N) = False) Then 'Effettua controllo se cloni
    
        Debug.Print "Clone Rilevato. Sostituzione valori..."
        
        Open App.Path & "\scores.txt" For Output As #1
            For i = 1 To Main.LP.ListItems.Count
                Print #1, LstPoint(i).Id & " " & LstPoint(i).User & " " & LstPoint(i).Point
            Next i
        Close #1
        
    Else
    
        Debug.Print "Clone non rilevato..."
        
        Open App.Path & "\scores.txt" For Append As #1
            Print #1, Main.LP.ListItems.Count & " " & str & " " & N
        Close #1

    End If
End If
ReadeR 'Carica Nuovi dati
End Function

Public Function ControlClone(str As String, Score As Integer) As Boolean
ReadeR 'Carica dati
Dim i As Integer

For i = 1 To Main.LP.ListItems.Count
    Debug.Print i
    LstPoint(i).Id = i
    LstPoint(i).User = Main.LP.ListItems(i).ListSubItems(1).Text
    LstPoint(i).Point = Int(Main.LP.ListItems(i).ListSubItems(2).Text)
Next i

    For i = 1 To Main.LP.ListItems.Count
        If (LCase(str) = LCase(LstPoint(i).User)) Then
            LstPoint(i).Point = LstPoint(i).Point + Score
            Main.LP.ListItems(i).ListSubItems(2).Text = LstPoint(i).Point
            Main.LP.Refresh
            ControlClone = False 'Controllo negativo. Clone rilevato
            Exit Function

        Else

            ControlClone = True 'Controllo positivo
            
        End If
    Next i
End Function

Function FileExists(Path As String) As Boolean
On Error GoTo e
Dim FL As Long
FL = FileLen(Path)
FileExists = True
e:
End Function

Public Function MkFiles(Path As String)
Open App.Path & Path For Output As #1
Close #1
End Function

Public Function ControlFile(Path As String)
If FileExists(App.Path & Path) = True Then
    Exit Function
Else
    MkFiles (Path)
End If
End Function

Sub Ordina()
Dim i, J, Temp As Integer
Dim Name As String

For i = Main.LP.ListItems.Count - 1 To 1 Step -1
  For J = 1 To i
  
  If Int(Main.LP.ListItems(J).ListSubItems(2).Text) < Int(Main.LP.ListItems(J + 1).ListSubItems(2).Text) Then
     
     Name = Main.LP.ListItems(J).ListSubItems(1).Text
     Temp = Main.LP.ListItems(J).ListSubItems(2).Text
     Main.LP.ListItems(J).ListSubItems(1).Text = Main.LP.ListItems(J + 1).ListSubItems(1).Text
     Main.LP.ListItems(J).ListSubItems(2).Text = Main.LP.ListItems(J + 1).ListSubItems(2).Text
     Main.LP.ListItems(J + 1).ListSubItems(1).Text = Name
     Main.LP.ListItems(J + 1).ListSubItems(2).Text = Temp
  
  End If
  
  Next J
Next i

For i = 1 To Main.LP.ListItems.Count
    
    Main.LP.ListItems(i).Text = i

Next i
End Sub
[end]

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.