Arrays

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Lupus.

    Hey,
    ich beschäftige mich schon seit etwas längerer Zeit mit VB 2005 sprich VB8.
    Jetzt habe ich angefangen, mein ca. 20. Programm zu schreiben.
    Es ist ein Quiz.
    Mir wurde der Tipp gegeben die Fragen & Antworten in Arrays zu spreichern.
    Früher habe ich für jede Frage ne eigene Form gemacht.
    Das blöde ist nur, ich habe mich mit Arrays noch nie so richtig auseinander gesezt.
    Kann mir mal jemand erklären wie Arrays funktioniern und vllt. n' Codeschnipsel zur Erklärung beifügen?

    Danke.
    Chris :)
    Am besten mit Klassen:

    VB.NET-Quellcode

    1. class Frage
    2. public Fragestellung as string
    3. public Antworten(4) as string
    4. private richtige_antwort as integer
    5. public sub Frage() 'Konstruktor
    6. me.Fragestellung = "Was ist richtig?"
    7. me.Antworten(0) = "A"
    8. me.Antworten(1) = "B"
    9. me.Antworten(2) = "C"
    10. me.Antworten(3) = "D"
    11. me.richtige_antwort = 0 'A ist richtig
    12. end sub
    13. end class
    14. class Quiz
    15. public Fragen(10) as Frage
    16. private aktuelle_Frage as integer
    17. public sub Quiz()
    18. Me.Fragen(0) = new Frage()
    19. '...
    20. Me.aktuelle_Frage = 0 '1. Frage
    21. end sub
    22. end class
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Dann also etwas so:

    VB.NET-Quellcode

    1. Class Frage
    2. Public Fragestellung As String
    3. Public Antworten(4) As String
    4. Private richtige_antwort As Integer
    5. Public Sub Frage(1) 'Konstruktor
    6. Me.Fragestellung = "Was ist richtig?"
    7. Me.Antworten(0) = "A"
    8. Me.Antworten(1) = "B"
    9. Me.Antworten(2) = "C"
    10. Me.Antworten(3) = "D"
    11. Me.richtige_antwort = 0 'A ist richtig
    12. End Sub
    13. Public Sub Frage(2) 'Konstruktor
    14. Me.Fragestellung = "Was ist hier richtig?"
    15. Me.Antworten(0) = "A"
    16. Me.Antworten(1) = "B"
    17. Me.Antworten(2) = "C"
    18. Me.Antworten(3) = "D"
    19. Me.richtige_antwort = 2 'C ist richtig
    20. End Sub
    21. End Class
    22. Class Quiz
    23. Public Fragen(10) As Frage
    24. Private aktuelle_Frage As Integer
    25. Public Sub Quiz()
    26. Me.Fragen(0) = New Frage()
    27. '...
    28. Me.aktuelle_Frage = 0 '1. Frage
    29. End Sub
    30. End Class


    Achso und noch eine Frage,
    ich möchte folgendes verwirklichen:

    VB.NET-Quellcode

    1. If Ein_Fenster_mit_folgendem_Namen_Existiert("Windows Media Player") Then
    2. Msgbox("Du hörst grade Musim durch den Windows Media Player")
    3. End If

    Ich möchte dass der Fenstername ermittelt wird, nicht der Prozess!
    Nur wie mach ich das oO

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Metal Freak“ ()

    das geht so:

    VB.NET-Quellcode

    1. For Each p As Process In Process.GetProcesses
    2. If p.MainWindowTitle = "Windows Media Player" Then
    3. MsgBox("...")
    4. Exit For
    5. End If
    6. Next


    falls du den genauen namen des titels nicht weißt dann kannst du auch instr benutzen ;)


    /edit:
    ah, dein quellcode ^^
    naja, du brauchst die frage in der klasse nur einmal hinschreiben. so wie agent das schon geschrieben hat (nur ich glaub in der klasse "frage" muss die variable "richtige_antwort" mit public deklariert werden und nicht mit private)
    wenn du die fragen "befüllen" willst dann machst du das einfach so:

    VB.NET-Quellcode

    1. Public Sub Quiz()
    2. Me.Fragen(0) = New Frage()
    3. Fragen(0).Fragestellung = "wo liegt deutschland?"
    4. Fragen(0).Antworten(0) = "amerika"
    5. Fragen(0).Antworten(1) = "auf dem mond"
    6. Fragen(0).Antworten(2) = "weiß ich nicht"
    7. Fragen(0).Antworten(3) = "in berlin"
    8. Fragen(0).richtige_antwort = 2
    9. '...
    10. Me.aktuelle_Frage = 0 '1. Frage
    11. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Phil“ ()

    Ich kenne den genauen Titel nicht, nur die ersten paar Buchstaben, wie benutze ich instr?
    Ich wünsche es mir so.

    VB.NET-Quellcode

    1. For Each p As Process In Process.GetProcesses
    2. If p.MainWindowTitle.begins = "Windo" Then
    3. MsgBox("...")
    4. Exit For
    5. End If
    6. Next
    naja, es gehört jetzt hier eigentlich nicht so hin. aber das würde dann so asusehen:



    VB.NET-Quellcode

    1. For Each p As Process In Process.GetProcesses
    2. If instr(p.MainWindowTitle, "Windo") = True Then
    3. MsgBox("...")
    4. Exit For
    5. End If
    6. Next


    übrigens habe ich oben per edit auf deine andere frage geantwortet ;)
    Thx erstmal.
    NUn hab ichs versucht, aber es hat nicht geklappt.
    Mein kompletter Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Killer()
    4. End Sub
    5. Sub Killer()
    6. For Each p As Process In Process.GetProcesses
    7. If InStr(p.MainWindowTitle, "CiD") = True Then
    8. p.Kill()
    9. Exit For
    10. End If
    11. Next
    12. End Sub
    13. End Class
    Hi,

    Ich habs auch mal probiert, es ging bei mir auch nicht. Dann hab ich ein bisschen rumgebastelt und es hat so funktioniert:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Killer()
    4. End Sub
    5. Sub Killer()
    6. For Each p As Process In Process.GetProcesses
    7. If p.MainWindowTitle.Contains("Edito") = True Then
    8. p.Kill()
    9. Exit For
    10. End If
    11. Next
    12. End Sub
    13. End Class


    (ich habs mit dem Editor versucht)
    Danke, funktioniert 1A :)
    Das mit dem Array hab ich übrings auch hinbekommen :P

    e:/ Na toll.
    Wollte grade das ausprobieren mit Editor.
    Hab gemacht "Ed" und schon wurde Mein Microsoft Visual Basic Express Edition gekillt.
    Dachte der würde nur die Anfangsbuchtsaben nehmen .__.
    Hab nix gespeichert.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Metal Freak“ ()

    Also bei deinem Code werden, wenn die Checkbox aktiviert ist, alle Prozesse, die im Titel den Inhalt der Textbox haben, geschlossen, wenn sie nicht aktiviert ist, wird nur der erste, der gefunden wird, geschlossen. Aber wo ist das Problem?
    Vielleicht funktioniert es bei dir nicht, weil Groß- und Kleinschreibung beachtet werden muss, versuch dann einfach mal

    VB.NET-Quellcode

    1. (...)
    2. If p.MainWindowTitle.ToLower.Contains(TextBox1.Text.ToLower) = True Then
    3. (...)

    Vielleicht löst das dein Problem.
    oh, des tut mir leid, immerhin bin ich indirekt schuld, sorry. ich hab ja "Edito" genommen, aber beim ersten mal ist mir das auch passiert...
    Was willst du jetzt mit dem Programm eigentlich machen?
    Hab mir schon gedacht das die Frage kommt :P
    Also es ist nur für Eigennutz, da ich alle 5 Minuten Werbung eingeblendet bekomme von "CiD" durch den IExplorer obwohl ich immer FF benutze.
    Auf jedenfall geht mir da ziemlich aufn Keks, besonders wenn ich zocke.
    Naja, desshlab wollte ich Tool schreiben, welches alle Fenster mit "CiD [....]" killt.
    Versuch doch das mal:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    3. Timer1.Interval = 500
    4. Timer1.Start()
    5. End Sub
    6. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    7. For Each p As Process In Process.GetProcesses
    8. If p.MainWindowTitle.Contains("CiD") = True Then
    9. p.Kill()
    10. Exit For
    11. End If
    12. Next
    13. End Sub
    14. End Class


    Dann das ganze noch automatisch beim Windows-Start öffnen lassen und gleich verstecken und das müsste dann klappen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lupus“ ()

    Hab den Übeltäter gefunden.
    Es war sone Toolbar die ich mal instaliert habe.
    Hab erstmal deinstaliert.
    Jetzt kommt diese dumme Werbung nicht mehr :)
    Trozdem Großes Danke an dich Lupus.
    Durch deinen Lezten Beitragh wurde ich inspiriert für ein neues Projekt :>