Laden...

Forenbeiträge von Ezio Ingesamt 189 Beiträge

22.05.2015 - 15:02 Uhr

Hallo Baudi,

das Problem hat nix mit SQL zu tun.
Dein Problem ist, dass du try-catch-finally verwendest, aber dabei nicht sicherstellst, dass in jedem Fall die Methode per return einen Wert zurückliefert.
Du musst sicherstellen, dass - falls du einen Fehler hast - im finally Block auch ein return ausgelöst wird.

VG Ezio

22.05.2015 - 14:27 Uhr

Hallo lhyn,

erstens ändere bitte deinen Code, das tut in den Augen weh:


public Boolean RemoveEnabled
        {
            get
            {
                return _funktionen.Count() == 0;
            }
        }

Zweitens musst du irgendwo das PropertyChanged Event feuern, damit die View die Änderung mitbekommt.

  • Ich hoffe du hast die INotifyPropertyChanged-Schnittstelle implementiert.

VG Ezio

22.05.2015 - 11:14 Uhr

Hallo gh0st93,

auch wenn du drei Aufgabengebiete hast, heißt das noch lange nicht, dass du neun MVVM Klassen hast.
Eine View braucht man für das Prinzip nicht näher erläutern. (Oder?)
Das ViewModel ist die Klasse die sämtliche Anzeigelogik und Daten für die Bindung zur Verfügung stellt.
Weiterhin bietet das VM weitere Properties an, die allein zum Anzeigen gebraucht werden.
Das Model wird ohne jegliche Rücksicht auf die spätere Anzeige entwickelt.
(Idealerweise hast du auch gar kein "Model" sondern nach [Artikel] Drei-Schichten-Architektur BL und DAL.)
D.h. du hast höchst wahrscheinlich mehr als nur drei Models.

Das hier ist erstmal für MVVM grundsätzlich eines der bekanntesten und wichtigsten Tutorial: WPF-Anwendungen mit dem Model-View-ViewModel-Entwurfsmuster
MVVM und Datenbanken sind (IMO) zwei verschiedene Themen.
Da du ja in beidem neu zu sein scheinst, würde ich dir empfehlen dich erst mal wirklich mit MVVM auseinander zu setzen, dann mit DB's und dann erst ein ernsthaftes Projekt realisierst.

VG Ezio

22.05.2015 - 08:05 Uhr

Eigentlich meint BerndFfm keine Punkte, sondern Geschwindigkeiten des Balles.
(Oder ganz Korrekt: Positionsdifferenzen in eine Richtung je Zeiteinheit.
Geschwindigkeit wird daraus nur in Kombination mit einem Timer.)

Falls du kein gerastertes Spiel mit Ball == 1 Rastereinheit erstellst, kommt auch einiges an Arbeit bezüglich Kollisionserkennung und Reflexion an Ecken auf dich zu.

VG Ezio

18.05.2015 - 19:00 Uhr

Ich möchte nochmal verdeutlichen was ich will.

Das ist nur ein Beispiel:
Angenommen ich möchte Details von Schrauben anzeigen.
Dann hat das Objekt Schraube z.B. einen Namen, einen Typ (Schlossschraube, Holzschraube ...) und ein Material als fixe Eigenschaft.
Weiterhin hat das Objekt Schraube ein Dicitionary mit Gewindetypen als Key und ein bool Value ob die Schraube nun in diesem Gewindetyp verfügbar ist, wobei auch eine mehrfache Auswahl möglich ist.

Wäre diese Anzeige für nur einen Hersteller, könnte man ja sagen dass der Hersteller nur eine Auswahl an Gewinden produziert und das fest einprogrammieren.
Nun ist das Programm aber so konzipiert, dass ich mir für verschiedene Hersteller diese Aufstellung anzeigen lassen kann.
Ich weiß aber vorher nicht, welche Gewindetypen überhaupt möglich sein könnten.
Ich lese deshalb die Gewindetypen ein und möchte diese nun als Spalten im DataGrid anzeigen und einen Wert zuweisen können für eine spezielle Schraube.

Die geforderte Ausgabe ist: Name | Typ | Material | Gewindetyp1 | Gewindetyp2 | ...
Ich wüßte nicht, wie ich bei der geforderten Ausgabe das anders lösen soll.

18.05.2015 - 17:58 Uhr

Aus meiner Sicht geht es nicht anders bzw. ist dann eine schlechte Architektur. 😦
Danke. Ich werde mir mal darüber Gedanken machen ... .

18.05.2015 - 17:28 Uhr

Hallo Zusammen,

ich habe eine Liste von Objekten.
Diese haben zum einen fixe Eigenschaften, wie z.B. einen Namen.
Dann haben diese aber auch Eigenschaften die zwar für den aktuellen Datensatz statisch ist, aber bei einem anderen Datensatz anders aussieht (bzw. aussehen kann).
Diese variablen Eigenschaften können von den Basistypen string, int, bool, double sein.
Diese Eigenschaften sind als Dictionary im Objekt vorhanden und der Wert als Value des Dictionarys.

Wie bekomme ich es hin meine Liste von Eigenschaften mit als Header des DataGrids einzufügen und dann in den Zellen die Eigenschaft mit den Value zu verknüpfen?
Und das alles auch noch nach MVVM-Art?
Hat da jemand eine Idee und kann mir helfen?!

Vielen Dank.

Ezio

13.05.2015 - 11:59 Uhr

Hast du beachtet, dass die ID ein Attribut ist und kein Element?
Da greift man unterschiedlich auf die Werte zu.

13.05.2015 - 11:24 Uhr

Hmm ... soweit ich das sehe, scheint es nicht am Datatemplate (richtige Bindungen vorausgesetzt) zu liegen.
Hast du schon den Debugger angeschmissen und danach gesehen, ob 1. das richtige Objekt bearbeitet wird und 2. beim Bearbeiten nix schief geht? Ist die INotify-Schnittstelle richtig und überall implementiert?
Ansonsten kann ich erstmal nur sagen, dass du die Stelle finden solltest wo die Daten verloren gehen.
Ohne Code können wir nur raten.

VG Ezio

13.05.2015 - 10:04 Uhr

Hallo lhyn,
mir ist halt der Ablauf noch nicht ganz klar:
Jetzt mal so geraten clickst du im TreeView auf ein Element.
Dadurch bekommst du in einem anderen Bereich das geklickte Objekt im Detail angezeigt. (Hier wäre das ViewModel vom Typ ViewModelBlablubb.)
Dann änderst du über die ComboBox einen Wert.
Wenn du nun im TreeView auf einen anderes Element clickst und dann wieder auf das vorherige, hat es den eingestellten Wert "vergessen".
So? Oder wie ist der Workflow?
Ich finde dein Problem bisher für Außenstehende schwer nach zu vollziehen!

VG Ezio

13.05.2015 - 09:50 Uhr

aber sobald ich wieder auf diese Klasse "ViewModelBlablubb" Item gehe

Was soll das bedeuten? Klickst du auf die BlablubbView oder wie "gehst" du auf ViewModelBlablubb?

12.05.2015 - 14:04 Uhr

Hallo DWE,

cat ist wahrscheinlich davon ausgegangen, dass du bewusst ein "new Form1()" erzeugst und dann hätte dir nur noch ein "form1.Show()" gefehlt.
Mit "Lösung: s.o." meinte ich, dass du "im Konstruktor von Form2 das aufrufende Objekt(!) form1 übergeben" musst.

Also


... class Form2 ...
{
    private Form1 myForm1;
    public Form2(Form1 form1)
    {
        ...
        myForm1 = form1;
    }
...
    private void contactDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
    {
    ...
        myForm1.Test = ...;
    }
}

12.05.2015 - 13:27 Uhr

So wie ich das verstehe, willst du mit

private void contactDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
        {

            Form1 form1 = new Form1();

            form1.Test = "blablabla";
            this.Close();
        }

eigentlich nur auf dein vorhandenes Fenster zugreifen, richtig?
Du legst aber mit diesem Code ein neues Formular mit Namen form1 vom Typ Form1 an.
Aber du musst im Konstruktor von Form2 das aufrufende Objekt(!) form1 übergeben, um den Rest so zu machen, wie du ihn geschrieben hast.
Damit ist auch klar, was an deinem Code falsch ist:
Du setzt von einem !neuen! Formular form1 die Property Test.
Auch ohne dieses neue Form zu zeigen wird von diesem neuen Formular die MessageBox aktiviert.
Dann wird in diesem neuen (zu form2 gehörenden) form1 die TextBox auf den Wert "blablabla" gesetzt.
Da aber für diese niemals .Show() gerufen wurde, siehst du das natürlich nicht.
Lösung: s.o.

VG Ezio

EDIT: Das Wörtchen "new" ist auch ein gutes Indiz dafür, dass du etwas "neu" erzeugst. 😉

08.05.2015 - 15:48 Uhr

Naja, die Frage von Daniel83 ist, ob du das Control aus einer DLL hast oder in einem anderen Projekt deiner Solution erstellt hast.
Und wenn ja, hast du die Referenzen im Projekt gesetzt (also die DLL "gelinkt")?

08.05.2015 - 15:21 Uhr

Danke MrSparkle,
wenn man einen Parent haben will, sollte man auch einen in ne Property stopfen.
War zu einfach. kopf->wand
Wie man ein SelectedItem bei einer TreeView bindet, gibt es Tutorials -> google.
Ich fand die Variante mit einem abgeleiteten TreeView am schönsten.

08.05.2015 - 12:11 Uhr

Hallo,

leider ist für diese Aufgabe ein externes Framework keine Option ... .
Ich versuche ja auch nur irgendwie ein einfaches


private void MoveUp(object obj)
{
     this.MyObservableCollection.Move(SelectedIndex, SelectedIndex - 1);
}

oder ähnliches zu realisieren.
Und wenn die Struktur ungefär so aussieht:


-A
    -A1
    -A2
    -A3
-B
    -B1
    -B2
...

dann will ich z.B. A2 über A1 verschieben (A -> A2, A1, A3).
Niemals aber auf die obere Ebene (A,B, A2) oder nach B (B -> B1, A2, B2).
Also der Vorgang ist immer nur hübsch innerhalb einer OC.

08.05.2015 - 11:48 Uhr

Hallo CarnifeX,

ich hätte die Rechenmethoden so gelassen und den switch in die Main-Methode gebaut.
Aber das kannst du auch so lassen ... .
Ich finde es nicht(!) gut, dass du das Ergebnis in der Methode schon auf die Konsole schreibst! -> Das gehört IMHO in die Main.
... Und wenn du die Zahlen oder den Operator in der Methode verändern willst, brauchst du kein ref.

08.05.2015 - 10:46 Uhr

Die Verwendung von goto lässt sich immer anders darstellen:*Verzweigungen (if, switch) *Schleifen (foreach, for, while, do-while) *Methoden

Goto ist böse. 😉
Genauseo wie wile(true), was auch so gut wie nicht verwendet werden sollte.

08.05.2015 - 08:32 Uhr

Hallo Zusammen,

dieses Mal benötige ich eure Hilfe.
Erstmal vorweg: Ich arbeite (bzw. versuche es so weit wie möglich) mit MVVM.

Ich habe ein TreeView mit einer gebundenen Struktur.
Ich möchte die SubNodes innerhalb eines Nodes verschieben.
Der Befehl soll per Button+Command ausgelöst werden.
Eigentlich wollte ich per Command die Elemente der ObservableCollection mit .Move() verschieben.
Das Problem ist, dass es weder eine SelectedItem/Index-Property gibt, noch dass ich an den Node komme um den SubNode in dessen Collection zu verschieben.
Mir fehlt leider komplett der Ansatz.

Bin ich überhaupt mit den Gedanken auf dem richtigen Weg?
Hat jemand einen Ansatz oder Hinweis für mich, wie ich an den SubNode und dessen Parrent MVVM-gerecht komme?
Wenn ich den SubNode und den Parrent habe, dürfte es ja dann mit .Move() funktionieren?!

Vielen Dank.

Ezio

07.05.2015 - 08:17 Uhr

Ich glaube er meinte eher, ob du unter Windows Forms / WPF(+MVVM) / andere Technologie arbeitest .

06.05.2015 - 10:58 Uhr

Hallo CarnifeX,
ein Problem sehe ich noch: Hast du schon mal das File "WriteText.txt" per Hand gelöscht und dann dein Programm gestartet?
Ich gebe dir mal nen Tipp, was passiert -> Kabumm 😁
Das gleiche passiert, wenn du das File zur Laufzeit löschst.

Sorry Doku falsch in Erinnerung gehabt ... .

06.05.2015 - 08:55 Uhr

Hallo CarnifeX,

das hat dir Th69 eigentlich schon beantwortet ... .
So wie dein Code aktuell ist, wird ja die Methode bei jedem Button-Click neu aufgerufen. D.h. die Variable ist erstmal leer und wird dann mit dem Listbox-Element beschrieben.
Du kannst es so machen, wie Th69 es gesagt hat oder die Variable als Klassen-Feld (privat!) definieren.
Zum Code:


 while (zähler < Convert.ToInt32((lstbx.Items.Count.ToString())))
 {
     zähler++;
 }

was soll das?!
Wenn ich jezt nix übersehen habe, dann könntest du dafür auch


zähler = lstbx.Items.Count - 1;

schreiben. Das spart ungemein an Rechenleistung und sinnlos vertaner Zeit.

05.05.2015 - 15:01 Uhr

Erwartest du ernsthaft, dass sich einer durch den 1. viel zu langen und 2. unformatierten Text wühlt?!
[Hinweis] Wie poste ich richtig?~~
Edit: Hat sich nach Edit von martin_salo erübrigt.

05.05.2015 - 13:53 Uhr

Hallo json1948,

das ist keine "Visual Studio 2013 .. Datenbank" - sowas gibt es nicht.
Zugegeben das Wort "Datenbank" wird häufig anders verwendet, als es die Theorie definiert.
Die .dump-Datei ist wirklich "die Datenbank". Aber du benötigst noch ein DatenBankManagemendSystem (DBMS). In diesem Fall "PostgreSQL".
Das musst du installieren und dort die Datenbank reinladen.

VG Ezio

05.05.2015 - 08:36 Uhr

Hallo mysharp55,

hast du dir schon die PrintDocument-Klasse angesehen?

VG Ezio

05.05.2015 - 08:21 Uhr

Hallo caliu92,

ah ... ich (wir) haben dich absolut falsch verstanden: Ich dachte, es ginge um einen einfachen Rechner, der einen Ausdruck in PN auswertet/das Ergebnis berechnet.
Du hängst aber bei einem Konverter Infixnotation -> Polnische Notation ... . (Solltest du in deinem Startbeitrag + Überschrift etwas deutlicher machen.)

Das ist gar nicht so trivial.
Du musst Operatorenrang (im einfachen Fall Klammer vor Punkt vor Strich, später könnten noch Späße wie Vorzeichen, unäre Operatoren, Potenz, Sin, Cos, ... dazukommen) und Verschachtelungstiefe (innerste Klammer zuerst) beachten.
Von daher kannst du nicht einfach jedes Element durchgehen und auf den Stack werfen.

Für die Konvertierung eines einzelnen Elements kannst du zuerst Prüfen, ob es sich in eine Zahl konvertieren lässt z.B. mit double.TryParse() und falls das nicht geht in einen char konvertieren.

VG Ezio

04.05.2015 - 15:21 Uhr

Hallo Erdbaer,

Wie kann ich das Vorhaben am geschicktesten umsetzen, um die Ausgaben recht schlank zu halten[...]?

Wie meinst du das?*Technisch: also schlank im Sinne von performant? *Gestalterisch: wie man die 30-40 Controls besser dem Nutzer rüberbringt? -> Da können wir dir ohne weitere Infos nicht helfen.

Muss es denn unbedingt WinForms sein?
Mit WPF + MVVM ist es sowohl elegant, alsauch OOP-Konform umsetzbar.
Ich kenne mich mit Binding+WinForms nicht aus. Aber bei WPF+MVVM bist du performant, weil es absolut unproblematisch ist Controls nur zu aktualisieren, wenn wirklich eine Änderung (Eigenschaft, Wert, ...) vorgenommen wurde.

04.05.2015 - 13:25 Uhr

Hallo caliu92,

also wie chilic schon richtig angemerkt hat, ist dein Beispiel keine Polnische Notation (PN) oder Umgekehrte Polnische Notation (UPN).
Dein Beispiel müsste so aussehen:


+ a b (PN)
a b + (UPN)

Dann solltest du - falls du diese Freiheit hast - die Konvention festlegen, dass jeder Operator und jeder Operand von dem vorherigen mit einem Leerzeichen abgetrennt werden muss.
Dann kannst du per Split-Methode dir einen string-Array geben lassen, der alle Operatoren und Operanden als string enthält.
Den Array elementenweise durchgehen, das Element richtig casten und auf den Operatoren- bzw. Operanden-Stack legen. - Fertig.
Ist es ein Operand, auf den Stack damit.
Ist es ein Operator, die zwei letzten Operanden vom Stack holen, rechnen, Ergebnis auf den Stack.

EDIT: Überarbeitet.

30.04.2015 - 13:41 Uhr

Da muss ich FZelle beipflichten!
Ich selbst habe ein aktuelles WindowsPhone und will es nicht mehr hergeben. (Das ist mal wenigstens ein Smartphone wo das Preis-Leistungs-Verhältnis stimmt ... .)
Windows 8.1 finde ich auch auf dem Desktop nicht so schlecht, wie "alle" behaupten.
Wobei ich das Oberflächenkonzept vom 10er (unterschiedliche Oberfläche je nach Geräte-Typ, bei Desktops das hybride Startmenü, ...) wesentlich gelungener finde.

30.04.2015 - 10:49 Uhr

Das ist vermutlich die Strategie, um WP bzw. Windows 10 for Phones interessant(er) zu machen.
Ich denke Microsoft will erstmal WP besser am Markt platzieren.
Später werden die dann noch einen Trick finden, um auch die Entwicklung speziell für WP interessant zu machen.
Kurzfristig gibt es damit nämlich nicht mehr die Ausrede, dass es zu aufwendig wäre auch noch für WP Apps - wie auch immer - bereitzustellen, da WP ja noch immer eher ein Nischen-Produkt ist (leider ...).
Vermutlich macht Microsoft aktuell die Rechnung auf: Mehr Apps == mehr Nutzer bzw. Lizenznehmer.

@Khalid: Ich hoffe ja mal, dass die Hololens hält, was jetzt schon zum 2. Mal "versprochen" wurde.
Wenns wirklich so ist, gebe ich dir voll und ganz recht und werde einer der ersten sein der sich das Ding besorgt (wenn es halbwegs erschwinglich ist ... 😁 ).

30.04.2015 - 09:10 Uhr

Die Jung's von Gockle finden bei C# Größenanpassung nichts sinnvolles verwundert

Es hat ja auch nicht direkt was mit C# zu tun ... .
Suche mal lieber nach

windows forms scale window

form größe skalieren site:mycsharp.de

oder ähnlichem.
Und siehe: Größe des Programmes an Bildschirmgröße automatisch anpassen

29.04.2015 - 08:06 Uhr

Hallo Shera,
ich habe noch nie für Touch-Geräte programmiert.
Ich sehe aber rein aus elektrotechnischer Sicht die Möglichkeit, dass dein aufgelegtes Objekt bei resistiven oder kapazitiven Displays als "Eingabe" gewertet wird.
Sprich, dass du bei aufgelegtem Objekt Gesten statt einfacher Clicks ausführst.
Also müsstest du unter dieser Annahme versuchen die Objekt-Eingabe zu ignorieren.

28.04.2015 - 12:15 Uhr

Startest du die Anwendung aus dem Debug/Release-Pfad sollte dies nicht passieren.

Wie mache ich denn das?

Naja du gehst im Explorer zu [Pfad-zur-Solution][ProjektName]\bin[Debug||Release] und doppelclickst die Anwendung.
Bzw. wenns eine Konsolenanwendung ist, solltest du dann mit der Konsole hin navigieren. Oder ans Ende ein Console.ReadKey() einbauen, dann kannst du auch per Click die Anwendung starten.

27.04.2015 - 11:21 Uhr

Hallo CarnifeX,
entweder hab ich noch nicht ganz verstanden, was deine Regeln für's Berabeiten sind oder du hast uns ein fehlerhaftes Ergebnis gegeben.
Mein Ergebins sähe nämlich so aus:


   y    ik
rh a bh ev
   l m  q 
 o   i ag
     u plb
kvota
dgw xga  e
y   kntr
ofzadbnpx
mrtcwzfuyb

Übrigens: Hast du es schon geschafft?
Ansonsten noch der Tipp, dass du erst probieren solltest, ob du es zeilenweise hinbekommst und dann spaltenweise (oder eben anders herum).
Nur nicht alles auf Einmal!

VG Ezio

24.04.2015 - 16:17 Uhr

Hallo CarnifeX,

um dein Vorhaben zu lösen, benötigst du Wissen über Schleifen, die Standard-Datentypen und Detailwissen zu strings.
Einen sehr richtungsweisenden Hinweis hat dir EnjoX gegeben, wobei ich es nicht GENAU so machen würde wie er.

Ich denke - auch wenn ich kein Moderator bin - sollten WIR ihm erstmal nicht noch mehr verraten, damit er überhaupt noch einen Lerneffekt hat.

VG Ezio

EDIT: Auf den Moderationshinweis von Abt hin habe ich den betreffenden Teil ausgegraut, um zu verdeutlichen, dass es "nur" ein Hinweis und persönliche Meinung ist..

24.04.2015 - 09:22 Uhr

Hallo MrProg,

ich kann dich verstehen, dass du MVVM am Anfang für sehr komplex, kompliziert und vielleicht auch ein wenig verwirrend hältst.

  • Ging mir anfangs auch so. Zumal ich "alles auf einmal" (also C# und WPF+MVVM) lernen musste.
    Ich kann dir nur sagen: Nutze jede Gelegenheit das Pattern anzuwenden, denn je öfter du es nutzt, desto klarer wird es dir.
    Gerade die kleinen Anwendungen bieten dir oftmals die Möglichkeit MVVM in seiner Reinform zu verwenden ohne großes Framework.

Und am Ende sieht man in seinen Projekten viel besser durch und möchte MVVM nicht mehr missen!

VG Ezio

EDIT: Ein paar Zeilenumbrüche eingefügt. 😄

24.04.2015 - 07:59 Uhr

ich suche eine bessere / eleganter Lösung für meine Vorhaben.

-> Nutze MVVM!

23.04.2015 - 15:30 Uhr

Das ist schon klar, dass die zu verbindende Linie aus unterschiedlichen Winkeln kommt.
Es geht aber um eine "gedachte" Linie in dem Link.
Du drückst irgendwo die linke Maustaste, um die Zeichnung zu beginnen.
Dann ziehst du auf (bzw. bis auf wenige Pixel neben ) die Linie.
Dann lässt du die linke Maustaste los.
Die Position der Maus in diesem Moment ist jetzt wichtig. Die ist dein Punkt.
Die schon existente Linie ist deine ... genau Linie. 😉
Dann musst du den Abstand von dem Maus-Punkt zu deiner Linie mit Hilfe einer Hilfslinie, die Senkrecht auf der existierenden "Zeichnungs"linie steht berechnen.
Ist die Länge der Hilfslinie im Toleranzbereich, kannst du nun die neue Linie zeichnen.
Die senkrechte Hilfslinie hat nun keine Bedeutung mehr.

Jetzt verständlich? 😃

23.04.2015 - 15:00 Uhr

Naja, doch. Du berechnest immer den Abstand Punkt-Linie.
Der kürzeste und damit einzig sinnvolle Abstand ist immer die Annahme, dass die "Abstandslinie" Punkt (Maus) zu Linie senkrecht steht.
Und wenn die "Abstandslinie" ≤ z.B. 3px, dann wird Linie getroffen angenommen.

22.04.2015 - 11:02 Uhr

Naja, jetzt weißt du wenigstens was das eigentliche Problem ist. 😉
Es kommt jetzt drauf an, was du am Ende heraus bekommen willst.
Nur wäre es die schlechteste Lösung einen eignenen Browser für die eigene WebApp zu bauen oder dem Benutzer zu sagen, dass er sein Redirect-Limit hochsetzen soll.
Ich habe leider keine tiefer Ahnung in diesem Themenbereich. Ich wollte dir nur erstmal auf die Sprünge helfen, damit du weißt was überhaupt los ist.

22.04.2015 - 10:11 Uhr

Für jede Datei habe ich im Script ein Redirect, um die max. Serverladezeit zu umgehen.

Der Firefox hat standardmäßig ein Maximum von 20 Redirects pro Verbindung. Daher auch die Fehlermeldung. (about:config -> network.http.redirection-limit)
Das scheint der falsche Ansatz zu sein, um die maximale Ladezeit zu umgehen ... .

EDTI: Übrigens gehört diese Diskussion nicht wirklich in diesen Themenbereich ...

22.04.2015 - 09:56 Uhr

Hallo KevinHappy,

php & Datenbanken sind doch serverseitig. Das hat schonmal wenig mit dem Browser zu tun.
Vielleicht könntest du (trotzdem) auch mal die genaue Fehlermeldung des Firefox posten.
Hat dieses Skript (in anderem Kontext) schon vollständig(!) funktioniert?

21.04.2015 - 08:40 Uhr

Es ist nicht immer die Putzfrau, manchmal gehen auch so mal "ein paar Bytes verloren". großes Grinsen

Eigentlich ist da die Frage, wo da "ein paar Bytes" verloren gehen.
Wenn du nicht sagen kannst, dass die Log-Daten zuverlässig vom Programm in die Datei eingefügt werden, kannst du es insgesamt vergessen.
-> Wer sagt dir denn, ob es "die Putzfrau" war oder einfach ein Schreibfehler gewesen ist.

Falls aber sicher ist, dass die einmal erfassten Daten in der Datei landen, kannst du schon eine gewisse Sicherheit einbauen:

  1. Die Log-Datei wird auf jeden Fall alle x Sekunden mit einem Eintrag befüllt -> falls etwas fehlt, weißt du auch genau wo.
  2. Checksumme für jeden Eintrag -> du weißt, ob manipuliert wurde oder nicht.
  3. Eine clevere Prüfsumme über die Datei, aus der man zurückrechnen kann, ob manipuliert wurde und wo.

Was halt noch ne Möglichkeit wäre, ist den Log doppelt anzulegen: Unverschlüsselt und in einem anderen Ornder nochmal verschlüsselt für dich zur Sicherheit.
Aber da liegen die Nachteile ja offensichtlich auf der Hand ... . 😁

20.04.2015 - 16:18 Uhr

Im try-Block wird ja der Code ausgeführt, der eine Exception auslösen kann.
Wenn es nun gekracht hat, geht man in den catch-Block, um den Fehlerzustand irgendwie noch geordnet zu verlassen bzw. um den Fehler zu beheben.
Führt man da aber wieder die Anweisung aus, die im try-Block nicht funktioniert hat, im catch-Block nochmal aus, kracht es doch ganz logisch nochmal!
Nur ist es doch bei C++ genau so ... .

17.04.2015 - 16:31 Uhr

Hallo key-board,

könntest du bitte dein Anliegen nochmal etwas strukturierter Darstellen - ich seh auch nicht ganz durch was du nun wirlick willst.

Noch ein paar Anmerkungen allgemeiner Art:

Es ist gut, dass du dich schon mal entschieden hast nicht von Form1 abzuleiten -> Da das ja deine ganz "normalen" Objekte zu sein scheinen (die primär nix mit dem GUI zu tun ham), wird das extrem unsauberer Mist.
Würdest du mit WPF und MVVM arbeiten, wärst du da schonmal "gezwungen" wesentlich besseren Code zu schreiben.
Aber auch so sollte gelten (was ja auch mit WinForms geht): Mindestens die Trennung von GUI <-> Logik und Daten. Idealerweise [Artikel] Drei-Schichten-Architektur verwenden.
Dein Programm sollte genauso ohne größeren Aufwand z.B. auch in der Konsole laufen können.
Und dein Code-Stil könnte auch eine kleine Aufhübschung gebrauchen. 😉
Das Mixen von Deutsch und Englisch ist schonmal recht unschön.

Ich möchte dich damit nicht gängeln, aber das sind so Sachen, die einem (mindestens später, z.B. bei späteren Code-Änderungen) die Arbeit sehr erleichtern.

VG Ezio

15.04.2015 - 15:58 Uhr

verwendetes Datenbanksystem: Microsoft SQL-Server-Datenbankdatei / Microsoft ODBC-Datenquelle
PS: Ich nutzte Visual Studio

Ähm, sag mal: Weißt du denn auch, was du da tust?
Du brauchst ja erstmal ein Datenbanksystem, also eine Software. (z.B. Microsoft SQL Server)
Du hast die Datenbankdatei angegeben, die zwar ein Teil ist, aber nicht ausreicht: Du benötigst noch ein Datenbankmanagementsystem -> also eine Software.

Lies mal hier: ADO.NET und Datenbanken

13.04.2015 - 14:22 Uhr

Hallo groja2,

was du suchst nennt sich regular expression bzw. Regex.
Dazu gibts einige Tutorials, u.a. hier auf MyCsharp: [Artikel] Regex-Tutorial
Um dein Regex zu testen gibt es auch noch das Regex-Lab von herbivore: On-the-fly Regex-Tester: Regex-Lab

VG Ezio

09.04.2015 - 14:55 Uhr

... und wenn es dir nur um den Zeitzyklus gehen sollte, solltest du überlegen, ob evtl. nicht ein Timer cleverer wäre.

08.04.2015 - 16:30 Uhr

Hallo infoman,

wenn du mal deinen Code schön in Tags einschließt, dann ist der eine oder ander (z.B. ich) bereit sich das auch mal anzusehen.
So habe ich ehrlich gesagt keine Lust ... .
[Hinweis] Wie poste ich richtig? Punkt 6

VG Ezio

08.04.2015 - 13:51 Uhr

Hallo Robin_dd,

es gibt welche die auf das Buch der Gang of Four als non-plus-ultra schwören.
Ich gehöre nicht dazu, wobei ich nur dieses und irgendein anderes, wirklich schlechtes Buch zu diesem Thema kenne.

Ich kenne das von dir genannt Buch nicht.
Die Bewertungen sehen ja gut bis mittelprächtig aus und Addison Wesley hat jetzt auch nicht gerade Schund im Sortiment (gehabt - ist ja jetzt Teil von pearson ...).
Das Problem ist, dass es das im Buchladen nicht mehr geben dürfte.
Also wenn du keine gut sortierte Bibo hast, musst du da ein wenig die Katze im Sack kaufen.

Sonst kommt ende Mai noch bei Rheinwerk ein Entwurfsmuster-Buch von Matthias Geirhos.

VG Ezio