Jump to content

Schneeherz

Mitglieder
  • Gesamte Inhalte

    15
  • Benutzer seit

  • Letzter Besuch

Über Schneeherz

  • Rang
    Reg.-Benutzer
  • Geburtstag 27.10.1992
  1. Hallo zusammen, suche ebenfalls Abschlussprüfungen (FIAE) der letzten Jahre zum Üben. Hauptsächlich ab 2010 und später. Gerne auch mit Lösungen, wenn vorhanden Wäre super nett, wenn jemand helfen könnte schneeherz93@web.de Vielen Dank im Voraus!
  2. Das hat mein Problem gelöst, danke Ich hab nach allen möglichen Sachen mit Bitmaps im Titel gesucht, aber die Idee nach Graphics zu suchen, bin ich leider nicht gekommen^^ Vielen Dank für den Link und die Hilfe!
  3. Hallo zusammen, ich sitze gerade an einem kleinen Spielprojekt in Visual C#. Und zwar will ich folgendes im Moment erst einmal realisieren: Ich möchte ein Spielbrett mit Spielfeldern und eine Figur, die sich darauf bewegt. Meine bisherige Lösung: Das Spielbrett hat eine Bitmap als Hintergrund. Der Hintergrund ist 1000x800 Pixel. Die einzelnen Spielfelder auf diesem Hintergrund sind ebenfalls Bitmaps mit jeweils einer Größe von 50x50 Pixel. Aus dem Hintergrund erstelle ich mir ein Graphics-Objekt und auf dieses zeichne ich dann wiederum die einzelnen Spielfelder. Beispielcode: ... Bitmap hintergrund = new Bitmap("Bitmaps\\hintergrund.bmp"); //Bitmap erstellen ... Graphics g = Graphics.FromImage(hintergrund); //Graphics Objekt erzeugen ... //Dann erfolgt eine Überprüfung welches Spielfeld gezeichnet werden soll ... //Beispielhaftes Zeichnen eines Feldes, x und y werden vorher berechnet Feld feld = new Feld(); Bitmap feldBitmap = feld.getFeldBitmap(); g.DrawImage(feldBitmap, x, y, feldBitmap.Width, feldBitmap.Height); ... g.Dispose(); Das Zeichnen der Spielfelder funktioniert soweit auch. Ich habe am Ende ein Spielbrett genau so wie ich es erstellen wollte. Nun wollte ich Figuren auf das Spielbrett zeichnen. Dabei gehe ich genauso vor wie oben. Ich nehme als Hintergrund das erstellte Spielbrett und möchte nun statt Feldern eben Figuren mit 50x50 Pixel darauf malen. Das Zeichnen an sich funktioniert soweit auch. Das einzige Problem ist, dass die Größen trotz gleicher Pixel nicht übereinstimmen. Die Figur ist viel kleiner als ein Spielfeld, obwohl beide 50x50 Pixel groß sind. Wenn ich mir jedoch die Größen auf der Konsole ausgeben lasse, stimmen alle. Ich habe dann mal einen Screenshot von dem Spielfeld gemacht und festgestellt, dass das Brett viel breiter ist als die 1000 Pixel. Beim Ausführen ist es ca. 1500 Pixel breit, aber ich weiß wirklich nicht weshalb. Die Größen werden immer korrekt ausgegeben. 1000x800 für den HIntergrund, 50x50 für die Felder und die Figuren. Aber irgendwo scheint Visual Studio das hoch zu skalieren. Hat jemand eine Idee wo das passieren könnte und weshalb? Vielen Dank im Voraus!
  4. Okay, dann öffne ich sie vom Code heraus. Vielen Dank für die Antwort!
  5. Hallo zusammen, ich durchsuche jetzt schon länger das Internet nach Informationen über den im Titel genannten Sachverhalt, kann aber leider rein gar nichts finden. Deshalb dachte ich, ich schau mal, ob hier jemand vielleicht weiß, wie es gehen könnte.. Also, das Problem ist folgendes: Ich erzeuge innerhalb meines Codes xml-Dateien und lege die in einem bestimmten Ordner ab. Wenn ich danach dann die Dateien im Explorer anklicke, hätte ich gerne, dass sie im eingestellten Standardbrowser geöffnet werden statt im Texteditor. Gibt es irgendeine Möglichkeit im Code den Dateien den Browser zum Öffnen zuzuweisen? Oder kann man vielleicht den "Öffnen mit"-Dialog irgendwie nachstellen o.Ä.? Vielen Dank schon einmal im Voraus! LG
  6. Hallo zusammen, ich bin momentan dabei mich ein bisschen in SQL Datenbanken einzuarbeiten und stehe jetzt vor folgendem Problem: Ich habe ein kleines Programm, das auf Basis einer Backup-Datei eine Datenbank zurücksetzen soll bzw. die Datenbank aufbauend auf der Backup-Datei erstellen soll, falls diese noch nicht existieren sollte (also wenn quasi eine Datenbank unter einem anderen Namen kopiert werden soll oder lokal gezogen wird, wo sie noch nicht besteht). Das alles soll über Code (Java, IntelliJ) und nicht direkt im Management Studio stattfinden. Dafür nutze ich PreparedStatements, um die SQL Befehle im Code zu verwenden. Ich gehe folgendermaßen vor: 1. Ich erstelle eine Verbindung zur Datenbank. Funktioniert. 2. Ich überprüfe anhand des Datenbanknames in der Backup-Datei, deren Pfad ich aus einer Konfiguration hole, ob die Datenbank auf dem Server existiert oder nicht. Funktioniert. 3. Existiert sie nicht, soll sie mit folgendem SQL-Befehl erstellt werden: String sql = "use master; restore database [dbname] from DISK=[backup-File Pfad] with file=1, move N'[dbname]' to N'[gewünschter Pfad für MDF Datei]', move N'[dbname]_LOG' to " + N'[gewünschter Pfad für LDF Datei]', nounload, replace"; Und hier liegt dann das Problem. Obwohl ich MOVE verwende und neue (bereits existierende) Pfade für die MDF und LDF Dateien angebe, sucht das Programm immer noch unter dem Pfad des Servers, auf dem die backup-Datei erstellt wurde. Bsp: Ich gebe einen Pfad an wie "D:\Programme\Microsoft SQL Server\...\DATA" (und der Pfad existiert auch), aber das Programm liefert folgende Fehlermeldung: "Directory lookup for the file "D:\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\[dbname].mdf" failed with the operating system error 3(Das System kann den angegebenen Pfad nicht finden.)." Es ist klar, dass er den Pfad nicht finden kann, weil er eben bei mir lokal auch nicht existiert und noch von dem Server übernommen wurde, auf dem das Backup-File erstellt wurde. Mir ist aber nicht bewusst, weshalb das so ist, weil ich eigentlich dachte, dass genau dafür der MOVE Befehl da ist. Damit man nicht mehr auf den alten Pfad zugreift. Ich habe im Internet stundenlang alles durchsucht und bin auch immer nur auf die Lösung mit dem MOVE Befehl gestoßen, der nur eben leider bei mir nicht funktioniert. Wenn ich die Befehle direkt im SQL Server Management Studio ausführe, kommt diese Fehlermeldung: "Logical file '[dbname]' is not part of database '[dbname]'" Ich nutze den SQL Server 2014 auf Windows 7... Hat jemand eine Ahnung, weshalb es nicht funktioniert? Habe ich vielleicht etwas übersehen oder den Befehl falsch geschrieben? Wenn ich den alten Pfad händisch anlege, funktioniert auch alles, nur ist es eben Voraussetzung, dass dieser Pfad nicht existieren muss. Ich habe mir auch überlegt, ob ich den alten Pfad einfach anlege, wenn er nicht existiert, weil das wohl die Lösung mit weniger Aufwand ist. Allerdings trat da dann das Problem auf, dass ich keine Ahnung habe, wie ich auf diesen Pfad zugreifen kann. Mit Debuggen komme ich nicht weit, weil es mir über den Pfad keinerlei Informationen gibt und ich den Pfad letztendlich nur in der Fehlermeldung sehe und nicht nachvollziehen kann, woher er kommt. Wenn das jemand weiß, wäre das auch schon sehr nützlich Ansonsten hoffe ich, dass sich irgendjemand in der Materie auskennt und mir helfen kann.. Vielen Dank im Voraus!
  7. Danke, das war der Fehler! So diese Funktion funktioniert jetzt. Die nächste Aufgabe war es, eine genau umgekehrte Funktion zu schreiben. Also eine Funktion, die eine Zeitspanne in Sekunden erhält und dann den String in dem Format "00:00:00" ausgibt. Mein Code dazu sieht wie folgt aus: int stunden = zeit/3600; int stundsek = stunden*3600; int minuten = (zeit - stundsek)/60; int minsek = minuten*60; int sekunden = (zeit-stundsek-minsek); string stunde = ""; string minute = ""; string sekunde = ""; string uhrzeit = ""; for (int j = 0; j<stunden; j++) { int x=stunden%10; stunden/=10; char i='0'; i=i+x; stunde=i+stunde; } for (int j = 0; j<minuten; j++) { int x=minuten%10; minuten/=10; char i='0'; i=i+x; minute=i+minute; } for (int j = 0; j<sekunden; j++) { int x=sekunden%10; stunden/=10; char i='0'; i=i+x; sekunde=i+sekunde; } Problem ist, dass es die Sekunden nicht richtig ausgibt.. Und wieder finde ich den Fehler nicht.. Stunden und Minuten funktionieren soweit aber bei den Sekunden kommt immer was total falsches heraus.. Jemand einen Tipp für mich?
  8. Vielen Dank für eure Antworten! Leider ist es uns nicht erlaubt die vorgegebenen Funktionen, Klasse, wie Split und TimeSpan etc. zu verwenden. Wir sollen die Funktionen alle selbst schreiben. Auch deine Variante dürfen wir so leider nicht machen Polar. Wir hatten long noch nicht und die Funktion soll nur einen Parameter haben (string) und int zurück liefern. Ich habe noch ein bisschen herumprobiert und jetzt gibt mir die Funktion zumindest die Stunden und Sekunden richtig zurück. Die Minuten unterschlägt er jedoch. Weiß jemand weshalb? Ich komm einfach nicht auf den Fehler... Hier der Code: int doppelpunkt = 0; int erster = 0; int zweiter = 0; string stunden = ""; string minuten = ""; string sekunden = ""; for (int i = 0; i<s.length(); i++) { if (s[i]==':') { doppelpunkt = doppelpunkt + 1; erster = i; if(doppelpunkt == 1) { for (int j = 0; j<erster;j++) { stunden += s[j]; } } else if (doppelpunkt==2) { zweiter = i; for (int k = erster+1;k<zweiter;k++) { minuten += s[k]; } } } } for (int l = zweiter+1; l<s.length(); l++) { sekunden += s[l]; }
  9. Hallo ihr Lieben, ich lerne gerade für eine Klassenarbeit (1. Ausbildungsjahr, Anwendungsentwicklung, C++) und stehe vor folgendem Problem, auf dessen Lösung ich einfach nicht kommen will, obwohl es wahrscheinlich recht einfach und schlicht ist: Die Aufgabe verlangt, dass ich eine Funktion schreibe, die einen String in diesem Format übergeben bekommt: 00:00:00. Die Funktion soll aus diesem String dann die Differenz der angegebenen Zeitspanne zu Mitternacht in Sekunden berechnen. Wenn also zum Beispiel die Uhrzeit 01:30:14 eingegeben wird, soll mir die Funktion am Ende 5414 zurückliefern. Mein Ansatz war es nun den eingebeben Uhrzeit-String an den ":" zu trennen und dann eben den ersten Teil mal 3600 zu nehmen, den zweiten mal 60 und den dritten dann dazu zu addieren. Geht es auch irgendwie einfacher und ich denke vielleicht zu kompliziert? Denn als ich diesen Ansatz verfolgt habe, hatte ich am Ende vier ineinander verschachtelte For-Schleifen, die letztendlich doch nicht das gemacht haben, was sie sollten.. Aus dem Grund hab ich momentan leider auch keinen Code zum Vorzeigen. Aber vielleicht könnt ihr mir sagen, ob meine Vorgehensweise so richtig ist, wie ich es mir notiert habe: - Ich durchsuche den String auf die Doppelpunkte - Die beiden Zeichen vor dem Doppelpunkt speichere ich mir in einer Variablen (beim ersten Doppelpunkt zB in Stunden und beim zweiten in Minuten) - Sobald es keinen Doppelpunkt mehr gibt, ziehe ich die Zeichen bis zum zweiten Doppelpunkt vom Gesamtstring ab und speichere den Rest in einer weiteren Variable (zb Sekunden) - Danach wandle ich die Stringvariablen in Integervariablen um und multipliziere sie mit den jeweiligen Werten, damit alle Werte in Sekunden vorliegen - Die Werte werden addiert und ausgegeben Kann man die Funktion so schreiben oder wird das nicht funktionieren? Muss ich auf etwas Bestimmtes achten? Hatte mich wie gesagt mit For-Schleifen daran versucht, aber bin kläglich gescheitert.. Ich würde mich sehr über Tipps und Ratschläge freuen.. Vielen Dank schon einmal im Voraus! LG
  10. Schneeherz

    Status CD-Laufwerk C#

    Hallo zusammen, ich habe ein Programm, das mir zu bestimmten Zeiten das CD-Laufwerk raus oder reinfährt. Wenn es draußen ist, soll es sich auch erst wieder zu gegebenen Konditionen in meinem Code, die im Moment keine Rolle spielen, wieder einfahren. Wenn ich in der Zwischenzeit allerdings aus Versehen an das Laufwerk komme und es sich einfährt, bekommt mein Programm diese Änderung nicht mit. Hat jemand eine Idee wie ich den Status des CD-Laufwerks überprüfen kann? Ich habe im Internet nur Beispiele gefunden, die mir sagen, ob ich eine CD eingelegt habe oder nicht. Das interessiert mich in dem Fall aber nicht. Ich möchte lediglich überprüfen können, ob mein CD-Laufwerk offen oder geschlossen ist. Nur leider weiß ich nicht, wie ich das anstellen kann. Zum Öffnen und Schließen hab ich die API Methode mciSendString verwendet. Vielen Dank im Voraus.
  11. Hallo, ich habe eine WPF Applikation geschrieben, in der durch einen DispatcherTimer alle x Sekunden (per App.config einstellbar) meine Methoden aufgerufen werden. Jetzt muss ich ja irgendwie sicherstellen, dass dies auch im angegebenen Abstand funktioniert und die Ereignisse und Aktionen auch tatsächlich enstprechend ausgeführt werden. Nur wie führe ich Unit Tests eines DispatcherTimers durch? Mein erster Ansatz war es, den Timer zu mocken, was ich allerdings nicht hinbekommen habe. Mein zweiter Ansatz war es die Eigenschaften des Timers (Interval und Enabled) durch public Properties darzustellen und die im Test zu nutzen. Sah ungefähr so aus: [TestMethod] public void TimerTest_TickEvent() { var target = new MainViewModel(); target.Interval = 5; var config = new ConfigEntry(keyInterval, target.Interval); target.IsEnabled = true; Mock.Create ... Mock.Arrange ... Mock.Assert ... } ConfigEntry ist einfach ne Klasse, die mir nen Eintrag in der App.config erstellt, der im Cleanup wieder zurückgesetzt wird. Interval und IsEnabled sind meine Properties. Kann mir jemand sagen wo mein Fehler liegt und wie es funktionieren könnte? Denn meine Tests schlagen in allen Varianten fehl, wenn ich es so probiere.. Danke im Voraus!
  12. Hallo, ich schreibe gerade ein Programm, in dem ich Regular Expressions verwende. Ich bin noch Anfänger und habe die Tests nicht zu Anfang geschrieben und finde es nun ein bisschen schwierig, sie von meinem fertigen Code abzuleiten, deshalb lass ich den an dieser Stelle mal außen vor. Angenommen ich habe irgend ein Regex a la: (.*)(\/abcd\/efgh)(.*)(xml) An folgenden Stellen sollen Exceptions geworfen werden: - wenn der eingegebene String nicht dem Muster entspricht - wenn der eingegebene String Null ist - wenn der eingegebene String nicht gelesen werden kann/nicht existiert, da es keine in dem Fal hier xml-Datei ist Das Pattern an sich habe ich schon getestet. Also sicher gestellt, dass das Pattern richtig funktioniert, wenn man richtige oder falsche Werte eingibt. Bei den Exceptions bin ich allerdings ein wenig überfordert. Angenommen ich hätte im Code eine Exception: try { document.Load(string xyz); } catch (Exception ex) { MessageBox.Show("string xyz does not exist"); } return document; Wie kann ich sie testen, wenn sie innerhalb einer privaten Methode ist? Vielen Dank schon einmal für Antworten!
  13. Und erneut vielen Danlk für die Antworten Wie sich herausgestellt hat, war das mit dem Mocking scheinbar zu kompliziert gedacht (auch wenn es mit der Version von lbm1305 ebenfalls funktioniert hat). Ich habe nun einfach in den einzelnen Test die Konfiguration auf den Wert gesetzt, den ich erwarte und führe ein CleanUp der Konfiguration nach jedem Test aus. Funktioniert nun wunderbar. Vielen Dank für eure Hilfe!
  14. Danke für die Antwort! Anhand deines Beispiels, verstehe ich es, aber lässt es sich denn auch auf folgende Properties übertragen? public string CompleteString { get { return ConfigurationManager.AppSettings["String"]; } set { } } public string PartString { get { Regex rx = new Regex(@"((\/xyz\/)(.*))?(\/abc\/def)"); string[] part = rx.Split(CompleteString); return part[0]; } set{} } Mir ist nicht wirklich klar, wie ich etwas testen soll, dass sich ja jederzeit ändern kann. Muss ich für diese Properties eine Klasse und ein Interface erstellen und sie dann testen? Meine momentanen Tests sehen so aus (funktionieren allerdings nur, wenn es wirklich die angegebenen strings sind): [TestMethod] public void CompleteString_PropertyTest() { var target = new MainViewModel(); var expected = @"http://localhost:1010/abc/def'>http://localhost:1010/abc/def"; var actual = target.CompleteString; Assert.AreEqual(expected, actual); } [TestMethod] public void PartString_PropertyTest() { var target = new MainViewModel(); var expected = @"http://localhost:1010"; var actual = target.PartString; Assert.AreEqual(expected, actual); }
  15. Hallo ihr Lieben, ich bin noch ganz am Anfang meiner Programmierkarriere und stehe vor folgendem Problem: Ich habe eine WPF-Applikation geschrieben, die ein webbasiertes System überwachen kann. Welches System, kann per URL angegeben werden, also z.B. "http://localhost:1010/". Durch einen Regex Ausdruck habe ich sicher gestellt, dass die URLs nur einem bestimmten Schema entsprechen können. Ich habe auch INotifyPropertyChanged verwendet und bekomme im Programm durch OnPropertyChanged mit, wenn sich die URL ändert. Jetzt habe ich die Aufgabe bekommen Unit Tests für meine Applikation zu schreiben. Mit Mocking und Dependency Injection. Ich habe viel im Internet gesucht und gelesen, aber so wirklich verstehen, wie man es anwendet, tue ich nicht. Wofür es nützlich ist, ist an sich verständlich. Kann mir das vielleicht jemand kurz für völlige Anfänger verständlich erklären? Und wie würde ich einen String testen, der durch OnPropertyChanged eben ständig geändert werden kann? Momentan habe ich nur einen Test, der mir diesen bestimmten string "http://localhost:1010/" testet... Mir wurde gesagt, dass ich dafür Mocking brauche? Ich hoffe, man versteht einigermaßen, was ich meine... Ich habe meinen Code gerade nicht griffbereit, anders würde ich euch ein Beispiel zeigen. Mir geht es allerdings auch erst einmal darum es zu verstehen, vielleicht komme ich dann selbst darauf. Danke im Voraus und ich hoffe, ich habe kein Thema übersehen, das dies vielleicht schon behandelt!

Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

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

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung