Zum Inhalt springen

Tician

Mitglieder
  • Gesamte Inhalte

    541
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    9

Alle Inhalte von Tician

  1. Naja so haben wir es gelernt... unser Lehrer im ersten Lehrjahr war Java-Programmierer, die Schüler fanden ihn gut aber er war eben nur ein Jahr lang da und das ist was wir beigebracht bekommen haben. http://wierbicki.de/programmierung-c/ Der Lehrer selbst musste sich in C# einarbeiten. Das sind unsere Materialien aus dem ersten Lehrjahr nur mittlerweile habe ich so angst zu hören "Habt ihr doch gelernt" und ich kann es einfach nicht anwenden. Das mit dem Datentyp im Namen als Konvention für den Unterricht und Klassenarbeiten konnten wir ihm ausreden, fanden wir auch nicht so dolle - und wie du siehst mache ich es ja auch nicht. Der Rest mit den typischen Fehlern war für komplette Anfänger sehr hilfreich, in Klassenarbeiten mussten wir Fehler in vorgefertigtem Code finden (auf dem Blatt Papier natürlich). Klammern die gefehlt haben, Semikolon die vergessen wurden, Anführungszeichen bei strings und vieles mehr. Zurück zum Thema: Wenn ich Getter und Setter explizit schreibe dann rufe ich es wie eine Methode auf? Du hast ja oben slebst ein Beispiel gezeigt wie der Compiler es übersetzen würde, das sieht mir jetzt wie das aus was wir gelernt haben - oder? Im Prinzip werden ich zukünftig wohl sowieso nur noch mit dem {get; set} arbeiten schätze ich.
  2. Oh praktisch mit dem Format! Das neue mit der Interpolation gefällt mir sogar noch besser! Das Getter und Setter nicht wie normale Methoden aufgerufen werden muss ich mir merken... das verwirrt mich gerade weil ich es anders gefunden habe. Ist das vielleicht ein Unterschied wie ich die Eigenschaften schreibe? Oder was ist der Unterschied zu dem was hier steht? http://wierbicki.de/wp-content/uploads/2016/02/2016-01-20-SAEL-E1FI2-Datenfelder-Getter-Setter.pdf mensch1.SetName("Ich"); anstatt mensch1.name = "Ich";
  3. Ich denke ich habe es soweit verstanden, aber wie ich das dann in einer anderen Klasse benutze, also mit set einen Wert übergeben und dann mit get wiederbekomme ist mir ein Rätsel. Würde es dann in Klasse B so aussehen? class B { A.set_Nummer(15); int zahl = A.get_Nummer(); Console.WriteLine("Meine Zahl ist " + zahl); //bzw kürzer wahrscheinlich so oder ähnlich? Console.WriteLine("Meine Zahl ist " + A.get_Nummer()) } Was anderes: Console.WriteLine("Nummer gesetzt auf {0}", value) Ich habe das schon öfter gesehen aber warum benutzt man das? Warum nicht so: Console.WriteLine("Nummer gesetzt auf " + value) Was machen die geschweiften Klammern mit der null da?
  4. Ich verstehe dich nicht. Ich kann programmieren, ob es gut ist ist eine andere Frage. Du sagst keiner macht am Anfang perfekten Code und ich soll es mit der OOP einfach versuchen - aber du scheinst perfekten Code zu erwarten. Jetzt versuche ich es, du willst das ich es unbedingt ganz genauso mache wie du es willst und es dir vorstellst und wenn ich sage "das ist mir zu schwer" weil du zwangzig verschiedene Dinge benutzt von denen ich noch nie in meinem Leben gehört habe, die ich noch nie gesehen habe dann scheinst du beleidigt zu sein (so kommt es rüber) und erzählst mir "lern programmieren". Du hast so viel Wissen und du versuchst es weiter zu geben - allerdings alles auf einmal. Mein erster Versuch war da - und die Rückmeldung "nicht in den Konstruktor, mach stattdessen Methoden daraus" kam bei mir an. Also war mein nächstes Vorhaben meine Klasse zum Dateien einlesen in ein paar Methoden aufzuspalten... Das Projekt läuft, mir ist absolut die Lust daran vergangen irgendwas zu optimieren oder umzustellen, die anfängliche Freude ist weg, stattdessen würde ich am liebsten einfach heulen. Ich lass das jetzt ruhen und versuch es mit dem nächsten Projekt besser zu machen.
  5. Das war doch nur ein Beispiel was in der Datei drin steht (und ich entziffern kann), da stehen Abkürzungen in dem Header mit denen ich nichts anfangen kann. Lass mich erstmal meine erste Klasse fertig machen und herumprobieren wie ich Variablen rumschieben kann, ich wäre ja schon froh das zu verstehen, du weißt gar nichts wie frustrierend das ist wenn man sich vornimmt das kleine 1x1 zu lernen und jemand anderes aber gleich in einen Rechenbereich mit 20 nullen hinter der Zahl vordringen möchte. Ich kann das Programm nicht mehr sehen und wenn das irgendwie mit Hilfe von Klassen und Methoden tut bin ich doch schon glücklich und kann es mit dem nächsten Programm gleich so anfangen - und dann wieder einen Schritt weiter gehen mit der Verbesserung. Und ich möchte nicht noch mehr Preis geben und mir dadurch ärger einhandeln...
  6. Paketnummer - und ich lag falsch das ist die 7. Nummer, aber das sollte wohl nichts zur Sache tun^^ Ich schätze man kann jetzt erahnen was ich damit tu und warum ich eine bestimmte Internetseite abfrage.
  7. Ja ich arbeite in einem Logistik/e-commerce Betrieb. Was ist dieses virtual in deinem Code? Das Problem ist das ich mir da zu viel Mühe machen würde alles was mich an der ganzen Datei interessiert ist nur "die 5. Nummer jeder Zeile", der Rest bleibt wie er ist.
  8. Muss ich wohl wieder etwas Tiefer in die Tasche greifen. Ich weiß auch nicht was alle Begriffe der ersten Zeile Bedeuten, die die ich aus den Abkürzungen auslesen kann sind: Datum, Packstück-Nummer, Auftrags-Nummer, Paketnummer, Bezeichnung, Menge, Lagerplatz Wie nenne ich das?
  9. Ich nehme den Ratschlag an das ich erstmal Methoden mache statt alles in den Kontruktor zu kloppen, wenn ich dann den Austausch von Daten zwischen Klassen, Methoden und weißnichtwas hin kriege bin ich schon glücklich... Der Rest muss folgen wenn das Programm auf diese Weise wieder fehlerfrei funktioniert, dann würde ich mich trauen noch einmal umzubauen. Ich brauch einen Zwischenschritt. Edit: Es fängt schon an mit dem Problem das ich gar nicht weiß nach was ich meine CSV benennen kann, anders als bei einer Datenbank habe ich nichts das eine Zeile eindeutig identifiziert, es gibt keine durchnummerierung oder sowas, ich hab Zeilen doppelt oder dreifach
  10. @Whiz-zarD Du hast dir so viel Mühe gegeben und ich hab mir das jetzt 4 mal durchgelesen, das ist so mega viel das ich gar nichts mehr verstehe (du wolltest es wahrscheinlich gleich perfekt haben?), wenn ich das übernehme hätte ich auch ein Programm in C oder sowas abschreiben können. Es ist nicht mehr meines, ich verstehe gar nicht was da vorgeht und ohne tausend Kommentare geht da nix. War mein eigenes Vorgehen denn so falsch? Ich hatte vor das beizubehalten, aber aus der Klasse vielleicht ein "CsvDatei" zu machen mit evtl Methoden "Einlesen", "Aufspalten" irgendwie sowas... mich verlässt gerade ziemlich schnell die Motivation und der Mut
  11. public List<string>[,] GetList() { return liste; } mit entsprechendem Aufruf List<string>[,] liste = datei.GetList(); Doch etwas gefunden das ich verstehe^^ Schauen wir mal ob es später funktioniert Thema kann offen bleiben ich bin mir sicher das ich noch ein paar mal gegen die Wand rennen werde sobald ich das Programm mal starte.
  12. Moin, Wie versprochen versuche ich mich and er OOP um mir den Spaghetti-Code abzugewöhnen. Tötet mich nicht das ist mein erstes Mal und die Chancen bestehen das ich weit am Ziel vorbei geschossen bin. Folgenden Code mit 2 Klassen habe ich: class Program { static void Main(string[] args) { try { string sourcePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\blabla"; string searchPattern = "*.csv"; int spalte = 7; //lesen DateiEinlesen datei = new DateiEinlesen(sourcePath, searchPattern, spalte); Console.WriteLine("Dateien eingelesen"); } catch { } } } class DateiEinlesen { string sourcePath; string searchPattern; int spalte; public DateiEinlesen(string sourcePath, string searchPattern, int spalte) { try { this.sourcePath = sourcePath; this.searchPattern = searchPattern; this.spalte = spalte; string currentLine; string[] fileArray = Directory.GetFiles(sourcePath, searchPattern); string[] lineData; int sourcearrayLength = fileArray.Length; Console.WriteLine(sourcearrayLength + " Dateien gefunden!"); List<string>[,] liste = new List<string>[sourcearrayLength,2]; //liste für jede Datei[NummerDerDatei,Zeilen[1]/AusgewählteSpalte[2]] if (sourcearrayLength == 0) { Environment.Exit(0); } for (int x = 1; x <= sourcearrayLength; x++) //jede Datei { using (StreamReader sr = new StreamReader(sourcePath)) { liste[x - 1, 0].Add(sr.ReadLine()); while ((currentLine = sr.ReadLine()) != null) { liste[x - 1, 0].Add(currentLine); lineData = currentLine.Split(';'); liste[x - 1, 1].Add(lineData[spalte - 1]); } sr.Close(); } } } catch (Exception ex) { //sr.Close(); //Sichtbarkeit?! Console.WriteLine(ex); } } } Das Programm soll csv-Dateien in einem Ordner einlesen. Pro Datei soll es jeweils 2 Listen geben, eine mit den ganzen zeilen und eine nur mit einer bestimmten Spalte jeder Zeile. 1. Problem: Ich weiß wie ich über den Konstruktor Variablen von meiner Main-Klasse in die andere Klasse zum benutzen weitergeben kann. Ich hab absolut null Ahnung oder Erfahrung wie ich meine 2-dimensionale Liste zurück an meine Main-Klasse geben kann um sie dort für weitere Zwecke zu benutzen (später an eine weitere Klasse zu übergeben). Ich habe versucht mich zu belesen, aber ich versteh das get/set Zeug ums verrecken nicht. 2. Problem: der StreamReader sollte (wenn ich das richtig verstanden habe) auch bei einer Exception ein Close() bekommen, das ist mir aber hier nicht so möglich wie ich es wollte. Wie machen andere das? Könnte mir jemand auf die Sprünge helfen?
  13. OK Vorschlag: Ich schreib das ganze Ding neu (weiß aber nicht ob ich morgen noch dazu komme) und erstelle 4 Klassen und dann schau ich mal wo ich gegen die Wand renn und meld mich noch einmal
  14. Kommentare sind im Prinzip für mich, wenn ich jetzt anfangen würde using() zu benutzen würde ich mir auch minimum dahinter schreiben "braucht kein Exception, ruft Dispose auf" weil ich mir das einfach nicht merken kann. Gib mir ne Woche oder gar einen Monat ohne Programmieren und ich erkenne das using() nicht mehr. Ich weiß das mein Code grauenhaft ist und du hältst es mir ja auch mit jedem neuen Thread unter die Nase, aber das nehme ich als deine Meinung hin, ich versuche das was ich kann ohne das man mir über ein Forum die Grundlagen neu beibringen muss, aber das Thema hatten wir schon. Wenn ich anfange Klassen zu machen und die einfachsten Dinge (wie die gottverdammten Zugriffsebenen!) nicht hinbekomme dann ist mir und auch anderen nicht geholfen, es raubt mehr Zeit als wenn ich einen Code poste den man (auch wenn es einem die Nägel hochziehen) verstehen kann. Irgendwann werde ich hoffentlich mal etwas größeres Programmieren und dann wird sich mir vielleicht auch der Sinn von Klassen eher erschließen als bei meinen kleinen Programmen hier.
  15. Auch wenn das jetzt alles wieder sehr Lehrreich war würde ich fast behaupten wenn ich jetzt das hier mache: catch (Exception ex) { Console.WriteLine(ex); Console.WriteLine("Programm wird beendet, bitte beliebige Taste druecken..."); sw.Close(); sr.Close(); sw.Dispose(); Console.ReadKey(); } Das sich das Programm trotzdem an der unbehandelten Ausnahme bei sw.Close() aufhängt weil er das schon gar nicht mehr machen kann. Wenn ich das jetzt aber umdrehe und sw.Dispose() zuerst aufrufe denke ich gibt es auch Probleme (ich sollte ja keine Ressourcen freigeben wenn der StreamWriter noch nicht geschlossen wurde). Wenn ich jetzt also doch ein using() benutze... wann genau wird das Dispose aufgerufen? Direkt am Anfang der Exception oder am Ende? Keine Ahnung wie lange ich heute noch bleibe das ist alles Spekulation basierend auf meinem Verständnis der Dinge, ich probier entweder später oder morgen nochmal rum.
  16. Also schaue ich mir die Klassen die ich benutze wohl besser genauer an. Ist das IDispose das einzige Anzeichen für unmanaged Code? Wenn ich das richtig verstehe und faul wäre müsste ich rein theoretisch in meiner Exception also statt sw.Close() einfach ein sw.Dispose() einfügen? Oder brauche ich trotzdem das sw.Close() (wir hatten in der Schule gelernt das das Erzeugen des Objektes eine Datei öffnet; mit sw.WriteLine schreiben wir in die Datei und ohne sw.Close() gibt es keine Datei oder Veränderung da mit sw.Close die Datei erst gespeichert und geschlossen wird)? Oder warum meintest du brauche ich dringend ein using? Ich behandel die csv ja wie eine normale Text-Datei und genauso wird sie auch wieder geschrieben, das Programm funktioniert ja soweit fast einwandfrei.
  17. Ah, dann hast du das wiederholt was mein Ausbilder vorgeschlagen hat: Erst alles in einer Variable sammeln und dann in einem Rutsch in die Datei. Wenn mein Programm so abstürzt hab ich nämlich auch eine Datei (Die .tmp die geschrieben wird) die sich dann auch nach PC Neustart nicht löschen lässt ("wird von einem Prozess verwendet"), das dauert dann etwa 20 Minuten bis dieser Zugriff weg ist. Ich habe jetzt oft von managed und unmanaged Code gehört und weiß auch etwa was es ist. Wie erkenne ich unmanaged Code denn, wie kommst du auf dieses IDisposable? Ich dachte unmanaged Code wäre alles was ich von einer .dll entnehme die nicht automatisch in der IDE enthalten ist (z.B. Public Declare Function BlockInput Lib "user32".... ) oder sowas, wir haben das Schreiben und Lesen aus Dateien in der Schule drangenommen aber auch nur ohne dieses "using". Ich habe also die Wahl entweder erst alles im Speicher zu machen oder ein using zu benutzen. Und wenn ich das richtig gelesen habe dann muss ich Dispose() aufrufen wenn ich fertig bin, aber wenn mein Code gegen die Wand rennt (also ne Exception wirft) dann wird Dispose() automatisch ausgeführt. https://msdn.microsoft.com/de-de/library/yh598w02.aspx
  18. So also ich kann sagen beim ersten Ausführen an jedem PC kommt dieser Fehler, danach nicht mehr. Ich hab also nachdem es 20 mal lief den PC neu gestartet und zack hatte den Fehler. Wie gesagt kann ich nicht sagen warum sich das Netzwerk so verhält, aber das Programm macht komisches, wenn ich das richtig sehe kommt der mit dem sw.Close() nicht klar und schmeißt dann noch einen unbehandelten Fehler?
  19. Oh, ich hatte es jetzt vorübergehend auf Desktop verschoben weil es Netzwerkmäßig eben diesen Hänger hatte, das sollte eigentlich ein Netzwerkpfad sein //string sourcePath = @"\\nas-xxx\blabla"; //string destinationPath = @"\\nas-xxx\blabla"; string sourcePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\Ordnername"; string destinationPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\Ordnername"; So sieht es gerade vorübergehend im Code aus, ich hatte es vergessen zu verändern. Mit deinen Fragen kann ich nichts anfangen, den genauen Wortlaut der Exceptions muss ich nochmal irgendwie kreieren und hoffen das ich einen Screenshot machen kann und das "Programm funktioniert nicht mehr" blabla von Windows irgendwie wegschieben. Was sind Symbol-Dateien und Stacktrace? Ich kann also die pdb-Datei in den Ordner werfen in dem auch meine exe-Datei ist? Erzeugt das dann eine Datei?
  20. Ja, mein Programm soll aus csv-Dateien aus jeder Zeile eine bestimmte Spalte auslesen (Zahl). Diese wird an einen link gehängt, der link selbst steht fest im Code und gibt auch ohne den Zusatz der Zahl (oder sogar einer falschen Zahl) ein Ergebnis zurück. Die URL muss richtig sein, zu 99% läuft das Programm durch, selten gibt der angesprochen Server einen Fehler (500 - "Interner Serverfehler") zurück, auch das funktioniert einwadnfrei und das Programm läuft wie ich es wollte weiter. Der Rest stimmt nicht ganz, ich fächer meinen Code mal komplett auf, aber dadurch das es Spaghetti-Code ist bin ich einfach mittlerweile schon so deprimiert das ich mich nicht mehr traue den Code zu posten ._. static void Main(string[] args) { StreamReader sr = null; string currentLine; StreamWriter sw = null; List<string> nummerListe = new List<string>(); try { string sourcePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) string destinationPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) //doppelt da später noch geändert wird string[] filearray = Directory.GetFiles(sourcePath, "*.csv"); int sourcearraylength = filearray.Length; if (sourcearraylength == 0) //wenn keine Datei vorhanden dann schließ das Programm { Environment.Exit(0); } for (int x = 1; x <= sourcearraylength; x++) //jeder Datei { sr = new StreamReader(filearray[x - 1], true); string dateiname = "\\inArbeit"; sw = new StreamWriter(destinationPath + dateiname + ".tmp"); WebClient wc = new WebClient(); //Read and write header string header = sr.ReadLine(); sw.WriteLine(header + ";Status-Text;Status"); while ((currentLine = sr.ReadLine()) != null) //jede Zeile { string[] singleData = currentLine.Split(';'); string nummer = singleData[6]; if (singleData[0] == "Anzahl:") { //Datei hat noch viele leere Zeilen nach "Anzahl:", diese sollen übersprungen werden sw.WriteLine(currentLine); break; } Console.WriteLine("Schaue nach Nummer: " + nummer); if (!nummerListe.Contains(nummer)) { //get site information string url = "https://blabla" + nummer; byte[] response = null; try { response = wc.DownloadData(url); } catch (WebException) { Console.WriteLine("...HTTP-Error"); sw.WriteLine(currentLine+";Fehler;Fehler"); continue; } string webtext = Encoding.ASCII.GetString(response); //Regex for searching Regex reg = new Regex("String1", RegexOptions.Singleline); Regex reg2 = new Regex("String2", RegexOptions.Singleline); Regex reg3 = new Regex("String3", RegexOptions.Singleline); Regex reg4 = new Regex("String4", RegexOptions.Singleline); Match match = reg.Match(webtext); Match match2 = reg2.Match(webtext); Match match3 = reg3.Match(webtext); Match match4 = reg4.Match(webtext); if (match.Success) { sw.WriteLine(currentLine + ";blabla;alles gut"); Console.WriteLine("...gut"); } else if (match2.Success) { sw.WriteLine(currentLine + ";blabla2;gut"); Console.WriteLine("...gut"); } else if (match3.Success) { sw.WriteLine(currentLine + ";blabla3;gut"); Console.WriteLine("...gut"); } else if (match4.Success) { sw.WriteLine(currentLine + ";blabla4;kein Status"); Console.WriteLine("...ohne Status"); } else { sw.WriteLine(currentLine + ";blabla5;ueberpruefen"); Console.WriteLine("...ueberpruefen"); } //add to list versandnummerListe.Add(versandnummer); } else { sw.WriteLine(currentLine + ";bereits geprueft;uebersprungen"); Console.WriteLine("...uebersprungen"); } } sw.Close(); sr.Close(); File.Move(destinationPath + dateiname + ".tmp", destinationPath + "\\Fertig" + Path.GetFileName(filearray[x - 1])); } Console.WriteLine("Abgeschlossen\n\nBeliebige Taste zum Beenden des Programmes druecken..."); Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex); Console.WriteLine("Programm wird beendet, bitte beliebige Taste druecken..."); sw.Close(); sr.Close(); Console.ReadKey(); } } Ich hoffe ich hab alles erwischt was nicht neutral ist. Wie gesagt das Programm stürzt nur ohne IDE ab und da gibt es dann keine Zeilennummer oder ähnliches, das einzige was ich gesehen habe ist das mehrmals ein "Pfad nicht vorhanden" kam, weil wie gesagt aus irgendeinem Grund beim Programmstart der Netzwerk-Ordner mal kurz neu geladen hat - zum 2. mal.
  21. OK dann hier mal anhand des Codes erklärt was ich mache: try { ... byte[] response; //ließ alle Dateien in einem Ordner ein for () //für jede Datei führe aus... { //Bsp: skip erste Zeile (Header) WebClient wc = new WebClient(); while ((currentLine = sr.ReadLine()) != null) //für jede Zeile... { if (!nummerliste.Contains(nummer) //wenn eine Nummer in der Datei noch nicht vorkam { byte[] response = null; try { response = WebClient.DownloadData(url+nummer) //ließ die Seite aus } catch (WebException) { Console.WriteLine("HTTP-Error") //Seite gibt bei Stichzeiten einen 500-Error zurück, das ist ein Einzelfall und soll übersprungen werden continue; } //hier noch einige if/Else if/else-Abfragen um die Informationen zu sortieren nummerliste.Add(nummer) } } sw.Close(); sr.Close(); } } catch (Exception ex) { Console.WriteLine(ex); sw.Close(); sr.Close(); Console.ReadKey(); } Das sollte einen groben EInblick geben was passiert, bzw was ich bezwecken möchte. Die Betreiber der Siete haben eine API, die aber leider schon seit Wochen in Wartung und nicht verfügbar ist weswegen ich das Programm hier überhaupt schreibe
  22. Kam noch nicht dazu, da muss was wichtigeres zuerst laufen
  23. Hallöööchen mit 3 öchen ich habe ein Programm das Dateien einließt und auch schreibt. Das Programm läuft mit der IDE einwandfrei (liegt auf einem Netzlaufwerk) - ohne IDE stürzt es oft ab. Unser Netzwerk ist sehr stabil, die exe-Datei, die zu lesende Datei und die zu schreibende Datei befinden sich alle im selben Ordner und sobald ich mein Programm starte passiert es oft das der grüne (Windows 7) Ladebalken in der Pfad-Leiste des Netzwerkordners erscheint, kurz darauf schmeißt mein Programm 2 IO-Exceptions (eine davon "Netzwerkpfad nicht vorhanden") und reagiert schließlich nicht mehr (ich schätze ja das Programm selbst wird komplett in den Arbeitsspeicher geladen sonst kann er ja nicht mehr auf die exe zugreifen?). Abgefangen habe ich Exceptions so: try { ... byte[] response; for () { while () { if () { try { response = WebClient.DownloadData(url) } catch (WebException) { Console.WriteLine("HTTP-Error") continue; } } } } } catch (Exception ex) { Console.WriteLine(ex); sw.Close(); sr.Close(); Console.ReadKey(); } Den WebException brauche ich extra, weil das Programm mit neuem Beginn der while-Schleife weiterlaufen muss, bei allem anderen soll es natürlich abbrechen. Ich hätte behauptet eigentlich sollte ich nur 1 Exception erhalten, aber mein Programm wirft ja 2 bevor es abstürzt. Ist das nun weil C# automatisch mehrere Threads erstellt oder rutscht es bei IO-Exceptions irgendwie doch in das kleine WebException rein oder kann ich bei Netzwerkabbruch überhaupt nichts abfangen weil das Programm ja selbst nicht erreichbar ist? Warum das Netzlaufwerk an erster Stelle da kurz Schluckauf hat weiß ich nicht. Für Hilfe wäre ich wie immer dankbar.
  24. Ich benutze auch den Packet Tracer. Ein Tutorial müsste im Standardprogramm zu finden sein (Help -> Turorials). Weitere Übungen findest du als pka-Dateien im Internet von Anfänger-Niveau bis hin zu CCNA Übungen.
  25. Exakt, wir lernen es, weswegen die Ausssage hier auch nichts zu suchen hat, das ich es nicht anwenden kann ist mein Problem Du beziehst dich nur auf FIAE'ler, aber was denkst du erwartet man programmiertechnisch von einem FISI wie mir später? Kein Lehrer und auch keine Schule ist perfekt, man muss sich anpassen und wenn ich etwas nicht verstehe frage ich meinen Ausbilder oder belese mich in Büchern oder über google.

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...