Auf SpeechSynthesizer() Ende der Sprachausgabe in einer Sub warten
- VB.NET
- .NET (FX) 4.5–4.8
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 36 Antworten in diesem Thema. Der letzte Beitrag () ist von Westerwälder.
-
-
Westerwälder schrieb:
siehe Post 3
Warum soll Maus und Sprache synchronisiert werden?
Mach Dir ein Lautsprecher-Icon, und wenn Du da drauf klickst, wird was erzählt.
Feddich.
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
zu Post 3)
hier wird der Text "Anwendungen. hier findest du die Standardprogramme" akustisch ausgegeben.
wenn ich die maus nicht auf den ToolStripDropDownButton führe und einen Mausclick auslöse,
werden die Untereinträge nicht angezeigt. Wie soll ich sie denn (im Sinne einer Programmtour) beschreiben?
Clicke ich in dem Moment auf ein Lautsprecher-Icon, verschwindet der MenuetoolItem.
Denke ich werde das morgen mit der list of mal versuchen.
Gruß MarkusDieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Westerwälder“ ()
-
-
-
Ich weis ja das hier und da anecke, mit Rod oder auch mit Erfinder des R.
Welche ich beide sehr schätze.
Möchte mir einfach meine Optionen lassen.
Habe mein erstes Programm 1985 geschrieben weil die Bank Sparkassenobligationen nicht im System verwalten konnte (auf einem C64).
Und was hat sich seitdem alles geändert.
Telefax, Handy, Email usw.
Möchte das ein Programm und gerade die damit verbundene Datenverwaltung flexibel bleibt und nicht immer den Vorgaben des VB-Designer folgen muss.
Was möchte ich denn damit sagen? Soll ich Microsoft folgen, auch wenn die Fehler machen?
Oder meinen Gedanken?
Denke man lernt sehr viel aus Erfahrungen und nicht nur aus einem Buch oder den neusten Standards.
Danke
Gruß MarkusDieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Westerwälder“ ()
-
@Westerwälder Wie schätzt Du Deine Programmierkenntnisse ein?
Wieviele (ernsthafte) Projekte hast Du bisher bis zum Abschluss (mit) bearbeitet?
Bist Du in der Lage, ein Pflichtenheft zu schreiben?
Bist Du in der Lage, anhand eines Pflichtenheftes ein Projekt zu bearbeiten?Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Wie wollen wir das definieren?
Was macht Sinn, was macht Unsinn?
Bin damals nach meiner Banklehre in die Firma meines Vater gewechselt.
Da gab es nichts außer Papier und Bleistift.
Erst die Buchhaltung und Personalverwaltung.
Aus einem Lieferschein wurde eine Rechnung.
Auftragsverwaltung war komplett.
Angebotserstellung kam anschließend.
bin dann 2002 aus gesundheitlichen Gründen ausgeschieden.
ich weis aber das die heute noch damit arbeiten.
Zur Zeit verwalte ich mit meinem Programm die Immobilien meiner Mutter,
dass geht soweit das Nebenkosten-Rechnungen an die Mieter erstellt
und auch eine Steuererklärung ans FA geht.
Termine und Zahlungen werden überwacht.
Habe das von meinem Steuerberater prüfen lassen, er meint besser geht's nicht
Gruß MarkusDieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Westerwälder“ ()
-
@Westerwälder Dann sind wir doch genau da, wo Du sein solltest aber nicht bist.
Du hast irgend was programmiert und Du glaubst, dass es richtig ist. Nun funktioniert es nicht so wie gedacht und Du fällst aus allen Wolken.
Dies ist das Hauptproblem aller Young-Star-Programmierer: Mein Programm macht genau das, was ich glaube, das es tun soll.
Tut es aber nicht.
Warum?- Euer Plan ist sehr dynamisch bis nicht existent.
==> Ihr macht den fünften Schritt vor dem Zweiten,
==> ihr arbeitet an einem Moving Target. - Ihr testet nicht.
==> Jede Zeile Code, die nicht getestet ist, ist falsch (Zitat von einem Freund). - Ihr habt keine Vorstellung, was am Ende rauskommen soll.
Ich mach nur mal fix ein kleines Programm für einen Freund / Vater / Kollegen.
- Macht einen sehr detaillierten Plan (Pflichtenheft, Design-Doku, Testspezifikation).
Wenn dieses Dokument fertig ist, wandern neue Wünsche, egal von wem (!) in die Wunschliste für die nächste Version.
Was soll mein Programm können? - Was soll passieren, wenn ich in diesem Dialog auf jenen Button drücke?
Wie sind die Dialoge aufgebaut (Controls, Databinding, ...),
wie werden sie aufgerufen (modal, nicht modal)? - Wie wird das ganze getestet?
Testprojekt, Unittest,
Testdaten.
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! - Euer Plan ist sehr dynamisch bis nicht existent.
-
Rod, ich akzeptiere doch deine Meinung.
Aber es war doch so, dass ich nicht nur programmieren kann.
Ich musste ja auch noch Geld verdienen.
Ich habe kein Abitur. Nur Handelsschule und danach die Banklehre.
Aber die Programme haben ihren Sinn erfüllt und helfen heute noch
Ich habe das schon oft mit EDR gehabt,
den ich auch sehr schätze.
Angenommen das wird mehr, und man weis irgendwann das kann keine Einzelperson mehr alleine sondern da müssen zwei oder mehr dran, was nu?
Designer sucht weiter auf C:\.....
Obwohl wir nun die Daten auf einem Server oder NAS haben?
ist das eine Lösung
Sowas muss eine .ini machen
oder?
Nein noch falsch ausgedrückt.
In den neunziger kam irgendwann ein Feld Email hinzu.
Nun hat der Designer ein Problem.
Klar könnte man eine neue Tabelle in der DB erstellen.
n:n id auf email
das gleiche zur fax-nummer irgendwann
dann auf Facebook
ist das im Sinne der Person, welcher den Überblick über den Aufbau einer Datenbank behalten sollte?
Das sind doch irgendwann verlorene (oder einsame) Datensätze.
Gruß MarkusDieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Westerwälder“ ()
-
Westerwälder schrieb:
oder?Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
wenn du mal zeit und lust hast
dies ist das datenmodell
Spoiler anzeigen
VB.NET-Quellcode
- Public Class CManagment
- ''' <summary>
- ''' True: Klasse ist initalisiert
- ''' False: Klasse ist nicht initalisiert
- ''' </summary>
- Public IstInitalisiert As Boolean = False
- ''' <summary>
- ''' True: Klasse wurde initalisiert
- ''' False: Klasse wurde nicht initalisiert
- ''' </summary>
- Public WurdeInitalisiert As Boolean = False
- ''' <summary>
- ''' Name der Datatabelle
- ''' </summary>
- Public TabellenName As String
- ''' <summary>
- ''' Freie Variable zur Formulierung komplexer Abfragen
- ''' </summary>
- Public AbfrageText As String
- ''' <summary>
- ''' Bindingsource von Datatabelle
- ''' </summary>
- Public DataQuelle As New BindingSource
- ''' <summary>
- ''' Aktuelle ausgewählte Zeile der Datatabelle
- ''' </summary>
- Public DataZeile As DataRow
- ''' <summary>
- ''' Freie Zeile zur Verfügung
- ''' </summary>
- Public FreieZeile As DataRow
- ''' <summary>
- ''' Zeile bei Install-Abfragen
- ''' </summary>
- Public WertZeile As DataRow
- ''' <summary>
- ''' Freie Zeile für Prüfungen/Abfragen
- ''' </summary>
- Public PruefZeile As DataRow
- ''' <summary>
- ''' Freie Zeile der Datatable (Für Neuanlage)
- ''' </summary>
- Public NeueZeile As DataRow
- ''' <summary>
- ''' Freie Zeile zum Drucken
- ''' </summary>
- Public DruckZeile As DataRow
- ''' <summary>
- ''' Gibt an, ob nummeriert wird
- ''' Standard: False
- ''' </summary>
- Public Wird_Nummeriert As Boolean
- ''' <summary>
- ''' Freie Suchzeilen
- ''' </summary>
- Public SuchZeile() As DataRow
- ''' <summary>
- ''' Rückmeldung Neuanlagen: Nummernkreis freie Nummer möglich
- ''' </summary>
- Public NeuanlageMoeglich As Boolean
- ''' <summary>
- ''' Startnummer aus den NummernPool
- ''' </summary>
- Public Nummer_Von As Integer
- ''' <summary>
- ''' Endnummer aus dem NummernPool
- ''' </summary>
- Public Nummer_Bis As Integer
- ''' <summary>
- ''' Bezeichnung des Nummernfeld: z.Bsp. Nummer oder Kontonummer
- ''' </summary>
- Public Nummer_Feld As String
- ''' <summary>
- ''' True: Fehlende Nummer aus dem NummernPool werden vergeben
- ''' False: Es wird die nächste Nummer vergeben
- ''' </summary>
- Public Nummer_Automatic As Boolean
- ''' <summary>
- ''' Verbindung zwischen Datenbank und Datentabelle
- ''' </summary>
- Protected DataAdapter As OleDb.OleDbDataAdapter
- ''' <summary>
- ''' Datenbefehle Insert, Delete, Update
- ''' </summary>
- Private DataBuilder As OleDb.OleDbCommandBuilder
- ''' <summary>
- ''' Datentabelle: Spiegel der Tabelle der Datenbank
- ''' </summary>
- Public DataTabelle As DataTable
- ''' <summary>
- ''' Bezeichnung des Primärschüssel (z.Bsp. ID)
- ''' </summary>
- Public PrimKeyName As String
- ''' <summary>
- ''' True: DataQuelle gefüllt aus DataTabelle
- ''' False: DataQuelle nicht gefüllt
- ''' </summary>
- Public MitBinding As Boolean
- ''' <summary>
- ''' OleDbConnection - Datenverbindung
- ''' </summary>
- Public Datenverbindung As New OleDbConnection
- ''' <summary>
- ''' Beispiel: "Select * From Pfade Order by Nummer"
- ''' </summary>
- Public VerbindungsAuftrag As String
- Public Sub Schliessen()
- Me.Datenverbindung.Close()
- End Sub
- Public Sub Initalisieren()
- Try
- Me.IstInitalisiert = False
- If Me.PrimKeyName = Nothing Then Me.PrimKeyName = "ID"
- If Me.Nummer_Feld = Nothing Then Me.Nummer_Feld = "Nummer"
- If Me.Datenverbindung Is Nothing Then Me.Datenverbindung = New OleDbConnection(Daten.Verbindungsstring_MBSOFT)
- DataAdapter = New OleDb.OleDbDataAdapter(Me.VerbindungsAuftrag, Me.Datenverbindung)
- DataBuilder = New OleDb.OleDbCommandBuilder(DataAdapter)
- DataBuilder.QuotePrefix = "["
- DataBuilder.QuoteSuffix = "]"
- DataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
- DataTabelle = New DataTable
- DataAdapter.FillSchema(DataTabelle, SchemaType.Mapped)
- DataAdapter.Fill(DataTabelle)
- DataTabelle.PrimaryKey = New DataColumn() {DataTabelle.Columns(Me.PrimKeyName)}
- TabellenName = DataTabelle.TableName
- If Me.MitBinding Then DataQuelle.DataSource = DataTabelle
- DataZeile = DataTabelle.NewRow
- IstInitalisiert = True
- WurdeInitalisiert = True
- If Not DataTabelle.Rows.Count < 1 Then WertZeile = DataTabelle.Rows(0)
- Catch ex As Exception
- MessageBox.Show("Fehler beim Initalisiren einer Datentabelle" & vbNewLine &
- "Verbindungsauftrag: " & Me.VerbindungsAuftrag & vbNewLine &
- ex.Message, "MBSOFT - Datenmanagment" & Programm.Copyright_Messagebox,
- MessageBoxButtons.OK, MessageBoxIcon.Error)
- End
- End Try
- MeinInstall()
- End Sub
- ''' <summary>
- ''' Objektspzifische Installierung von Daten und Eigenschaften
- ''' </summary>
- Protected Overridable Sub MeinInstall()
- End Sub
- ''' <summary>
- ''' DataQuelle wird von Datatable gefüllt.
- ''' </summary>
- Public Sub Binding_Initalisieren()
- Me.DataQuelle.DataSource = Me.DataTabelle
- End Sub
- ''' <summary>
- ''' Databindings (DataQuelle) werden entladen (Speicheroptimierung).
- ''' </summary>
- Public Sub Binding_Deinstallieren()
- Me.DataQuelle.EndEdit()
- Me.DataQuelle.Filter = Nothing
- Me.DataQuelle = New BindingSource
- End Sub
- ''' <summary>
- ''' Speichert die Datentabelle in der Datenbank
- ''' </summary>
- Public Sub Speichern()
- Try
- Me.DataQuelle.EndEdit()
- Me.DataAdapter.Update(Me.DataTabelle)
- Catch ex As Exception
- Dim JaNein As DialogResult = MessageBox.Show("Bei dem Versuch in die Datenbank zu schreiben ist ein Fehler aufgetreten." & vbNewLine &
- ex.Message & vbNewLine &
- "Möchten Sie nun das Programm beenden? " & vbNewLine,
- "Datenbankfehler - " & Programm.Copyright_Messagebox,
- MessageBoxButtons.YesNo, MessageBoxIcon.Error)
- If JaNein = DialogResult.Yes Then Programm.Beenden()
- End Try
- End Sub
- ''' <summary>
- ''' Datentabelle erneut aus Datenbank lesen
- ''' </summary>
- ''' <param name="MitBindingQuelle"></param>
- Public Sub Neuladen(ByVal MitBindingQuelle As Boolean)
- DataTabelle = New DataTable
- DataAdapter.FillSchema(DataTabelle, SchemaType.Mapped)
- DataAdapter.Fill(DataTabelle)
- If Not Me.PrimKeyName = Nothing Then DataTabelle.PrimaryKey = New DataColumn() {DataTabelle.Columns(Me.PrimKeyName)}
- TabellenName = DataTabelle.TableName
- If MitBindingQuelle Then Me.DataQuelle.DataSource = Me.DataTabelle
- IstInitalisiert = True
- End Sub
- ''' <summary>
- ''' DataTabelle und DataQuelle werden zerstört
- ''' </summary>
- Public Sub Entladen()
- DataTabelle = New DataTable
- DataQuelle = New BindingSource
- IstInitalisiert = False
- MeinEntladen()
- End Sub
- ''' <summary>
- ''' Entladen von objektspezifischen Elementen
- ''' </summary>
- Protected Overridable Sub MeinEntladen()
- End Sub
- ''' <summary>
- ''' Gibt wieder, ob Datentabelle Datensätze beinhaltet
- ''' </summary>
- ''' <returns></returns>
- Property HatDaten As Boolean
- Get
- If AnzahlDatensaetze > -1 Then
- Return True
- Else
- Return False
- End If
- End Get
- Private Set(value As Boolean)
- End Set
- End Property
- ''' <summary>
- ''' Liefert die Anzahl der Datensäte in der Datentabelle
- ''' </summary>
- ''' <returns></returns>
- Property AnzahlDatensaetze As Integer
- Get
- Return DataTabelle.Rows.Count
- End Get
- Private Set(value As Integer)
- End Set
- End Property
- ''' <summary>
- ''' Liefert die neue neue Nummer lt. Datenpool der Anwendung
- ''' </summary>
- ''' <returns></returns>
- Property NummerNeu As Integer
- Get
- Me.NeuanlageMoeglich = False
- Dim NP As Integer = Daten.NeueNummer_Ermittlung(Me.DataTabelle, Me.Nummer_Von, Me.Nummer_Bis, Me.Nummer_Automatic, Me.Nummer_Feld)
- If NP = -1 Then
- MessageBox.Show("Eine Neuanlage ist nicht möglich, da keine Nummer" & vbNewLine &
- "aus dem Nummernkreis mehr zur Verfügung steht.",
- "Datenbankmanagment" & Programm.Copyright_Messagebox,
- MessageBoxButtons.OK, MessageBoxIcon.Error)
- Me.NeuanlageMoeglich = False
- Return -1
- Exit Property
- End If
- Me.NeuanlageMoeglich = True
- Return NP
- End Get
- Private Set(value As Integer)
- End Set
- End Property
- Private I As Integer
- Private Zeile As String
- ''' <summary>
- ''' Liefert den 1. gefundenen Wert in der Datentabelle
- ''' Bsp. Gesucht wird der Name des Datensatzes mit der Nummer 102
- ''' Suchfeld = Nummer
- ''' Suchwert = 102
- ''' Rückgabefeld = Name
- ''' Lieferformat: String
- ''' </summary>
- ''' <param name="Suchfeld"></param>
- ''' <param name="Suchwert"></param>
- ''' <param name="Rueckgabefeld"></param>
- ''' <param name="Tabelle"></param>
- ''' <returns></returns>
- Public Function Find_Wert(ByVal Suchfeld As String, ByVal Suchwert As String, Rueckgabefeld As String, Optional Tabelle As DataTable = Nothing) As String
- If Tabelle Is Nothing Then Tabelle = Me.DataTabelle
- Dim GefundeneZeilen() As DataRow
- Dim Abfrage As String = Suchfeld & " = '" & Suchwert & "'"
- Try
- GefundeneZeilen = Tabelle.Select(Abfrage)
- If Not GefundeneZeilen(0) Is Nothing Then
- Return (GefundeneZeilen(0)(Rueckgabefeld)).ToString
- Else
- Return Nothing
- End If
- Catch ex As Exception
- Return Nothing
- End Try
- End Function
- ''' <summary>
- ''' Liefert Tabellenindex einer Datenzeile
- ''' Datenzeilenbeispiel: Me.Datazeile
- ''' Lieferformat: Integer
- ''' </summary>
- ''' <param name="Datenzeile"></param>
- ''' <param name="Tabelle"></param>
- ''' <returns></returns>
- Public Function Find_TabellenIndex(ByVal Datenzeile As DataRow, Optional Tabelle As DataTable = Nothing) As Integer
- If Tabelle Is Nothing Then Tabelle = Me.DataTabelle
- Dim MeineZeile As DataRow
- Dim comparer As IEqualityComparer(Of DataRow) = DataRowComparer.Default
- ' Die Zeilen werden miteinander verglichen
- For Me.I = 0 To Tabelle.Rows.Count - 1
- MeineZeile = Tabelle.Rows(Me.I)
- Dim bEqual = comparer.Equals(MeineZeile, Datenzeile)
- If bEqual = True Then
- Return Me.I
- Exit Function
- End If
- Next
- Return -1
- End Function
- ''' <summary>
- ''' Liefert Datenzeile aus Datentabelle
- ''' Abfragebeispiel: Nummer = 123, oder Optional Angabe des TabellenIndex
- ''' Lieferformat: DataRow
- ''' </summary>
- ''' <param name="Abfrage"></param>
- ''' <param name="Tabelle"></param>
- ''' <param name="Index"></param>
- ''' <returns></returns>
- Public Function Find_Zeile_Abfrage(ByVal Abfrage As String, Optional Tabelle As DataTable = Nothing, Optional ByVal Index As Integer = -1) As DataRow
- If Tabelle Is Nothing Then Tabelle = Me.DataTabelle
- Dim ReturnZeile As DataRow = Tabelle.NewRow
- Dim SuchZeile() As DataRow = Nothing
- If Tabelle.Rows.Count = -1 Then
- Return Nothing
- Exit Function
- End If
- If Not Index = -1 Then
- ReturnZeile = Tabelle.Rows.Find(Index)
- Return ReturnZeile
- Exit Function
- End If
- SuchZeile = Tabelle.Select(Abfrage)
- If SuchZeile.Count < 1 Then Return Nothing : Exit Function
- If SuchZeile(0) Is Nothing Then
- Return Nothing
- Exit Function
- Else
- ReturnZeile = SuchZeile(0)
- End If
- Return ReturnZeile
- End Function
- ''' <summary>
- ''' Liefert Datenzeile über Angabe Nummer
- ''' Nummerbeispiel: 102
- ''' Lieferformat: DataRow
- ''' </summary>
- ''' <param name="Nummer"></param>
- ''' <param name="Tabelle"></param>
- ''' <returns></returns>
- Public Function Find_Zeile_Nummer(ByVal Nummer As Integer, Optional Tabelle As DataTable = Nothing) As DataRow
- If Tabelle Is Nothing Then Tabelle = Me.DataTabelle
- Dim GefundeneZeilen() As DataRow
- Dim Abfrage As String = "Nummer = '" & Nummer.ToString & "'"
- Try
- GefundeneZeilen = Tabelle.Select(Abfrage)
- If Not GefundeneZeilen(0) Is Nothing Then
- Return GefundeneZeilen(0)
- Else
- Return Nothing
- End If
- Catch ex As Exception
- Return Nothing
- End Try
- End Function
- Public Function Find_Zeile_ID(ByVal ID As Integer, Optional Tabelle As DataTable = Nothing) As DataRow
- If Tabelle Is Nothing Then Tabelle = Me.DataTabelle
- Dim GefundeneZeilen() As DataRow
- Dim Abfrage As String = "ID = " & ID
- Try
- GefundeneZeilen = Tabelle.Select(Abfrage)
- If Not GefundeneZeilen(0) Is Nothing Then
- Return GefundeneZeilen(0)
- Else
- Return Nothing
- End If
- Catch ex As Exception
- Return Nothing
- End Try
- End Function
- Public Function Sind_Zeilen_Gleich(ByVal Zeile1 As DataRow, ByVal Zeile2 As DataRow) As Boolean
- Dim comparer As IEqualityComparer(Of DataRow) = DataRowComparer.Default
- Dim bEqual = comparer.Equals(Zeile1, Zeile2)
- Return bEqual
- End Function
- End Class
- End Class
und so ein zugriff auf die daten
VB.NET-Quellcode
- Anwender = New MBC_MBSOFT.CAnwender
- With Anwender
- .Datenverbindung = New OleDb.OleDbConnection(Daten.Verbindungsstring_MBSOFT)
- .VerbindungsAuftrag = "Select * From Anwender"
- .MitBinding = True
- .PrimKeyName = "ID"
- .Wird_Nummeriert = True
- .Nummer_Feld = "Nummer"
- .Nummer_Von = 100
- .Nummer_Bis = 120
- .Nummer_Automatic = True
- .Initalisieren()
- End With
und ich finde, dass ist das tolle, man kann fast alles, aber muss nichts
und Datenfehler sind bisher (nun zwei Jahre) nicht vorgekommen.
Gruß MarkusDieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Westerwälder“ ()
-
habe die Unterhaltung nochmal Revue passieren lassen
Programme die teilweise 30 Jahre fehlerfrei laufen muss ich mir keine Gedanken mehr drum machen.
Schreibe oder frage ja hier nach wenn ich Programme entwickele in VB net und nicht wenn sie irgendwo ihren Dienst tun.
Habe noch nie was raus gegeben, was nie zumindest ein Jahr im Test war
Es gibt zu allem einen PAP und ein Handbuch.
Weis, ich mag vielleicht ein Querkopf im Leben sein.
Mein Sohn fragt mich warum ich mir mit 51 einen 535i xdrive kaufe?
Antwort: Weil ich ihn mit 62 nicht mehr wirklich nutzen könnte (ausfahren)
Versteht er nicht
Gruß MarkusDieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Westerwälder“ ()
-
-
Benutzer online 1
1 Besucher
-
Ähnliche Themen
-
murathison - - Sonstige Problemstellungen
-
3 Benutzer haben hier geschrieben
- Westerwälder (21)
- RodFromGermany (11)
- QiSystem (5)