Comment copier une parite de la console

Signaler
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013
-
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013
-
Bonsoir,

Savez-vous s'il vous plaît comment je peux copier une zone de la console vers une autre zone de celle-ci ?
Par exemple, copier la ligne 1 complète (en respectant les couleurs aussi, tous quoi) à la ligne 2 (pour l’exemple)

J'ai trouvé tous seule comment déplacer une zone vers une autre mais je ne sais pas comment copier une zone à une autre !
Se serais particulièrement utile pour reproduire une partie de la console, par exemple pour ne pas a avoir tous à refaire.

Imaginons qu'il y est un jolie texte taper de toutes les couleurs et que je demande ensuite
à l'utilisateur de répondre à une question ou de taper quelque choses dans la console, j'ai pas
envie de devoir tous retaper si il se trompe et que vous qu'il recommence, vous me comprenez ?

14 réponses

Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

Bon, faut croire que cella n’existe pas !
Il faut donc crée la choses, ça ne va pas être très simple

S'il faut, je la créerais moi cette fonction.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Bonjour,
S'il faut, je la créerais moi cette fonction

très bonne décision, surtout si toi, tu y vois un intérêt non forcément partagé par d'autres

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

Tous t'a fais Thierry
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

C'est une expression
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Ah !
Bon ... et elle s'écrit comment, en réalité ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

On tombe dans la HS là je crois
Quand quelqu'un te dit quelque choses, répond à une question ou autre, tu dis parfois ceci pour confirmer, bref.

Je vais essayer de crée cette fonction-ci, une personne ou plusieurs voudra t-il bien m'aider ?

Je sais, personne ne ferra à ma place (le tu peut dire "Tous t'a fais Thierry", bref)
Je vais commencer à crée la fonction avec mes moyen puis quand j'aurais besoin d'aide...

En tous qu'à si vous avez des idées sur comment procéder, se serait déjà une bonne choses !

Je ne sais pas trop comment faire si se n'est enregistrer toutes les opération (Console.Write/Line) et
mettre ça dans un tableau ou autre...

Il faudra aussi bien enregistrer que charger les données en question !
ça ne va pas être très simple à réaliser mais au moins cella m’entrainera un peut
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

Si déjà il étais possible de lire une position dans la console, lire un caractère par exemple qui me renverrais
par exemple:

Le caractère
La couleur de premier plant
La couleur de second plant

Vous savez si ont peut le faire ça ?!
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

Bonsoir,

Comment passé un tableau (à dimension multiple) en paramètre et l'utiliser ?

J'en suis là:
Sub Print(ByRef Tableau() As Array, ByVal Chaine As String, Optional ByVal CouleurChaine As Integer 7, Optional ByVal CouleurFontChaine As Integer 0, Optional ByVal PositionX As Integer = -1, Optional ByVal PositionY As Integer = -1, Optional ByVal Alinea As Integer = 0)

        Dim Caractère As String = ""
        Dim CurseurX As Integer = Console.CursorLeft
        Dim CurseurY As Integer = Console.CursorTop

        If PositionX > -1 And PositionX <= Console.LargestWindowWidth Then
            Console.CursorLeft = PositionX
        End If

        If PositionY > -1 And PositionX <= Console.LargestWindowHeight Then
            Console.CursorTop = PositionY
        End If

        For Lecture As Integer = 1 To Chaine.Length
            Caractère = Chaine.Substring(Lecture, 1)
            Tableau(CurseurX, CurseurY) = Caractère ' Ici ça coince !!!
        Next

        Console.ForegroundColor = CType(CouleurChaine, ConsoleColor)
        Console.BackgroundColor = CType(CouleurFontChaine, ConsoleColor)

        If Alinea = 1 Then
            Console.WriteLine(Chaine)
        Else
            Console.Write(Chaine)
        End If

    End Sub
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

Au faite, le tableau en question dois pouvoir être modifier par
la fonction, c'est pour ça que j'ai mis ByRef d'ailleurs !
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

Bon, impossible de continuer si personne ne veux m'aider
Impossible de trouver comment on fait
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

Bon, j'ai terminer, ça vaux que que ça vaux mais déjà c'est pas mal du tous je trouve:
Module Module1

    Public Tableau(1000, 1000, 3) As String

    Function ConsoleCopy(ByVal CaractèreDépart As Integer, ByVal LigneDepart As Integer, ByVal CaractèreFin As Integer, ByVal LigneFin As Integer, ByVal PositionCollageX As Integer, ByVal PositionCollageY As Integer) As Integer

        Console.CursorLeft = PositionCollageX
        Console.CursorTop = PositionCollageY

        For Ligne As Integer = LigneDepart To LigneFin

            For Caractère As Integer = CaractèreDépart To CaractèreFin

                Console.ForegroundColor = CType(Tableau(Caractère, Ligne, 1), ConsoleColor)
                Console.BackgroundColor = CType(Tableau(Caractère, Ligne, 2), ConsoleColor)
                Console.Write(Tableau(Caractère, Ligne, 0))

            Next

        Next

        Return 0

    End Function

    Sub Print(ByVal Chaine As String, Optional ByVal CouleurChaine As Integer 7, Optional ByVal CouleurFontChaine As Integer 0, Optional ByVal PositionX As Integer = -1, Optional ByVal PositionY As Integer = -1, Optional ByVal Alinea As Integer = 0)

        Dim Caractère As String = ""
        Dim CurseurX As Integer = Console.CursorLeft
        Dim CurseurY As Integer = Console.CursorTop

        If PositionX > -1 And PositionX <= Console.LargestWindowWidth Then
            Console.CursorLeft = PositionX
            CurseurX = PositionX
        End If

        If PositionY > -1 And PositionX <= Console.LargestWindowHeight Then
            Console.CursorTop = PositionY
            CurseurY = PositionY
        End If

        For Lecture As Integer = 0 To Chaine.Length - 1
            Caractère = Chaine.Substring(Lecture, 1)
            Tableau(CurseurX + Lecture, CurseurY, 0) = Caractère
            Tableau(CurseurX + Lecture, CurseurY, 1) = CStr(CouleurChaine)
            Tableau(CurseurX + Lecture, CurseurY, 2) = CStr(CouleurFontChaine)
        Next

        Console.ForegroundColor = CType(CouleurChaine, ConsoleColor)
        Console.BackgroundColor = CType(CouleurFontChaine, ConsoleColor)

        If Alinea = 1 Then
            Console.WriteLine(Chaine)
        Else
            Console.Write(Chaine)
        End If

    End Sub

    Sub Main()

        Print("Il", ConsoleColor.Red, ConsoleColor.Yellow)
        Console.ResetColor()
        Print(" ")

        Print("était", ConsoleColor.Yellow, ConsoleColor.Blue)
        Console.ResetColor()
        Print(" ")

        Print("une", ConsoleColor.Red, ConsoleColor.White)
        Console.ResetColor()
        Print(" ")

        Print("fois", ConsoleColor.Yellow, ConsoleColor.DarkGreen)
        Console.ResetColor()
        Print(" ")

        Console.WriteLine("")

        ConsoleCopy(0, 0, 18, 0, 0, 2)
        ConsoleCopy(0, 0, 18, 0, 0, 4)
        ConsoleCopy(0, 0, 18, 0, 0, 6)

        Console.ResetColor()
        Console.ReadLine()

    End Sub


End Module


Vous en pensez quoi ?
Serait-il possible que vous puissiez l'améliorer ?!
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

Bon c'est pas encore bien au point mais j’espère que vous pourrez m'aider
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

J'en suis ici mais ça coince

Module Module1

    Public Tableau(1000, 1000, 3) As String

    Function ConsoleCopy(ByVal CaractèreDépart As Integer, ByVal LigneDepart As Integer, ByVal CaractèreFin As Integer, ByVal LigneFin As Integer, ByVal PositionCollageX As Integer, ByVal PositionCollageY As Integer) As Integer

        Console.CursorLeft = PositionCollageX
        Console.CursorTop = PositionCollageY

        For Ligne As Integer = LigneDepart To LigneFin

            For Caractère As Integer = CaractèreDépart To CaractèreFin
                Print(Tableau(Caractère, Ligne, 0), CInt(Tableau(Caractère, Ligne, 1)), CInt(Tableau(Caractère, Ligne, 2)))

            Next

            Console.CursorLeft = PositionCollageX
            Console.CursorTop = Console.CursorTop + 1

        Next

        Return 0

    End Function

    Sub Print(ByVal Chaine As String, Optional ByVal CouleurChaine As Integer 7, Optional ByVal CouleurFontChaine As Integer 0, Optional ByVal PositionX As Integer = -1, Optional ByVal PositionY As Integer = -1, Optional ByVal Alinea As Integer = 0)

        Dim Caractère As String = ""
        Dim CurseurX As Integer = Console.CursorLeft
        Dim CurseurY As Integer = Console.CursorTop

        If PositionX > -1 And PositionX <= Console.LargestWindowWidth Then
            Console.CursorLeft = PositionX
            CurseurX = PositionX
        End If

        If PositionY > -1 And PositionX <= Console.LargestWindowHeight Then
            Console.CursorTop = PositionY
            CurseurY = PositionY
        End If

        For Lecture As Integer = 0 To Chaine.Length - 1
            Caractère = Chaine.Substring(Lecture, 1)
            Tableau(CurseurX + Lecture, CurseurY, 0) = Caractère
            Tableau(CurseurX + Lecture, CurseurY, 1) = CStr(CouleurChaine)
            Tableau(CurseurX + Lecture, CurseurY, 2) = CStr(CouleurFontChaine)
        Next

        Console.ForegroundColor = CType(CouleurChaine, ConsoleColor)
        Console.BackgroundColor = CType(CouleurFontChaine, ConsoleColor)

        If Alinea = 1 Then
            Console.WriteLine(Chaine)
        Else
            Console.Write(Chaine)
        End If

    End Sub

    Sub Main()

        Print("Il", ConsoleColor.Red, ConsoleColor.Yellow)
        Console.ResetColor()
        Print(" ")

        Print("était", ConsoleColor.Yellow, ConsoleColor.Blue)
        Console.ResetColor()
        Print(" ")

        Print("une", ConsoleColor.Red, ConsoleColor.White)
        Console.ResetColor()
        Print(" ")

        Print("fois", ConsoleColor.Yellow, ConsoleColor.DarkGreen)
        Console.ResetColor()
        Print(" ")

        Console.WriteLine("")

        ConsoleCopy(0, 0, 18, 0, 0, 2)
        ConsoleCopy(0, 0, 18, 0, 0, 4)
        ConsoleCopy(0, 0, 18, 0, 0, 6)

        'ConsoleCopy(0, 0, 18, 2, 0, 4)


        Console.ResetColor()
        Console.ReadLine()

    End Sub


End Module