Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von christof.k
Thema: Abspeichern der Stati von vielen GUI-Controls um diese beim Start wieder herzustellen
Am im Forum: GUI: Windows-Forms

Jetzt kommt der Teil wo ich leider noch ein paar Stichworte brauche - Sorry.

Habe es gerade kurz versucht zu implementieren und habe noch ein paar Fragen.


public struct TabStuct
{
    public UserControl TabReference;
    public string TabName;
}

public TabStuct[] Tabs = new TabStuct[11];

void FillTabs
{
    // hier werden die Usercontols instanziiert und das Array Tabs gefüllt
}

void ScrollThroughControls()
{
    foreach (TabStuct tab in Tabs)
    {
        Console.WriteLine("**** " + tab.TabName);
        foreach (Control control in tab.TabReference.Controls)
        {
            Type type = control.GetType();
            Console.WriteLine(type.ToString() + " " + control.Name);
        }
    }
}

Output:
**** Tab1
System.Windows.Forms.TableLayoutPanel tableLayoutPanel1
System.Windows.Forms.Label label13
**** Tab2
System.Windows.Forms.TableLayoutPanel tableLayoutPanel1
System.Windows.Forms.Label label13
**** Tab3
System.Windows.Forms.TableLayoutPanel tableLayoutPanel1
System.Windows.Forms.Label label13
**** Tab4
System.Windows.Forms.Label label4
System.Windows.Forms.TableLayoutPanel tableLayoutPanel1
**** Tab5
System.Windows.Forms.Label label4
System.Windows.Forms.TableLayoutPanel tableLayoutPanel1.....

Mein Problem ist nun das ich nur das tableLayoutPanel bekomme und nicht die Controls darin....wie komme ich da vernünftig weiter und bin ich auf dem richtigen Weg?

Danke
Christof

Thema: Abspeichern der Stati von vielen GUI-Controls um diese beim Start wieder herzustellen
Am im Forum: GUI: Windows-Forms

Hi,
danke für das Feedback. Zumindest muss ich nicht weitersuchen ;-)
Mein "Problem" ist, dass ich meine Applikation in viele Einzelfenster (tabControl gesteuert) gesplittet habe und jedes Tab durch eine eigene Klasse dargestellt wird (jeweils ein UserControl welche das gesamte SubGUI für den entsprechenden Tab enthält).
Damit sind die Controls nicht global verfügbar und ich muss eine Threadsichere Get-Funktion für alle einzelnen erstellen und zentral die Stati (.Checked, .SelectedIndex, .Text) zum Speichern einsammeln.

Da für das Sichern der Zustände die Kapselung eher hinderlich ist hier noch die letzte Frage: Wir kann ich am einfachsten den Status aller Controls zentral erreichen?

Danke nocheinmal
Christof

Thema: Abspeichern der Stati von vielen GUI-Controls um diese beim Start wieder herzustellen
Am im Forum: GUI: Windows-Forms

Hallo,
ich suche nach einer schnellen (von der Aufwandsseite) Möglichkeit den Status von meinen GUI Feldern (Comboboxes, Checkboxes, Textfelder, ...) beim Schließen der Applikation zu speichern um diese beim Start der Applikation wieder zu laden.
Hintergrund sind die vielen Controls und der Wunsch der Nutzer diese nicht bei jedem Start setzen zu müssen (Meine Applikation simuliert Signale auf dem CAN Bus und jedes Signal kann individuell gesteuert werden).

Die meiner Meinung nach aufwändige Variante ist es, den Status jedes Controls abzufragen, in einem XML zu sichern und beim Laden wieder jedes Control einzeln zu initialisieren....meine Hoffnung ist, dass es noch eine pfiffigere Möglichkeit gibt....

Mit der Bitte um Feedback.
Danke
Christof

Thema: Probleme mit Genauigkeit von Thread.Sleep
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

habe gerade den Aufruf der Funktion durch einen Timer gesteuert und egal ob ich den "normalen" oder den Multimedia-Timer nutze, die schnellste Updaterate ist 15 ms.
Nur wenn ich eine Stopwatch in den Thread einbaue, die für genau 5 ms den Thread blockiert, bekomme ich das gewünschte Ergebniss.

Ich frage mich, wie dass andere kommerzielle Tools lösen, die eine hohe zeitl. Auflösung realisieren.

Bis bald
Christof

Thema: Probleme mit Genauigkeit von Thread.Sleep
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,

ich habe für eine lange Zeit nur noch an den Nachrichteninhalten herumgeändert und deshalb nicht die Updaterate beobachtet.
Deshalb denke ich, dass es vor einem Jahr noch wunderbar funktioniert hat....schon schräg.
Es gibt Tools von der Firma, die die HW Herstellt. Diese schaffen diese hohe Auflösung ohne einen Prozuessorkern aufzubrauchen....

Vielleicht hat ja jemand noch eine Idee?

Danke
Christof

Thema: Probleme mit Genauigkeit von Thread.Sleep
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,
Timer hatte ich sehr früh mal versucht, doch haben diese noch einen größeren Overhead, so dass dieses sehr schnell in eine Sackgasse geführt hat.....oder verstehe ich Dich falsch?

Danke
Christof

Thema: Probleme mit Genauigkeit von Thread.Sleep
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

seit einigen Jahren schreibe ich an einer Applikation, um Nachrichten gesteuert auf dem CAN Bus zu senden (mittels Vector Hardware, wenn dies jemanden was sagt).
Dazu nutze ich folgendes Konstrukt

while(1)
{
   SendeNachricht();
   Thread.Sleep(5)
}
um alle 5ms die Funktion ablaufen zu lassen der dann entscheided, was zu senden ist.
Dies hat bisher immer blendend funktioniert (über Jahre hinweg).
Im laufe der Zeit muss sich aber "irgend etwas" geändert haben. Denn nun wird mein Thread im Normalfall immer nur alle 15 ms ausgeführt (auch wenn ich Thread.Sleep(1) probiere). Ich habe das nur durch Zufall herausbekommen und kann deshalb nicht sagen, was sich in der Umgebung (Windows) geändert hat. Win XP war immer das Betriebssystem.
Es kann nicht an der Rechnerpower liegen, da ich eine Updaterate von 0,3 ms bekomme, wenn ich das Thread.Sleep weglasse. Dies blockiert aber natürlich einen Kern.
Wir ist klar, dass Windows kein Echtzeitbetriebssystem ist, aber da es über eine lange Zeit hinweg wunderbar funktioniert hat bin ich so verwundert.
Hat jemand hierzu vielleicht einen Tip?

Vielen Dank im Voraus.
Christof

Thema: Schnittstelle zur Fernsteuerung der eigenen Applikation erstellen
Am im Forum: Rund um die Programmierung

Das Problem (ich hoffe ich bin da nicht allein) ist, das manche Projekte als "Hobby" anfangen, d.h. man hat nie richtig dafür Zeit, ist froh wenn es dann läuft. Dann wächst so ein Projekt und eh man sich versieht, wird es Unternehmensweit eingesetzt und man traut sich nie, den Sourcecode weiterzugeben, da es sonst peinlich wird.

In Zukunft werde ich da ein größeres Augenmerk drauf legen.


Vielen Dank für den Top Support in diesem Forum!
Christof

Thema: Schnittstelle zur Fernsteuerung der eigenen Applikation erstellen
Am im Forum: Rund um die Programmierung

Hi,

vielen Dank für die fruchtbare Diskussion. Ich denke ich habe noch den Designfehler, dass ich meine Low-Level Ebene zu stark an die GUI gekoppelt habe. War am Anfang nicht davon ausgegangen, Automatisierung je zu brauchen.
Ich denke das werde ich auflösen und dann Deinen Tip zum Thema IPC aufnehmen.
Das Thema named pipes gefällt mir, da es völlig Sprachunabhängig ist. Dass sollte Excel auch hinkriegen, oder?
A propos: Wofür steht "BL"?

Vielen Dank!

Christof

Thema: Schnittstelle zur Fernsteuerung der eigenen Applikation erstellen
Am im Forum: Rund um die Programmierung

Hi,

danke für den Tip.

Eigentlich suche ich auch eine Möglichkeit, "unter" der GUI zu bleiben, also z.B. auf custom user messages zu reagieren.
An COMM traue ich mich nicht ganz ran, da ich da jede Menge Arbeit erwarte.

Ich dachte an eine Lösung wie z.B. jeder Funktion meines Programmes eine ID zu geben und dann kann jemand eine message an mein Programm schicken (wie auch immer) und zu der ID den Wert des Signals angeben. Und schon wäre die Fernsteuerung fertig. Den Umweg über die GUI finde ich auch eher "unelegant".

Als nächstes schaue ich mir mal Deine Vorschläge an, aber falls Du noch einen Tip hast, immer her damit.

Danke
Christof

Thema: Schnittstelle zur Fernsteuerung der eigenen Applikation erstellen
Am im Forum: Rund um die Programmierung

Hi,

Unser Messtool für die Kommunikation hat eine COMM-Schnittstelle, welche über Excel angesprochen wird.
Mein Tool sendet nur die richtigen Nachrichten zur rechten Zeit über den CAN-Bus.
Diese Messungen werden dann vom Excel-VBS ausgewertet.

Wie würden gerne bei Excel bleiben, da damit auch nicht C#-Kenner umgehen können. Das Skript im Hintergrund wertet die Excel-Tabelle aus, die in sich Zeilenweise die Tests definiert.
Ich weiß, es gibt da weit aus elegantere Lösungen, aber diese hat sich etabliert und ich benötige sonst ein kostenloses, "relativ" leicht wartbares tool.

Deshalb würde ich gerne im ersten Schritt gerne eine Möglichkeit haben, meine Funktion von Excel über fernzusteuern. Da das mit den Windows Nachrichten schon prinzipell klappt frage ich mich, wie man diese so selbst definieren kann, dass ich die in meiner C# Applikation auswerten kann.

Aber wie gesagt, elegantere (aber im ersten Schritt durch Excel nutzbare) Lösungen sind herzlich willkommen.

Danke
Christof

Thema: Schnittstelle zur Fernsteuerung der eigenen Applikation erstellen
Am im Forum: Rund um die Programmierung

Das Problem ist, das das Testen sich nicht auf meine Applikation bezieht, sondern auf das Steuergerät, was am CAN Bus hängt. Meine Applikation ist sozusagen nur der "Stimulator". D.h. ich will nicht meine GUI testen sondern diese nur fernsteuern.

Excel ist sozusagen das Bindeglied und steuert meine Applikation und wertet Daten aus dem Steuergerät aus. Final wertet das Excel Skript dann die Ergebnisse aus.
Diese läuft zufriedenstellend (wenn da nicht das Fernsteuerproblem wäre ;-))

Danke
Christof

Thema: Schnittstelle zur Fernsteuerung der eigenen Applikation erstellen
Am im Forum: Rund um die Programmierung

Hallo,

ich habe eine Applikation geschrieben, welche auf den CAN-Bus verschiedene Nachrichten ablegt und die über das eigene GUI gesteuert wird.

Für eine Testautomatisierung benötigen wir eine Schnittstelle, welche meine Applikation fernsteuert.
Im Moment wird das über Excel-VBS und SendMessage gemacht, welche den User "simultiert". Dies funktioniert nur bedingt gut, da z.B. spezielle Usercontrols so nicht erreichbar sind. Außerdem darf ich keine meiner GUI-Elemente umbennen, da ansonsten das Excel-Makro auch angepasst werden muss.

Eine Google- und Forumsuche hat leider nur Ergebnisse gebracht, wie man andere Anwendungen steuert. Ich würde lieber eine einfache aber effiziente Art in meine Applikation einbinden, so dass die Fernsteuerung vereinfacht und generisch wird.

Ich habe von Möglichkeiten gehört, auf User-Messages zu reagieren, doch fehlt mir da noch etwas Info.

Über einen Tip, wie ich möglichst schnell so ein Interface realisieren kann und Excel weiterhin als Fernsteuertool nutzen kann, wäre ich sehr dankbar.

Vielen Dank
Christof

Thema: Per Regex XML Tag mit speziellem unter-TAG finden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,

nach all den Argumenten habe ich XPath versucht und bin begeistert.
Was ich nun machen werde ist, per XPath den Node zu finden und den Inhalt per Regex auf meine Bedingungen zu prüfen (und dann potentiell zu ändern).
Erste Versuche sehen gut aus.

Danke nochmals!
Christof

Thema: Per Regex XML Tag mit speziellem unter-TAG finden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Mein vorheriges Beispiel hatte ich vereinfacht, aber anscheinend zu sehr, sorry.

Der eigentliche Fall ist "etwas" komplexer:

<SW-INSTANCE><SW-CS-STATE>changed</SW-CS-STATE>
<REMARK/>
</SW-INSTANCE>
<SW-INSTANCE><SW-CS-STATE>changed</SW-CS-STATE>
<REMARK>text123</REMARK>>
<DATE>2009-02-17T11:25:06</DATE></SW-INSTANCE>

Wenn ich nun alle "SW-INSTANCE" Tags löschen möchte, die das untertag REMARK leer haben (also <REMARK/>) funzt das nun nicht mehr, da es auf einmal ganz viele '>' Zeichen gibt.

Zufällig dafür noch einen Tip?
Danke!
Christof

Thema: Gibt es (einen Ersatz für) static Variablen innerhalb von Funktionen (wie in C)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

ich habe mich schon immer gefragt, warum es in C# nicht möglich ist, innerhalb einer funktion einer lokalen Variable ein Gedächtnis zu verpassen wie mit "static" in C.
Manchmal brauche ich nur einen kleinen Speicher und muss bisher immer eine globale Variable innerhalb der Klasse definieren. Dadurch habe ich viele kleine Variablen global, obwohl dieses für mich etwas "unsauber" ist, da andere Funktionen nie auf diese globale Variable zugreifen.

Es wäre schön, wenn jemand dazu einen Kommentar geben könnte....

Danke
Christof

Thema: Per Regex XML Tag mit speziellem unter-TAG finden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

ich weiß, das Thema ist schon tausend mal durchgesprochen, aber leider nur "fast". Ich habe nun zwei Tage lang Google und eine Stunde das Forum durchsucht und bin auch "fast" fündig geworden.

Mein Problem:


<SW-INSTANCE>
	456
</SW-INSTANCE>
<SW-INSTANCE>
	123
	a456a
</SW-INSTANCE>
<SW-INSTANCE>
	a89a
</SW-INSTANCE>


Dort möchte ich nur den Tag, in dem z.B. der Text 123 vorkommt, finden.
Ich muss auf Regex zugreifen, da ich mir ein Command-Line Regex tool geschrieben habe, welches gut funktioniert. Deshalb möchte ich nicht auf andere Klassen zurückgreifen.

Einen Tag selbst kann man ja per
<SW-INSTANCE>.*?</SW-INSTANCE>
erhalten.
Wenn ich diesen nun aber auf
<SW-INSTANCE>.*?123.*?</SW-INSTANCE>
erweitere, fängt das Match beim ersten <SW-INSTANCE> an, und nicht beim entsprechenden.
Irgendwie sehe ich leider den Wald vor lauter Bäumen nicht und hoffe auf Eure hilfe.

Vielen Dank!

Christof

Thema: Regex.Replace: Anzahl der durchgeführten Ersetzungen herausfinden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

eigentlich will ich wirklich nur wissen, wieviele Treffer es gegeben hat.
Ich dachte auch an einen MatchEvaluater und dort für jeden Match das Replace mit der gleichen Regex durchzuführen, leider klappt dass aber nicht mit lookarounds.....

Christof

Thema: Regex.Replace: Anzahl der durchgeführten Ersetzungen herausfinden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

ich möchte gerne nach dem Aufruf einer Ersetzung ein Feedback, wie oft diese durchgeführt wurde.
Leider finde ich nur bei der Suchfunktion, dass ich dafür "Matches.Count" auswerten kann. Beim Replace gibt es kein Äquivalent.
Wenn ich aber zuerst eine Suche ausführe, um nur die Anzahl zu erhalten, dauert jede Ersetzung doppelt so lange.

Gibt es hier eine einfache Lösung?
Vielen Dank
Christof

Thema: WinForms-Anwendung hängt aus unerklärlichen Gründen
Am im Forum: GUI: Windows-Forms

Tjojo...schwer für mich hier weiterzumachen.

Mich wundert nur, was passiert wenn ich mit der rechten Maustaste auf meine Applikation in der Taskleiste clicke, da dann dieser Deadlock aufgehoben wird. Dies würde bei der Analyse helfen.....

Christof

Thema: WinForms-Anwendung hängt aus unerklärlichen Gründen
Am im Forum: GUI: Windows-Forms

Kleiner Nachtrag:

Wieso auch immer scheint es daran zu hängen, dass ich mit


            Console.SetOut(myTextWriter);
            Console.SetError(myErrorTextWriter);

die Consolen in eine RTF Textbox umzuleiten.
Ich kann mir nicht vorstellen, wie das mit dem anderen Thread in Verbindung steht, aber es ist so.

Kann ich mir irgend eine Art von Deadlock hier einhandeln?

Der genannte Thread macht am Anfang noch keine Ausgabe an die Console.

Mit der Hoffnung auf Hilft

Christof

P.S.: Die PC Abhängigkeit scheint zwischen Single- und Dualcore zu sein. Bei Dualcore klappts, bei Singlecore nicht......komisch

Thema: WinForms-Anwendung hängt aus unerklärlichen Gründen
Am im Forum: GUI: Windows-Forms

Hallo,

ich habe eine relativ simple Anwendung geschrieben, welche neben der GUI zwei weitere Threads nutzt.

Auf meinen und anderen PC's läuft die Anwendung wie erwartet.
Auf manchen anderen PC's hängt sich die Anwendung vor dem Start eines Threads auf und nimmt keine Kommandos mehr entgegen.
Ich habe dies auf die folgende Zeile eingrenzen können indem ich in die ThreadFunction eine Ausgabe gelegt habe. Diese wird nicht aufgerufen.

MyThread = new Thread(new ThreadStart(ThreadFunction));
RxThread.Start();

Vielmehr hängt die Anwendung bei der Zeile

RxThread.Start();
da eine Ausgabe direkt danach nicht erfolgt.

Alle Kommunkationen der Threads mit der GUI laufen über Invoke aufrufe.

Das komische ist, sobald ich mit der rechten Maustaste auf das Programm in der Taskleiste drücke, läuft meine Anwendung weiter und der Thread wird gestartet....Ich habe dafür keine Erklärung.

Ich hoffe Ihr könnt mit dieser Wagen Aussage etwas anfangen oder zumindest einen Tip geben, was ich zu tun habe.

Danke

Thema: Exception bei lesen einer Controleigenschaft aus einem Thread
Am im Forum: GUI: Windows-Forms

Hallo,

danke für den Tip. Ich bin immer davon ausgegangen, dies wäre nur beim Schreiben nötig (dafür gibt es zumindest jede Menge Beispiele, keine für das Lesen von Werten). Deshalb hatte ich immer angenommen, dass Delegates immer typ void sind.

War also eine nette Lernkurve und jetzt klappt alles blendend.

Danke
Christof

Thema: Exception bei lesen einer Controleigenschaft aus einem Thread
Am im Forum: GUI: Windows-Forms

Hallo,

ich habe bereits viel über das ändern von Werten eines Controls über Invoke gelesen und dies auch erfolgreich umgesetzt.

Überraschender Weise bekomme ich eine InvalidOperationException, sobald ich versuche, die Textlänge einer RichTextBox aus einem fremden Thread zu lesen.

Kurz zu meiner Anwendung:
Ich möchte alle Consoleausgaben in diese RichTextBox umleiten.
Dazu erschaffe ich meinen eignene TextWriter, der die RichTextBox im Konstruktor übergeben bekommt und das schreiben übernimmt.
Das schreiben in die RichTextBox mache ich per Invoke, was auch super klappt.
Nun wollte ich die Ausgabe formatieren und wollte dazu die Länge des Textes in der RichTextBox vor und nach dem Einfügen ermitteln. Hier startet nun mein Problem da bei der Zeile

int a = control.TextLength
die Exception auftritt.

Bin über jeden Tip dankbar.

Christof

Thema: Eigenen Console Output in TextBox in eigener Form umleiten
Am im Forum: GUI: Windows-Forms

Hallo,

hier Umleitung des Consolen outputs
habe ich einen Tip gelesen, der sagt:

Console .SetOut(TEXTWRITER_OBJEKT) 
"Dazu muss man im Textwriter nur den Text an die Textbox anhängen!"

Nun frage ich mich, wie kann ich einen Textwriter schreiben, der in eine Textbox schriebt??

In der zwischenzeit schaue ich mir schonmal Eure Ideen an.

Christof

Thema: Eigenen Console Output in TextBox in eigener Form umleiten
Am im Forum: GUI: Windows-Forms

Hallo,

in meinem WinForm Programm nutze ich sehr oft Console.Write / Writeline.

Nun würde ich gerne all diese Ausgaben in ein RTF-Control umleiten.

Ich habe nun schon einige Stunden mit Google verbracht, habe aber meistens nur links zu Dateiausgaben gefunden.

Ich denke ich muss einen eigenen TraceListener erstellen, Write/Writeline überscheiben und gut ist. Aber ich weiß dann nicht, wie ich den mit meinem RTF-Control verknüpfe.

Bin für jeden Tip dankbar
Christof

Thema: Dialog in Maindialog einbetteb
Am im Forum: GUI: Windows-Forms

Hallo,

dankeschön für die vielen Antworten. Irgendwie fehlt mir das richtige Stichwort beim Suchen.

Christof

Thema: Dialog in Maindialog einbetteb
Am im Forum: GUI: Windows-Forms

Hallo,

aus der CodeProject Seite habe ich mir eine nette Outlookbar heruntergeladen, die ich als Basis für meine Windows Form nehmen möchte.

Links im Dialog befindet sich nun die Outlookbar mit den einzelnen Buttons und den rechten Teil möchte ich nutzen, um je nach drücken eines Buttons einen Dialog einzublenden, den ich im VS Designer erstellt habe.

Soll am Ende wie ein Tab-Control funktionieren, aber etwas schicker aussehen (eben gesteuert durch die Outlookbar und nicht durch die Tabs).

Ich finde noch nicht den richtigen Startpunkt und bin dafür für jeden Tip dankbar.

Vielen Dank im voraus
Christof

Thema: Validated Ereignis wir nicht immer ausgelöst
Am im Forum: GUI: Windows-Forms

Hallo,

ich nutze ein TAB-Control in dem ich das Validated-Ereigniss von Textboxen ausnutzen möchte. Ich möchte nämlich auf drücken von "Return" die Box auswerten.

Dazu setzte ich die Eigenschaft "CausesValidation" der Textbox und der Tabs auf true.
Darüber hinaus setze ich noch "AcceptsReturn" der Textbox auf true.
Da die Validierung bei Fokus-Verlust ausgelöst wird fange ich nun keydown ab und wenn Return gedrückt wurde setze ich den Focus auf ein anderes Element im Tab und dann wieder zurück. (kann ich Validate auch manuell auslösen? Wäre vielleicht schöner)

Das klappt auf dem ersten Tab super, leider wird auf einem Untertab das Validated Ereignis nur aufgerufen, wenn ich die Textbox per Mausclick oder per Tabulator verlasse. Mein Return wird erkannt und der Focus wechselt auch, aber Validated wird eben nicht aufgerufen.

Kann mir jemand sagen welches Bit mir fehlt?

Danke
Christof

Thema: Datagridview: Combobox, 3 clicks nötig bis sich drop down öffnet
Am im Forum: GUI: Windows-Forms

Suppi, das war ja einfach ;-)

Aber wie immer, man muss nur wissen wo's steht.

Vielen Dank
Christof