Zum Inhalt springen

Whiz-zarD

Mitglieder
  • Gesamte Inhalte

    2.021
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    48

Beiträge von Whiz-zarD

  1. vor 9 Minuten schrieb Tician:

    Im Vergleich zur Schule wo wir jetzt zum ersten mal eine neue Datei als Klasse erstellt haben und einen Button machen der im viereck im Fenster umher springt sobald man drauf klickt. Da habe ich verstanden das ich die Werkzeuge mit etwas (in dem Beispiel den Timer) verknüpfen kann und dann im Hauptcode soviele Buttons wie ich will aufrufen kann, aber ich bekomme das nicht auf das übertragen was ich hier mache, vorallem nicht nur nach diesem einen Beispiel.

    Das ist leider so ein Problem. Oft lernt man nur triviale Dinge und diese werden dann wegen der Einfachheit nicht richtig erklärt bzw. nicht genug durchleuchtet. Es werden dann Risiken und Probleme ausgeklammert und gar nicht behandelt, weil das einen Anfänger verwirrt. Ich finde auch, ein Anfänger sollte nicht mit einer Benutzeroberfläche anfangen, sondern mit einem Kommandozeilen-Tool, um überhaupt erst mal ein Gefühl für die Sprache zu entwickeln. Eine Kommandozeile ist auch nicht so komplex wie eine Benutzeroberfläche. Microsoft hat es zwar nett gemeint, mit dem WinForms-Designer aber leider hat sich herausgestellt, dass die einfache Herangehensweise (Button in die Form ziehen, Doppelklick auf den Button und ausprogrammieren) zu vielen Problemen führt. Nicht umsonst haben sich Schlaue Köpfe überlegt, wie man die Entwicklung von Oberflächen von der Geschäftlogik entkoppelt und Dinge wie MVC (Model-View-Controller), MVP (Model-View-Presenter) oder MVVM (Model-View-ViewModel) entworfen. Ich sage ja nicht, dass ein Anfänger sich nun streng daran halten sollte, denn diese Techniken sind nicht unbedingt leicht zu verstehen aber ich finde, es ist schon wichtig, dass ein Anfänger die Teilaufgaben in seinem Projekt erkennt und die Teilaufgaben in Klassen und Methoden gliedert. 

    Buttons rumspringen lassen, halte ich auch nicht für zielführend. Ein Anfänger sollte schon sinnvollere Aufgaben lösen. In meinem Studium haben wir u.a. anfangen die Fibonacci-Reihenfolge zu berechnen oder ein Sudoku-Löser zu entwickeln. 

  2. vor 1 Stunde schrieb Tician:

    Das mit dem Weiterbilden ist schwierig du willst das ich ein Pferd zeichne ohne je eines gesehen zu haben, sprich ich soll meinen Code in etwas umwandeln das ich noch nie gesehen habe und unter dem ich mir gerade nichts vorstellen kann und gar nicht weiß wo ich ansetzen soll.

    Und genau das ist es ja, was ich meine: Es fehlen zu viele Grundlagen.
    Ich könnte jetzt anfangen, dass du dieses und jenes in eine Klasse packen kannst oder die Code-Teile in Methoden auslagern solltest aber du wirst es nicht verstehen. Dir ist nicht mal klar, warum man die Geschäftslogik von der Benutzeroberfläche trennen sollte. Man müsste dir also erst mal erklären, was Methoden und Klassen sind, was Vererbung oder Geheimhaltungsprinzip bedeutet, etc. Dann kommt man von einem zum anderen und das hat dann schon eher den Charakter eines Nachhilfeunterrichts. Für sowas ist ein Forum auch eine äußerst schlechte Kommunikationsplattform. 

    Es ist nicht böse gemeint aber ich denke, du nimmst dir zu viel auf einmal vor. Man sollte sich zwar Ziele setzen aber die Ziele sollten auch erreichbar sein und bei dir sind die Ziele noch Meilenweit entfernt und gerade Softwareentwicklung entwickelt sich sehr schnell in Richtung Frust. Vor allem wenn das Projekt immer Größer wird und Anpassungen gemacht werden müssen. Es hat schon seine Gründe, warum die Entwicklung von Software oft sehr lange dauert und sehr kostspielig ist. Sowas macht man nicht einfach nebenbei und auch nicht alleine. Schon gar nicht bei Software, die über mehrere Jahre stabil laufen sollen auch wenn sie sehr trivial erscheint. 

    vor 1 Stunde schrieb Fauch:

    ich würde mir an deiner Stelle ein Fachbuch besorgen, z.B. Head First C# (das dürfte auf deine Personenbeschreibung am besten passen). 

    Die Schrödinger-Reihe (Schrödinger programmiert C#) vom Rheinwerk-Verlag soll auch nicht schlecht sein.

  3. Ich finde es, ehrlich gesagt, schon ein hartes Stück, dass eine Person, die von Programmierung und offenbar auch von UX (User Experience) keine Ahnung hat und dann eine Software für den produktiven Einsatz entwickelt. Auch wenn du dich dafür interessierst, heißt es nicht, dass es funktioniert, was du da tust. Dein gesamter Code ist sehr fehleranfällig und auch unwartbar. Wenn jemand anders die Software weiterentwickeln soll, steht er dort vor einer Wartungshölle, die dazu führt, dass die Person die Software neuschreiben muss. Auch wenn du diese Software weiterentwickeln willst, wird der Aufwand immer weiter steigen, da immer mehr Fehler und Seiteneffekte hinzukommen.

    Mit Aufrufen aus der Win32-API begibst du dich auf sehr dünnen Eis. Da muss man schon wissen, was man da tut. Die Win32-API ist sog. unmanaged Code. Als Anfänger solltest du lieber die Finger von lassen. Wenn du also schon die Anwendung sperren willst (was ich nicht für schlau halte), dann öffne eine zweite Form mit einem Hinweis-Text. Die darunterliegende Form kann man dann nicht in den Fokus holen.

    vor 56 Minuten schrieb Tician:

    Im Admin-Programm (das was ihr jetzt gesehen habt) wird in einer DataGrid die DB-Tabelle gelistet. Mit Haken kann man anwählen welche Clients man auswählen möchte um einen Text in die Datenbank zu setzen - und einen 2. Haken um einen bool-wert in die Datenbank zu setzen der das blockieren der Tastatur und Maus für eine gewissen Zeit ankündigt.

    Also muss das Admin-Tool mit den Clients kommunizieren. Also fungiert das Admin-Tool als Server und die Clients müssen sich am Server registrieren. Irgendwie muss das Admin-Tool ja mit den Clients kommunizieren oder sollen die Clients tatsächlich alle 10 Sekunden eine Abfrage an die Datenbank starten, die den derzeitigen Status überprüft? Also hast du eine Verzögerung von maximal 10 Sekunden, wo der Anwender weiterhin Eingaben tätigen kann und glaub mir, das wird passieren.

    Ich würde dir echt empfehlen, es sein zu lassen, was du da tust. Offenbar nimmst du ja auch nicht mal Ratschläge an oder versuchst, dich weiterzubilden. Stattdessen versuchst du per Copy&Paste eine Client-Server-Software zu bauen. Das kann nur in die Hose gehen. Nichts für ungut, aber ich sehe derzeit keine Chance dir weiterzuhelfen, da schon das nötige Grundwissen fehlt und davon rede ich nicht mal von Client-Server-Architektur, sondern von allgemeinen Dingen.

  4. vor 20 Minuten schrieb Tician:

    Ihr habt glaube ich beide etwas missverstanden.

    Die Datenbank die ausgelesen wird geht nur bis Cell[4], während Cell[5] die Reihe ist die ich manuell mit CheckBoxen eingefügt habe. Das DataGrid ist NICHT mit der Datenbank verknüpft, es ließt sie nur aus und setzt eine checkBox-Spalte mit dran die nichts mit der Datenbank zu tun hat und die ich nur benutze um Reihen auszuwählen in denen ich etwas verändern möchte.

    
    //add CheckBox Column
                    DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn();
                    dataGridView1.Columns.Add(chk);
                    chk.HeaderText = "Choose";
                    chk.Name = "chk";

     

    Du legst die Spalte nur an, aber sie wird nicht mit Daten befüllt.

    Ich kenne mich auch nicht mit der DataGridViewCheckBoxColumn aus, aber offenbar handelt es sich hier eine Spalte, die ein Mapping besitzt, da man über die Property TrueValue bzw. FalseValue steuern kann, wann true oder false zurückgeliefert werden soll:

    https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcheckboxcolumn(v=vs.110).aspx

    vor 39 Minuten schrieb Tician:

    Keine Ahnung was damit gemeint ist, sorry.

    Stell dir mal vor, du willst deine Anwendung, die du mit WinForms gebastelt hast, später in eine Webentwicklung umwandeln möchtest. Mit deiner jetzigen Vorgehensweise musst du die Anwendung komplett neu entwickeln, weil die Logik, die die Anwendung steuert, in den WinForms-Komponenten steckt. Du kannst die Logik also nicht weiterverwenden.

  5.  

    Erst mal, wenn du schon Kommentare wie 

    //SQL Zeug
    //add CheckBox Column
    //ini lesen

    etc.

    schreibst, dann lager den Code doch in separate Methoden aus. Das macht die Methoden kleiner und übersichtlicher und mit Hilfe geeigneter Methodennamen ist der Code auch sprechender.

    Zweitens, öffnest du eine Datenbank-Verbindung aber du schließt sie nie wirklich. Mit Button1 öffnest du sie aber du schließt sie nie. Für gewöhnlich öffnet man eine Datenbank-Verbindung und wenn man fertig ist, wird sie wieder geschlossen. Man hält sie nicht einfach offen.

    Drittens, du schreibst Fachlogik in die UI. Das sollte man vermeiden.

    Zum eigentlichen Problem:
    Dein 

    row.Cells[5].Value

    ist vom Typ DBNull und kann daher nicht in ein Boolean gewandelt werden.
    Überprüfe doch mal, was von der Datenbank überhaupt zurückkommt und welcher Wert im GridView steht.

     

  6. vor 19 Stunden schrieb carstenj:

    Unabhängig davon, dass Albi schon geklärt hat warum ich die out2 genannt habe (dass sie einen besseren Namen bekommen könnte steht natürlich außer Frage) find ich deine Kommentare auch überflüssig. Was willst du mitteilen? Dass du es besser weisst? Angekommen. Ich konsultiere dich nächtes Mal vorher....

    Und warum benennst du sie nicht dementsprechend, was sie tut? 
    Offenbar willst du ja einen Zeilenumbruch nach jedem Komma machen. Wieso benennst du die Methode dann auch nicht so? z.B. newlineAfterComma. Außerdem hast du eine Codeverdoppelung, da du den Code von out() duplizierst. Dann wäre die Methode besser, wenn man sie so schreibst:

    private void newlineAfterComma() {
    	out();
    	newline();
    }

    Davon abgesehen, dass ich es sowieso sehr gruselig finde, wie das entwickelt wurde. Seiteneffekte sind da vorprogrammiert und es verstößt gegen das Open-Closed-Prinzip. Gut, dafür kenne ich den Werdegang von Hibernate zu wenig. Möglich, dass es aufgrund von Performance so implementiert wurde. Muss auch nicht deine Sorge sein.

  7. Hallo,

    ich wollte mich mal privat etwas mit Bluetooth beschäftigen und suche daher ein paar gute Lektüren zu diesem Thema.
    Speziell geht es mir um die Programmierung und um die Sicherheitsaspekte, die zu berücksichtigen sind.

    Ich selber arbeite inzwischen zwar hauptsächlich mit C# aber ich habe vor sechs Jahren auch beruflich für Android entwickelt, also bin ich auch der Sprache Java mächtig, wenn auch schon etwas eingerostet.

    Kennt da wer ein brauchbares Buch oder eine Webseite, wo man sich mal ein bisschen reinlesen könnte?
    Vielen Dank im Voraus. :)

  8. vor 9 Minuten schrieb Crash2001:

    Das war ja auch nur ein simples Beispiel. Man müsste da vermutlich schon mit komplexeren regulären Ausdrücken hantieren, um es sinnvoll wirklich nur da anzuwenden, wo es gewünscht ist.

    Und da kommt man dann von hundertstel ins tausendstel und verbrät dann zu viel Zeit und Energie. Für eine Software, die sowieso wohl schon veraltet ist. Da sollte man sich schon mal fragen, welchen Sinn es noch macht, etwas eigenes zu entwickeln, wenn es doch schon fertige Bibliotheken gibt? Man muss nicht immer das Rad neuerfinden. 

    Man sucht sich zwei oder drei Bibliotheken. Überprüft deren Einsatz und schaut sich die Lizenzbedingungen an. Evtl. kommt man dann zum Entschluss, dass es doch besser wäre, etwas eigenes zu entwickeln, wenn man das Feature wirklich braucht aber die Evaluierung grundsätzlich auszuschließen, weil man vorherein schon Angst hat, nicht etwas passendes zu finden, ist falsch.

  9. vor 2 Minuten schrieb Albi:

    Das Problem ist wie schon gesagt, das wir nicht sicher sein können das diese Bibliothek die wahrscheinlich am ende auch etwas kostet, im Tool ohne weiteres funktioniert. Daher möchten wir es selbst machen, ich sehe es für mich auch als Übung hier Erfahrungen und Know-How zu sammeln.

    Darum sollte man auch mehrere Bibliotheken suchen und diese evaluieren ...

  10. vor 3 Minuten schrieb Crash2001:

    Vor jedem Komma ein Zeilelumbruch => Komma suchen und Zeilelumbruch vorm Komma einfügen.
    Vor jeder Klammer ein Zeilenumbruch => Klammer suchen und durch Zeilenumbruch vor Klammer ersetzen
    Tabs nach bestimmten "Befehlen" => Befehle suchen und Tab danach einfügen.

    So einfach ist das nicht. 

    SELECT DATE('2016-01-01') FROM DUAL

    Wird ja in 

    SELECT
    	DATE
    	(
    		'2016-01-01'
    	)
    FROM
    	DUAL

    formatiert, was nicht schön aussieht.

     

    vor 6 Minuten schrieb Albi:

    Whiz-zarD nachdem meine Lange und Breite Erklärung bei dir oben wohl zum einen Ohr rein und beim anderen wieder raus ist, deine Beiträge helfen mir nicht, es liegt nicht in meiner Hand, der Kunde will nichts anderes, wir haben nicht die möglichkeit Dinge einzukaufen und wollen es auch nicht aus oben genannten Gründen. 

    Vielleicht solltest du dann meinen Beitrag noch mal durchlesen.
    Ich rede nicht von der gesamten Anwendung, sondern von einer Bibliothek, was dir das SQL formatiert ...

  11. Es ist ein Trugschluss, wenn man denkt, dass es besser ist, wenn man alles selber entwickelt. Das Problem sehe ich auch in der Firma, wo ich arbeite. Die Software ist jetzt 10 Jahre alt und damals war man auch der Meinung, dass es besser wäre alles selbst zu entwickeln, weil man Angst hatte, wenn man Bibliotheken von Drittanbietern ins Boot holt, dass die Firmen irgendwann pleite gehen und dann mit einer veralteten Bibliothek stehen bleibt. Man hat dann angefangen, etliche Frameworks selbstzuentwickeln. Die Entwicklung hat dann Jahre gedauert und nun hat man veraltete, gigantische nicht testbare Frameworks im Einsatz, die man nicht mal gegen modernere Frameworks austauschen kann. Das Fazit der ganzen Geschichte ist: Die sog. Test-Pyramide steht auf dem Kopf. Alles wird manuell getestet. Die Tester bremsen die Entwicklung aus, weil sie nicht hinterherkommen. Die Kunden beschweren sich zunehmend über die Performance und die Anzahl der Bugs erhöht sich auch immer weiter. Wir sind jetzt dabei, die komplette Anwendung neuzuschreiben, weil es nicht mehr anders geht. Wir haben nur das Glück, dass wir eine Nischensoftware für Banken entwickeln und in dieser Nische Marktführer sind. Ansonsten wären wir auch schon lange weg vom Fenster.

    Daher finde ich, dass eine Firma sich mehr auf ihre Kernkompetenzen konzentrieren soll und weniger um das Drumherum. Wenn ihr ein SQL-Formatter einbauen wollt, dann müsst ihr auch eins im Klaren sein: Nur weil ihr es entwickelt, ist es nicht kostenlos und auch nicht besser! Die Entwickler kosten auch ihr Geld und besitzen auch evtl. das nötige Know-How so ein Feature entwicklen zu können und da sollte man sich schon überlegen, ob es dann nicht eher Sinn macht, einmal Geld in die Hand zu nehmen und eine Bibliothek kaufen, was das gewünschte Feature kann, anstatt es selbstzuentwickeln und sehr viele Ressourcen dafür zu verschwenden. Es ist ja nicht nur die initiale Entwicklung. Es betrifft ja auch die Wartung und das Bugfixing.

    Dass das Know-How bei euch nicht vorhanden sieht man schon, dass ihr nicht wisst, wie ihr da vorgehen müsst, denn im Grunde müsst ihr ein Parser schreiben und dafür eignet sich ein endlicher Automat.

     

     

  12. General SQL Parser

    Das ist so das erste, was ich unter Google gefunden habe, was auch wohl als Open Source zur Verfügung steht. Alle anderen Frameworks, die ich gefunden habe, waren kostenpflichtig.

    Wofür dient denn das Tool? Als Datenanalyse? ETL?
    Vielleicht wäre es auch angebracht, mal das Tool zu überdenken und zu schauen, ob es überhaupt noch Sinn macht, das Tool weiterhin zu pflegen oder ob man nicht ein Tool einkauft, was genau die Aufgabe macht, die ihr braucht.

    Edit:
    Ok, ist wohl doch nicht so ganz kostenpflichtig, wie ich dachte. :/

  13. Ich finde auch schon die ganze Infrastruktur sehr merkwürdig und veraltet.
    Windows CE PDAs, ein Datenbank-Server der aus irgendwelchen Gründen regelmäßig neugestartet werden muss, im ERP-System müssen XML-Dateien manuell korrigiert werden, Webbrowser werden gezwungen maximiert dargestellt zu werden, ...

    Klingt alles nicht gerade nach einer gut funktionierenden Infrastruktur, sondern nach jahrzehntelanger Vernachlässigung der Infrastruktur, die ein Azubi jetzt wieder zurechtfrickeln muss, damit sie irgendwie am Leben erhalten werden kann.

  14. Du hast doch nur die zwei Möglichkeiten:
    Entweder du sorgst für eine Ausfallsicherheit (wie sie auch immer aussehen mag) und du hast die Daten redundant
    oder du sorgst dafür, dass der Abgleich der Datenbanken nicht stattfinden kann, wenn Datenbank B nicht zur Verfügung steht.

    Man kann ja nicht zaubern und ein Abgleich implementieren, der auf eine Datenbank zugreift, die nicht da ist.

  15. Wenn du das nicht weißt, wer dann?

    Wenn der Server zwei mal im Monat für eine gewisse Zeit offline ist, dann ist er ja für, sagen wir mal, 95% der Zeit online und da sollte man sich auch fragen, ob für die restlichen 5% überhaupt sich der Aufwand lohnt, irgendwas zu machen, wenn die Daten sich sowieso kaum ändern. Vor allem in der Zeit, wo er offline ist, die Daten sich sowieso nicht ändern. 

  16. Was meinst du mit komplex?

    Bild-dateien könntest du mit Base64 kodieren und als ein CDATA-abschnitt in die XML-datei packen. Wenn die Texte mehrsprachig sein müssen, kannst du auch nur einen identifier in die XML-datei packen und dann für die Sprachen eine Ressourcen-datei anlegen oder du legst für jede Sprache ein eigenes Element in der XML-datei an.

    Wenn ich mich noch recht erinnere, dann müsste in Android auch SQLite integriert sein. Vielleicht ist das ein Stück eleganter.

    Es gibt hier nun mal keine einfache klicki-bunti-lösung. Da muss man dann selbst ran.

  17. Welche Gründe sprechen denn dagegen? Der initiale Aufwand? Wurde auch berücksichtigt, dass die App sich nicht alleine deployed? Jedes Mal eine neue App in den Store laden, wenn eine Erweiterung hinzugefügt wurde, halte ich für nicht zielführend. Schon mal davon ausgehen muss, dass nicht jeder die aktuelle App-Version besitzt und somit nicht alle Erweiterungen sieht.

    Eine REST-Schnittstelle zu implementieren ist jetzt auch nicht die Welt. Man braucht jetzt auch keine Datenbank aufsetzen. Eine XML- oder SQLite-Datei würde auch schon reichen. Alternativ lädt man nur die XML-Datei runter. Ein Apache-Server ist binnen wenigen Minuten aufgesetzt und ein HTTP-Request ist mittels Java auch ein Ein-Zeiler. Über die Zeit gesehen ist dieser Aufwand geringer, als immer eine neue App in den Store zu laden.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...