elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 ... 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 [561] 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 ... 1236
5601  Programación / Scripting / Re: Duda para ordenar arreglos en Ruby. en: 29 Marzo 2015, 10:14 am
La solución es:
Código
  1. libros.sort! {
  2.    |primerLibro, segundoLibro|
  3.    segundoLibro <=> primerLibro
  4. }

La solución que pensaste sobre hacerle un reversal (inversión) a la colección también sería válida fuera del ejercicio,
pero supongo que el ejercicio no lo puede tomar por válido ya que obviamente la intención del ejercicio es demostrar la implementación de un bloque de código que compare entre A y B, devolviendo -1, 0, o +1,
vamos, que en mi opinión los algoritmos de validación de Code Academy no parecen permitir mucho "libre albedrio".

PD: Formula futuras preguntas sobre Ruby en el foro de Scripting.

Saludos
5602  Programación / .NET (C#, VB.NET, ASP) / Re: Hacer un menú básico como la época de antes en modo consola en: 28 Marzo 2015, 22:22 pm
Pueden darme consejos de cómo lo harían ustedes.

Yo quizás lo hiciese de la siguiente manera...



Por un lado una Class para definir un item de menu:

Código
  1.    ''' <summary>
  2.    ''' Defines a Console Menu Item.
  3.    ''' </summary>
  4.    Public NotInheritable Class ConsoleMenuItem
  5.  
  6.        ''' <summary>
  7.        ''' Gets or sets the item text.
  8.        ''' </summary>
  9.        ''' <value>The item text.</value>
  10.        Public Property Text As String
  11.  
  12.        ''' <summary>
  13.        ''' Gets or sets the <see cref="ConsoleKey"/> that activates this item.
  14.        ''' </summary>
  15.        ''' <value>The <see cref="ConsoleKey"/> that activates this item.</value>
  16.        Public Property Key As ConsoleKey
  17.  
  18.        ''' <summary>
  19.        ''' Gets or sets the associated <see cref="Command"/> for this item.
  20.        ''' </summary>
  21.        ''' <value>The associated <see cref="Command"/> for this item.</value>
  22.        Public Property Command As Action
  23.  
  24.    End Class

Con ello, compongo los items del menú y sub-menúes:

Código
  1.    ''' <summary>
  2.    ''' The main menu items.
  3.    ''' </summary>
  4.    Private ReadOnly mainMenuItems As IEnumerable(Of ConsoleMenuItem) =
  5.        {
  6.            New ConsoleMenuItem With
  7.                {
  8.                    .Text = "[1] Show first submenu",
  9.                    .Key = ConsoleKey.D1,
  10.                    .Command = New Action(Sub()
  11.                                              ShowMenu(subMenuItems1)
  12.                                          End Sub)
  13.                },
  14.            New ConsoleMenuItem With
  15.                {
  16.                    .Text = "[2] Show second submenu",
  17.                    .Key = ConsoleKey.D2,
  18.                    .Command = New Action(Sub()
  19.                                              ShowMenu(subMenuItems2)
  20.                                          End Sub)},
  21.            menuItemExit
  22.        }
  23.  
  24.    ''' <summary>
  25.    ''' The first submenu items.
  26.    ''' </summary>
  27.    Private ReadOnly subMenuItems1 As IEnumerable(Of ConsoleMenuItem) =
  28.        {
  29.            New ConsoleMenuItem With
  30.                {
  31.                    .Text = "[1] Print a 'Hello World!'",
  32.                    .Key = ConsoleKey.D1,
  33.                    .Command = New Action(Sub()
  34.                                              Console.WriteLine("Hello World!")
  35.                                          End Sub)
  36.                },
  37.            New ConsoleMenuItem With
  38.                {
  39.                    .Text = "[R] Return",
  40.                    .Key = ConsoleKey.R,
  41.                    .Command = New Action(Sub()
  42.                                              ShowMenu(mainMenuItems)
  43.                                          End Sub)},
  44.            menuItemExit
  45.        }
  46.  
  47.    ''' <summary>
  48.    ''' The second submenu items.
  49.    ''' </summary>
  50.    Private ReadOnly subMenuItems2 As IEnumerable(Of ConsoleMenuItem) =
  51.        {
  52.            New ConsoleMenuItem With
  53.                {
  54.                    .Text = "[1] Print the current date.",
  55.                    .Key = ConsoleKey.D1,
  56.                    .Command = Sub()
  57.                                   Console.WriteLine(Date.Today.ToLongDateString)
  58.                               End Sub
  59.                },
  60.            New ConsoleMenuItem With
  61.                {
  62.                    .Text = "[R] Return",
  63.                    .Key = ConsoleKey.R,
  64.                    .Command = New Action(Sub()
  65.                                              ShowMenu(mainMenuItems)
  66.                                          End Sub)},
  67.            menuItemExit
  68.        }
  69.  
  70.    ''' <summary>
  71.    ''' A menu item that exists from console.
  72.    ''' </summary>
  73.    Private ReadOnly menuItemExit As New ConsoleMenuItem With
  74.    {
  75.        .Text = "[X] Exit...",
  76.        .Key = ConsoleKey.X,
  77.        .Command = AddressOf EndConsole
  78.    }

El resto ya solo es darle el formato de texto deseado al menú, y procesar la entrada del teclado:

Código
  1.    ''' <summary>
  2.    ''' Defines the entry point of the application.
  3.    ''' </summary>
  4.    Public Sub Main()
  5.  
  6.        ShowMenu(mainMenuItems)
  7.        System.Threading.Thread.Sleep(Integer.MaxValue)
  8.  
  9.    End Sub
  10.  
  11.    ''' <summary>
  12.    ''' Shows a console menu.
  13.    ''' </summary>
  14.    ''' <param name="menuItems">The items that composes the menu.</param>
  15.    ''' <param name="itemIndicator">A string that indicates the current menu item.</param>
  16.    Private Sub ShowMenu(ByVal menuItems As IEnumerable(Of ConsoleMenuItem),
  17.                         Optional ByVal itemIndicator As String = " -> ")
  18.  
  19.        ' The selected menu item.
  20.        Dim selectedItem As ConsoleMenuItem = menuItems(0)
  21.  
  22.        ' The index of the selected menu item.
  23.        Dim selectedIndex As Integer
  24.  
  25.        ' The object to read the user-input pressed key.
  26.        Dim currentKey As ConsoleKey
  27.  
  28.        ' Flag that determines wether the user pressed a valid menu item key.
  29.        Dim itemKeyIsPressed As Boolean
  30.  
  31.        ' Wait for a valid menu item key.
  32.        Do Until itemKeyIsPressed
  33.  
  34.            ' Iterate the menu items to format the menu string.
  35.            Dim sb As New System.Text.StringBuilder
  36.            With sb
  37.  
  38.                sb.AppendLine("===============================")
  39.                sb.AppendLine("=========== My Menu ===========")
  40.                sb.AppendLine("===============================")
  41.                sb.AppendLine()
  42.  
  43.                For Each menuItem As ConsoleMenuItem In menuItems
  44.                    If menuItem Is selectedItem Then
  45.                        sb.AppendLine(String.Format("{0}{1}", itemIndicator, menuItem.Text))
  46.                    Else
  47.                        sb.AppendLine(menuItem.Text.Insert(0, New String(" "c, itemIndicator.Length)))
  48.                    End If
  49.                Next menuItem
  50.  
  51.                sb.AppendLine()
  52.                sb.AppendLine("===============================")
  53.  
  54.            End With
  55.  
  56.            ' Clear the screen.
  57.            Console.Clear()
  58.  
  59.            ' Print the menu items.
  60.            Console.WriteLine(sb.ToString)
  61.  
  62.            ' Wait for user-input.
  63.            currentKey = Console.ReadKey(True).Key
  64.  
  65.            ' Handle the pressed key.
  66.            Select Case currentKey
  67.  
  68.                Case ConsoleKey.DownArrow ' Decrease current item selection.
  69.                    selectedIndex = menuItems.ToList.IndexOf(selectedItem)
  70.                    If selectedIndex < (menuItems.Count - 1) Then
  71.                        selectedItem = menuItems(selectedIndex + 1)
  72.                    Else
  73.                        selectedItem = menuItems.First
  74.                    End If
  75.  
  76.                Case ConsoleKey.UpArrow  ' Increase current item selection.
  77.                    selectedIndex = menuItems.ToList.IndexOf(selectedItem)
  78.                    If selectedIndex <> 0 Then
  79.                        selectedItem = menuItems(selectedIndex - 1)
  80.                    Else
  81.                        selectedItem = menuItems.Last
  82.                    End If
  83.  
  84.                Case ConsoleKey.Enter ' Run the selected item's command.
  85.                    itemKeyIsPressed = True
  86.                    selectedItem.Command.Invoke()
  87.  
  88.                Case ConsoleKey.Backspace ' Return to previous menu (if any).
  89.                    Dim foundItem As ConsoleMenuItem =
  90.                        (From item As ConsoleMenuItem In menuItems
  91.                         Where item.Key = ConsoleKey.R).FirstOrDefault
  92.  
  93.                    If foundItem IsNot Nothing Then
  94.                        itemKeyIsPressed = True
  95.                        selectedItem = foundItem
  96.                        selectedItem.Command.Invoke()
  97.                    End If
  98.  
  99.                Case Else
  100.                    Dim foundItem As ConsoleMenuItem =
  101.                        (From item As ConsoleMenuItem In menuItems
  102.                         Where item.Key = currentKey).FirstOrDefault
  103.  
  104.                    If foundItem IsNot Nothing Then
  105.                        itemKeyIsPressed = True
  106.                        selectedItem = foundItem
  107.                        selectedItem.Command.Invoke()
  108.                    End If
  109.  
  110.            End Select
  111.  
  112.        Loop
  113.  
  114.    End Sub
  115.  
  116.    ''' <summary>
  117.    ''' Terminates the application.
  118.    ''' </summary>
  119.    Private Sub EndConsole()
  120.  
  121.        Environment.Exit(exitCode:=0)
  122.  
  123.    End Sub



El source completo, en VB:

Código
  1. Module Module1
  2.  
  3.    ''' <summary>
  4.    ''' Defines a Console Menu Item.
  5.    ''' </summary>
  6.    Public NotInheritable Class ConsoleMenuItem
  7.  
  8.        ''' <summary>
  9.        ''' Gets or sets the item text.
  10.        ''' </summary>
  11.        ''' <value>The item text.</value>
  12.        Public Property Text As String
  13.  
  14.        ''' <summary>
  15.        ''' Gets or sets the <see cref="ConsoleKey"/> that activates this item.
  16.        ''' </summary>
  17.        ''' <value>The <see cref="ConsoleKey"/> that activates this item.</value>
  18.        Public Property Key As ConsoleKey
  19.  
  20.        ''' <summary>
  21.        ''' Gets or sets the associated <see cref="Command"/> for this item.
  22.        ''' </summary>
  23.        ''' <value>The associated <see cref="Command"/> for this item.</value>
  24.        Public Property Command As Action
  25.  
  26.    End Class
  27.  
  28.    ''' <summary>
  29.    ''' A menu item that exists from console.
  30.    ''' </summary>
  31.    Private ReadOnly menuItemExit As New ConsoleMenuItem With
  32.    {
  33.        .Text = "[X] Exit...",
  34.        .Key = ConsoleKey.X,
  35.        .Command = AddressOf EndConsole
  36.    }
  37.  
  38.    ''' <summary>
  39.    ''' The main menu items.
  40.    ''' </summary>
  41.    Private ReadOnly mainMenuItems As IEnumerable(Of ConsoleMenuItem) =
  42.        {
  43.            New ConsoleMenuItem With
  44.                {
  45.                    .Text = "[1] Show first submenu",
  46.                    .Key = ConsoleKey.D1,
  47.                    .Command = New Action(Sub()
  48.                                              ShowMenu(subMenuItems1)
  49.                                          End Sub)
  50.                },
  51.            New ConsoleMenuItem With
  52.                {
  53.                    .Text = "[2] Show second submenu",
  54.                    .Key = ConsoleKey.D2,
  55.                    .Command = New Action(Sub()
  56.                                              ShowMenu(subMenuItems2)
  57.                                          End Sub)},
  58.            menuItemExit
  59.        }
  60.  
  61.    ''' <summary>
  62.    ''' The first submenu items.
  63.    ''' </summary>
  64.    Private ReadOnly subMenuItems1 As IEnumerable(Of ConsoleMenuItem) =
  65.        {
  66.            New ConsoleMenuItem With
  67.                {
  68.                    .Text = "[1] Print a 'Hello World!'",
  69.                    .Key = ConsoleKey.D1,
  70.                    .Command = New Action(Sub()
  71.                                              Console.WriteLine("Hello World!")
  72.                                          End Sub)
  73.                },
  74.            New ConsoleMenuItem With
  75.                {
  76.                    .Text = "[R] Return",
  77.                    .Key = ConsoleKey.R,
  78.                    .Command = New Action(Sub()
  79.                                              ShowMenu(mainMenuItems)
  80.                                          End Sub)},
  81.            menuItemExit
  82.        }
  83.  
  84.    ''' <summary>
  85.    ''' The second submenu items.
  86.    ''' </summary>
  87.    Private ReadOnly subMenuItems2 As IEnumerable(Of ConsoleMenuItem) =
  88.        {
  89.            New ConsoleMenuItem With
  90.                {
  91.                    .Text = "[1] Print the current date.",
  92.                    .Key = ConsoleKey.D1,
  93.                    .Command = Sub()
  94.                                   Console.WriteLine(Date.Today.ToLongDateString)
  95.                               End Sub
  96.                },
  97.            New ConsoleMenuItem With
  98.                {
  99.                    .Text = "[R] Return",
  100.                    .Key = ConsoleKey.R,
  101.                    .Command = New Action(Sub()
  102.                                              ShowMenu(mainMenuItems)
  103.                                          End Sub)},
  104.            menuItemExit
  105.        }
  106.  
  107.    ''' <summary>
  108.    ''' Defines the entry point of the application.
  109.    ''' </summary>
  110.    Public Sub Main()
  111.  
  112.        ShowMenu(mainMenuItems)
  113.        System.Threading.Thread.Sleep(Integer.MaxValue)
  114.  
  115.    End Sub
  116.  
  117.    ''' <summary>
  118.    ''' Shows a console menu.
  119.    ''' </summary>
  120.    ''' <param name="menuItems">The items that composes the menu.</param>
  121.    ''' <param name="itemIndicator">A string that indicates the current menu item.</param>
  122.    Private Sub ShowMenu(ByVal menuItems As IEnumerable(Of ConsoleMenuItem),
  123.                         Optional ByVal itemIndicator As String = " -> ")
  124.  
  125.        ' The selected menu item.
  126.        Dim selectedItem As ConsoleMenuItem = menuItems(0)
  127.  
  128.        ' The index of the selected menu item.
  129.        Dim selectedIndex As Integer
  130.  
  131.        ' The object to read the user-input pressed key.
  132.        Dim currentKey As ConsoleKey
  133.  
  134.        ' Flag that determines wether the user pressed a valid menu item key.
  135.        Dim itemKeyIsPressed As Boolean
  136.  
  137.        ' Wait for a valid menu item key.
  138.        Do Until itemKeyIsPressed
  139.  
  140.            ' Iterate the menu items to format the menu string.
  141.            Dim sb As New System.Text.StringBuilder
  142.            With sb
  143.  
  144.                sb.AppendLine("===============================")
  145.                sb.AppendLine("=========== My Menu ===========")
  146.                sb.AppendLine("===============================")
  147.                sb.AppendLine()
  148.  
  149.                For Each menuItem As ConsoleMenuItem In menuItems
  150.                    If menuItem Is selectedItem Then
  151.                        sb.AppendLine(String.Format("{0}{1}", itemIndicator, menuItem.Text))
  152.                    Else
  153.                        sb.AppendLine(menuItem.Text.Insert(0, New String(" "c, itemIndicator.Length)))
  154.                    End If
  155.                Next menuItem
  156.  
  157.                sb.AppendLine()
  158.                sb.AppendLine("===============================")
  159.  
  160.            End With
  161.  
  162.            ' Clear the screen.
  163.            Console.Clear()
  164.  
  165.            ' Print the menu items.
  166.            Console.WriteLine(sb.ToString)
  167.  
  168.            ' Wait for user-input.
  169.            currentKey = Console.ReadKey(True).Key
  170.  
  171.            ' Handle the pressed key.
  172.            Select Case currentKey
  173.  
  174.                Case ConsoleKey.DownArrow ' Decrease current item selection.
  175.                    selectedIndex = menuItems.ToList.IndexOf(selectedItem)
  176.                    If selectedIndex < (menuItems.Count - 1) Then
  177.                        selectedItem = menuItems(selectedIndex + 1)
  178.                    Else
  179.                        selectedItem = menuItems.First
  180.                    End If
  181.  
  182.                Case ConsoleKey.UpArrow  ' Increase current item selection.
  183.                    selectedIndex = menuItems.ToList.IndexOf(selectedItem)
  184.                    If selectedIndex <> 0 Then
  185.                        selectedItem = menuItems(selectedIndex - 1)
  186.                    Else
  187.                        selectedItem = menuItems.Last
  188.                    End If
  189.  
  190.                Case ConsoleKey.Enter ' Run the selected item's command.
  191.                    itemKeyIsPressed = True
  192.                    selectedItem.Command.Invoke()
  193.  
  194.                Case ConsoleKey.Backspace ' Return to previous menu (if any).
  195.                    Dim foundItem As ConsoleMenuItem =
  196.                        (From item As ConsoleMenuItem In menuItems
  197.                         Where item.Key = ConsoleKey.R).FirstOrDefault
  198.  
  199.                    If foundItem IsNot Nothing Then
  200.                        itemKeyIsPressed = True
  201.                        selectedItem = foundItem
  202.                        selectedItem.Command.Invoke()
  203.                    End If
  204.  
  205.                Case Else
  206.                    Dim foundItem As ConsoleMenuItem =
  207.                        (From item As ConsoleMenuItem In menuItems
  208.                         Where item.Key = currentKey).FirstOrDefault
  209.  
  210.                    If foundItem IsNot Nothing Then
  211.                        itemKeyIsPressed = True
  212.                        selectedItem = foundItem
  213.                        selectedItem.Command.Invoke()
  214.                    End If
  215.  
  216.            End Select
  217.  
  218.        Loop
  219.  
  220.    End Sub
  221.  
  222.    ''' <summary>
  223.    ''' Terminates the application.
  224.    ''' </summary>
  225.    Private Sub EndConsole()
  226.  
  227.        Environment.Exit(exitCode:=0)
  228.  
  229.    End Sub
  230.  
  231. End Module

Traducción online a C# (sin testear):
Código
  1. using Microsoft.VisualBasic;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Diagnostics;
  7.  
  8. static class Module1
  9. {
  10. /// <summary>
  11. /// Defines a Console Menu Item.
  12. /// </summary>
  13. public sealed class ConsoleMenuItem
  14. {
  15. /// <summary>
  16. /// Gets or sets the item text.
  17. /// </summary>
  18. /// <value>The item text.</value>
  19. public string Text { get; set; }
  20.  
  21. /// <summary>
  22. /// Gets or sets the <see cref="ConsoleKey"/> that activates this item.
  23. /// </summary>
  24. /// <value>The <see cref="ConsoleKey"/> that activates this item.</value>
  25. public ConsoleKey Key { get; set; }
  26.  
  27. /// <summary>
  28. /// Gets or sets the associated <see cref="Command"/> for this item.
  29. /// </summary>
  30. /// <value>The associated <see cref="Command"/> for this item.</value>
  31. public Action Command { get; set; }
  32.  
  33. }
  34.  
  35. /// <summary>
  36. /// A menu item that exists from console.
  37. /// </summary>
  38. private static readonly ConsoleMenuItem menuItemExit = new ConsoleMenuItem {
  39. Text = "[X] Exit...",
  40. Key = ConsoleKey.X,
  41. Command = EndConsole
  42.  
  43. };
  44. /// <summary>
  45. /// The main menu items.
  46. /// </summary>
  47. private static readonly IEnumerable<ConsoleMenuItem> mainMenuItems = {
  48. new ConsoleMenuItem {
  49. Text = "[1] Show first submenu",
  50. Key = ConsoleKey.D1,
  51. Command = new Action(() => { ShowMenu(subMenuItems1); })
  52. },
  53. new ConsoleMenuItem {
  54. Text = "[2] Show second submenu",
  55. Key = ConsoleKey.D2,
  56. Command = new Action(() => { ShowMenu(subMenuItems2); })
  57. },
  58. menuItemExit
  59.  
  60. };
  61. /// <summary>
  62. /// The first submenu items.
  63. /// </summary>
  64. private static readonly IEnumerable<ConsoleMenuItem> subMenuItems1 = {
  65. new ConsoleMenuItem {
  66. Text = "[1] Print a 'Hello World!'",
  67. Key = ConsoleKey.D1,
  68. Command = new Action(() => { Console.WriteLine("Hello World!"); })
  69. },
  70. new ConsoleMenuItem {
  71. Text = "[R] Return",
  72. Key = ConsoleKey.R,
  73. Command = new Action(() => { ShowMenu(mainMenuItems); })
  74. },
  75. menuItemExit
  76.  
  77. };
  78. /// <summary>
  79. /// The second submenu items.
  80. /// </summary>
  81. private static readonly IEnumerable<ConsoleMenuItem> subMenuItems2 = {
  82. new ConsoleMenuItem {
  83. Text = "[1] Print the current date.",
  84. Key = ConsoleKey.D1,
  85. Command = () => { Console.WriteLine(System.DateTime.Today.ToLongDateString); }
  86. },
  87. new ConsoleMenuItem {
  88. Text = "[R] Return",
  89. Key = ConsoleKey.R,
  90. Command = new Action(() => { ShowMenu(mainMenuItems); })
  91. },
  92. menuItemExit
  93.  
  94. };
  95. /// <summary>
  96. /// Defines the entry point of the application.
  97. /// </summary>
  98.  
  99. public static void Main()
  100. {
  101. ShowMenu(mainMenuItems);
  102. System.Threading.Thread.Sleep(int.MaxValue);
  103. }
  104.  
  105. /// <summary>
  106. /// Shows a console menu.
  107. /// </summary>
  108. /// <param name="menuItems">The items that composes the menu.</param>
  109. /// <param name="itemIndicator">A string that indicates the current menu item.</param>
  110.  
  111. private static void ShowMenu(IEnumerable<ConsoleMenuItem> menuItems, string itemIndicator = " -> ")
  112. {
  113. // The selected menu item.
  114. ConsoleMenuItem selectedItem = menuItems(0);
  115.  
  116. // The index of the selected menu item.
  117. int selectedIndex = 0;
  118.  
  119. // The object to read the user-input pressed key.
  120. ConsoleKey currentKey = default(ConsoleKey);
  121.  
  122. // Flag that determines wether the user pressed a valid menu item key.
  123. bool itemKeyIsPressed = false;
  124.  
  125. // Wait for a valid menu item key.
  126.  
  127. while (!(itemKeyIsPressed)) {
  128. // Iterate the menu items to format the menu string.
  129. System.Text.StringBuilder sb = new System.Text.StringBuilder();
  130. var _with1 = sb;
  131.  
  132. sb.AppendLine("===============================");
  133. sb.AppendLine("=========== My Menu ===========");
  134. sb.AppendLine("===============================");
  135. sb.AppendLine();
  136.  
  137. foreach (ConsoleMenuItem menuItem in menuItems) {
  138. if (object.ReferenceEquals(menuItem, selectedItem)) {
  139. sb.AppendLine(string.Format("{0}{1}", itemIndicator, menuItem.Text));
  140. } else {
  141. sb.AppendLine(menuItem.Text.Insert(0, new string(' ', itemIndicator.Length)));
  142. }
  143. }
  144.  
  145. sb.AppendLine();
  146. sb.AppendLine("===============================");
  147.  
  148.  
  149. // Clear the screen.
  150. Console.Clear();
  151.  
  152. // Print the menu items.
  153. Console.WriteLine(sb.ToString);
  154.  
  155. // Wait for user-input.
  156. currentKey = Console.ReadKey(true).Key;
  157.  
  158. // Handle the pressed key.
  159. switch (currentKey) {
  160.  
  161. case ConsoleKey.DownArrow:
  162. // Decrease current item selection.
  163. selectedIndex = menuItems.ToList.IndexOf(selectedItem);
  164. if (selectedIndex < (menuItems.Count - 1)) {
  165. selectedItem = menuItems(selectedIndex + 1);
  166. } else {
  167. selectedItem = menuItems.First;
  168. }
  169.  
  170. break;
  171. case ConsoleKey.UpArrow:
  172. // Increase current item selection.
  173. selectedIndex = menuItems.ToList.IndexOf(selectedItem);
  174. if (selectedIndex != 0) {
  175. selectedItem = menuItems(selectedIndex - 1);
  176. } else {
  177. selectedItem = menuItems.Last;
  178. }
  179.  
  180. break;
  181. case ConsoleKey.Enter:
  182. // Run the selected item's command.
  183. itemKeyIsPressed = true;
  184. selectedItem.Command.Invoke();
  185.  
  186. break;
  187. case ConsoleKey.Backspace:
  188. // Return to previous menu (if any).
  189. ConsoleMenuItem foundItem = (from item in menuItemswhere item.Key == ConsoleKey.R).FirstOrDefault;
  190.  
  191. if (foundItem != null) {
  192. itemKeyIsPressed = true;
  193. selectedItem = foundItem;
  194. selectedItem.Command.Invoke();
  195. }
  196.  
  197. break;
  198. default:
  199. ConsoleMenuItem foundItem = (from item in menuItemswhere item.Key == currentKey).FirstOrDefault;
  200.  
  201. if (foundItem != null) {
  202. itemKeyIsPressed = true;
  203. selectedItem = foundItem;
  204. selectedItem.Command.Invoke();
  205. }
  206. break;
  207. }
  208. }
  209. }
  210.  
  211. /// <summary>
  212. /// Terminates the application.
  213. /// </summary>
  214. private static void EndConsole()
  215. {
  216. Environment.Exit(exitCode: 0);
  217. }
  218. }
  219.  
  220. //=======================================================
  221. //Service provided by Telerik (www.telerik.com)
  222. //Facebook: facebook.com/telerik
  223. //=======================================================
  224.  

Saludos
5603  Programación / Scripting / Re: Se puede contar un dbf o xlsx o xls en: 28 Marzo 2015, 10:09 am
alguien sabe si el bat puede escribir en una celda de un xls o odf??, muchas gracias :huh:
No, no es posible, Batch es una herramienta simple, totalmente incapacitado para llevar a cabo la tarea que requieres.

si es que quiero contar las celdas de un archivo, tengo que necesariamente abrir ese archivo ? o como (abriendolo me refiero con algun comando)

Cómo ya te han comentado, puedes utilizar una macro en Excel mediante VBA, pero sobre la automatización desde un lenguaje de programación te diré algo más:

Solo debes usar un lenguaje de programación que sea capaz de leer/interpretar el formato ODF/XLS/XLSX, cómo por ejemplo los componentes COM que se instalan con MS Office, los cuales puedes usar desde VBS (o VBA, Vb.Net, C#, etc), para .Net recomiendo la librería NPOI que no requiere MS Office instalado, y si usas otro lenguaje, entonces puedes buscar herramientas específicas para dicho lenguaje, cómo por ejemplo están xlrd o xlutils para Python, y cómo hay otras herramientas para otros lenguajes.

Para leer el formato de un documento de OpenOffice me da la sensación que vas a tener que buscar mucho más a fondo alguna API bastante especializada (en .Net y Java existen, pero no las he probado) o documentarte sobre las especificaciones del formato para comprender cómo puedes leer los datos sin necesidad de APIs que los interpreten por ti (cosa que no recomiendo por el esfuerzo y demora de tiempo).

Saludos
5604  Informática / Software / Re: Necesito instalador del Internet Explorer v10 ? en: 28 Marzo 2015, 09:41 am
Voy a instalar el Visual Studio 2013 y me exige que tenga este navegador...

Me pide descargar actualizaciones.... no me deja instalarlo...

Solución alternativa:

El instalador de VS2013 comprueba un valor en el registro de Windows para determinar que IE10 o superior está instalado.

La clave de registro es la siguiente:
x86: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer
x64: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer

El valor se llama 'svcVersion', y los datos del valor contienen la build del IE instalado en el equipo, por ende, solo debes falsificar los datos del valor para asignarle una build igual a '10.0.0.0' o superior.

Recuerda revertir el cambio del registro a su valor original.

PD: Creo que no hace falta mencionarlo, pero espero que entiendas los inconvenientes que podrían surgir al bypassear esta limitación, ya que algunos escenarios de VS dependen de IE10 o superior instalado en el equipo, depende de tus necesidades de programación, bien puedes necesitarlo o bien no.

Saludos!
5605  Programación / Programación General / Re: ¿Hola, alguien me ayudaría con Ruby o C ++? en: 27 Marzo 2015, 13:25 pm
Buenas

Creo que no eres totalmente consciente de la tremenda labor, tanto por esfuerzo y dedicación cómo por la inversión de tiempo (traducido en meses cómo mínimo, o en años si se quiere enseñar bien), de lo que supone que alguien, ya sea amigo o desconocido, te hiciese de profesor gratuitamente para enseñarte los principios básicos del lenguaje hasta llegar a temáticas avanzadas pasando por los internals del lenguaje. Eso no lo hace nadie.

De todas formas, eres libre de pedir ayuda al igual que cualquier persona es libre de ofrecerse si está dispuesto a asumir tal responsabilidad, pero yo creo que lo que deberías hacer es pedir orientación para saber por donde debes empezar a aprender (a aprender por ti mismo), no pedir que alguien te ayude a aprender el lenguaje por que por tu cuenta te resulte bastante dificil...

En el foro puedes formular preguntas, para eso está ...entre otras cosas también para documentarse, utiliza el lenguaje para practicar y el foro para preguntar, y los usuarios te ayudarán a resolver dichas dudas y aprenderás de las soluciones, el resto del aprendizaje deberías tomártelo por tu cuenta de forma autodidacta, puedes empezar por un libro, ejercicios, o la documentación oficial de Ruby, que para eso está también, para aprender el lenguaje.

Te recuerdo que, preguntas del tipo: "¿Qué lenguaje aprender?", "¿Cómo empiezo a aprender?" o "¿Que manuales debo leer?", se han publicado cientos de veces por otras personas con los mismos intereses que tú en este foro, y antes de preguntar lo mismo lo primero que debes hacer es usar el buscador del foro, además en tu propio beneficio, ya que encontrarías multitud de opiniones y puntos de vista diferentes que te servirían para aprender.

Saludos
5606  Foros Generales / Foro Libre / Re: El Gran Colisionador de Hadrones se prepara para contactar con universos paralel en: 27 Marzo 2015, 11:01 am
Está claro que este artículo ha salido de algún otro sitio, pero voy a hacer referencia al comentario de Engel.

1. Si esto lo hubiese escrito el mismo El_Andaluz, en mi opinión él se ganaría un mayor respeto por mi parte del respeto normal que yo le ofrezco a todas las demás personas que se limiten a leer y/o debatir, o a personas que no sean capaces de profundizar en el interior de su mente para tener opinión propia y poner en duda temas existenciales para así construir hipótesis y mostrar sus ideas en un artículo semejante.

Personas o artículos, ya hablen de agujeros negros, extraterrestres, o lagartos con aspecto humano, mientras cualquier hipótesis/teoría sea sincera por el único interés de aprender más sobre nosotros mismos y no con intención de dramatizar ni llamar la atención ni llenarse los bolsillos con mentiras, entonces ese tipo de personas que sean capaces de abrir su mente para pensar en una posibilidad diferente a lo que opine el resto y encima mostrarle esa idea al resto del mundo, se merecen RESPETO y un gran aplauso.

2. En mi opinión, el hecho de poder ignorar algo no le hace a nadie menos respetable, ya que aparte de que debemos comprender que todos y cada uno de nosotros ignoramos la impensable realidad tanto del Universo cómo de los agujeros negros cómo de nosotros mismos, todos los grandes científicos de la historía en su día ignoraban algo ...hasta que descubrieon el que, y para descubrir el que, siempre habrá que teorizar sobre ideas que puedan resultar absurdas en muchos casos, cómo lo fue "La tierra redonda" antaño, ¿tan absurdo cómo la existencia de extra-terrestres, verdad? (sarcasmo).

Lo que quiero decir con todo esto es que, porfavor, no os paseis de la lengua con este tema, con los autores que redactan esos artículos o con los usuarios que comparten este tipo de temas cómo El_Andaluz, ni con las teorías locas o ideas de los demás que puedan parecernos absurdas, se que a veces cuesta ...a mi por ejemplo cuando me hablan de Dios ...me pierdo, pero intentemos tener en cuenta que cualquier posibilidad puede ser cierta por ridícula que parezca.

Gran artículo, gracias por compartir cómo siempre.

Saludos!
5607  Programación / Scripting / Re: Script o herramienta para envio de peticiones en: 27 Marzo 2015, 09:40 am
Solo por dar una definición más específica de "Indentación":

La Indentación (o sangría) es una cantidad de espacios en blanco y/o tabulaciones que normalmente suelen estar presente a la izquierda del principio de una linea, ni es más, ni es menos.

Las aplicaciones de la Indentación sirven para darle un formato o estilo propio a cualquier tipo de texto, es una técnica usada de forma universal, en papel, archivos digitales, etc;
también se aplica a lenguajes programación, cuya finalidad normalmente también es la de formatear el texto, el texto del código fuente.

Lo que ocurre es que Python, es un lenguaje muuuuy restrictivo en este asunto (amado y odiado por el mismo motivo), cuya estructura se basa en unas reglas que dependen de un estilo de indentación específico, o dicho de otra forma, la indentación es parte de la sintaxis de Python, cómo en otros lenguajes lo podrían ser el uso de los brackets o corchetes {} y sus reglas, por lo tanto, es obligatorio el uso de la indentación en este lenguaje y además siguiendo unas reglas específicas para dicha indentación.

PD:
Te vendría bien leer las convenciones de indentación en Python:
http://www.python.org/dev/peps/pep-0008/#indentation

TL/DR:
El error de Python (y de otros lenguajes) en mi opinión es el hecho de hacer obligatorio el uso de una característica que es literalmente invisible cómo es la indentación, y eso puede llegar a resultar muy molesto e irritante,
en mi opinión, usar Python solo causa una notable disminuición en el rendimiento del programador (hablando en tiempo de productividad), puesto que, por ejemplo, no es lo mismo tener que ejercer tu mente y tus ojos para estar pendiente del formato de 100 lineas de código e ir comprobando eventualmente que todas las lineas cumplan unas reglas de indentación ...ir contando esos espacios invisibles (puaj), que añadir unos sencillos brackets al principio y al final de esas 100 lineas (por ejemplo) y opcionalmente darle tu estilo de indentación propia para el formato del código,
así que para mi, Python solo es algo negativo en el parogramación, aunque tenga una buena demanda en el mercado y sea multi-plataforma ...eso me resulta irrelevante, sus reglas de Indentación más que una utilidad favorable es la inutilidad más desfavorable tanto para el lenguaje cómo para el programador que use ese lenguaje,
y ojo, yo soy alguien que indento cualquer código que escribo en otros lenguajes, de hecho me gusta hacerlo y soy muy meticuloso en ello ya que siempre me ha gustado intentar hacer las cosas perfectas ...quiero decir lo mejor que pueda, es más, hay algunas IDEs para Python que tienen en cuenta dichas reglas y facilitan la tarea, pero aun así yo jamás me veré ovligado a indentar siguiendo unas estrictas reglas de estructuración impuestas en el lenguaje de programación, por que eso implica muchas cosas negativas de las cuales ya comenté alguna, y a mi personalmente no me apetece volver a pasar por ahí, ya toqué bastante en su día mi odiado y medio olvidado Python.

Algunas personas justifican la obligación de indentación de Python cómo forma de transmitir/instruir buenos hábitos de programación, pero esto en mi opinión es una chorrada inmensa, una especie de manipulación/tergiversación y/o el modo que tienen muchas personas de someterse a la aceptación de un problema que no tiene nada de positivo,
en realidad yo lo veo cómo si a un niño pequeño le gritasen sus padres cada vez que no quiere comer por que la comida que le han preparado no le gusta o por que no tiene hambre o por el motivo que sea, ese niño sabe cómo comer, y ese niño comería si sintiese la necesidad de hacerlo, pero al final el niño acaba comiendo de forma negativa y obligada, para no recibir más gritos.
Lo mismo es Python para mi, un mal "instructor".

De todas formas, al fin y al cabo, es solo una cuestión de gustos.

Saludos!
5608  Sistemas Operativos / Windows / Re: Problema con ayuda y soporte de windows/ventana emergente en: 26 Marzo 2015, 15:09 pm
1. ¿Qué Windows tienes?.

2. Según un ayudante del soporte de Microsoft, no es posible desactivar la característica de "Ayuda y soporte de Windows" (el popup que te aparece), pero puedes intentar otras cosas que se mencionan aquí:
http://answers.microsoft.com/en-us/windows/forum/windows_vista-performance/how-to-disable-windows-help-and-support-pop-up/751e7e91-39d1-4dd3-938d-7260a912f1bf

Saludos!

5609  Foros Generales / Dudas Generales / Re: soy nuevo tengo una duda..xd en: 26 Marzo 2015, 12:51 pm
seguramente algun hacker podria hacer eso...xd

Has visto demasiadas películas de Hollywood :P

Desde mayo del 2009 solo se conoce, al menos publicamente, un ataque exitoso a AES (aunque no se si se consiguió craquear una llave de 128, 192, o 256).

Saludos!
5610  Programación / .NET (C#, VB.NET, ASP) / Re: Eliminar filtrar numeros con terminaciones iguales en: 26 Marzo 2015, 12:30 pm
Usando LINQ, una forma de hacerlo sería agrupar los valores por su último número y seleccionar el primer elemento de cada grupo para descartar los demás valores que acaben con el mismo número:

Código
  1.        Dim values As IEnumerable(Of Integer) =
  2.                   {
  3.                       1, 3, 4, 6, 7, 8, 9, 20, 22, 28, 35
  4.                   }
  5.  
  6.        Dim selectedValues As IEnumerable(Of Integer) =
  7.            From value As Integer In values
  8.            Group By CStr(value).Last Into Group
  9.            Select Group.First
  10.            Take 10
  11.  
  12.        Me.ListBox1.Items.AddRange(selectedValues.Cast(Of Object).ToArray)

Output:
Código:
1, 3, 4, 6, 7, 8, 9, 20, 22, 35

Saludos
Páginas: 1 ... 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 [561] 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 ... 1236
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines