Hallo zusammen,
bin immer noch mit dieser Aufgabe beschäftigt....
Die Zeichen werden alle richtig ausgegeben....
Fehlermeldungen erhalte ich keine.....
Irgendwie habe ich eine totale Blockade und weiß nicht weiter. Egal was ich mache, es funktioniert einfach nicht.
Habe es mit einer try-catch-Anweisung versucht, mit einer content-Anweisung, mit einer verschachtelten for-Schleife.....
Ich habe auch in der Dokumentation recherchiert....
Wie bekomme ich die 7 Zeilen vom Byte-Array untereinander??? Hat evtl. jemand ein Code-Beispiel für mich?
Mein Code sieht derzeit so aus:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ESAAufgabe2
{
class Program
{
public void ESA2IN(string pfad, byte[,] array)
{
FileStream stream = File.Open(pfad, FileMode.OpenOrCreate);
for (int i = 0; i < 7; i++)
{
for (int j = 0; j < 11; j++)
{
stream.WriteByte(array[i, j]);
}
}
stream.Close();
}
public void ESA2Out(string pfad)
{
StreamReader reader = new StreamReader(File.Open(pfad, FileMode.Open));
int zeichen;
while ((zeichen = reader.Read()) != -1)
{
Console.Write((char)zeichen);
}
Console.WriteLine();
reader.Close();
}
static void Main(string[] args)
{
Program test = new Program();
string pfad = @"C:\Users\admin\source\repos\CSH-Lehrgang\CSH03\VS-Projekte\Buch CSH03\ESAAufgabe2\ESA2.txt";
byte[,] array = {{ 32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 },
{ 32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32 },
{ 67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35 },
{ 67, 32, 32, 32, 32, 32, 32, 35, 32, 35, 32 },
{ 67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35 },
{ 32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32 },
{ 32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 } };
test.ESA2IN(pfad, array);
test.ESA2Out(pfad);
}
}
}
LG Irina
Vielen Dank für die schnellen Rückantworten.....
Diese haben mir sehr geholfen und ich konnte den Code endlich richtig umsetzen....
Wünsche noch einen schönen Tag.
LG Irina
Guten Morgen zusammen,
zur Zeit sitze ich an einer Einsendeaufgabe und bei meiner Konsolenausgabe erhalte ich im Sekundentakt immer den gleichen Wert und die Schleife endet nicht....
Bin gerade absolut überfragt, wo genau mein Fehler liegt....
Der Code besteht aus Aufgaben von mehreren Kapiteln und mit "Neu: ESA_Projekt Aufgabe..." habe ich die Codes aus der Einsendeaufgabe hinzugefügt....
Hier mein geschriebener Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.IO;
namespace ESA_Projekt
{
delegate void TransponderDel(string kennung, Position pos);
interface ITransponder
{
void Transpond(string kennung, Position pos);
}
enum Düsenflugzeugtyp
{
A300, A310, A318, A319, A320, A321, A330, A340, A380
}
public struct Position
{
public int x, y, h;
public Position(int x, int y, int h)
{
this.x = x;
this.y = y;
this.h = h;
}
public void PositionAendern(int deltaX, int deltaY, int deltaH)
{
x = x + deltaX;
y = y + deltaY;
h = h + deltaH;
}
//public void HoeheAendern(int deltaH)
//{
// h = h + deltaH;
//}
}
abstract class Luftfahrzeug
{
protected string kennung;
public string Kennung
{
protected set { kennung = value; }
get { return kennung; }
}
protected Position pos;
public abstract void Steigen(int meter);
public abstract void Sinken(int meter);
}
class Flugzeug : Luftfahrzeug
{
protected Position zielPos;
protected int streckeProTakt;
protected int flughoehe;
protected int steighoeheProTakt;
protected int sinkhoeheProTakt;
protected bool steigt = false;
protected bool sinkt = false;
public void Starte(Position zielPos, int streckeProTakt, int flughoehe, int steighoeheProTakt, int sinkhoeheProTakt)
{
this.zielPos = zielPos;
this.streckeProTakt = streckeProTakt;
this.flughoehe = flughoehe;
this.steighoeheProTakt = steighoeheProTakt;
this.sinkhoeheProTakt = sinkhoeheProTakt;
this.steigt = true;
}
public Flugzeug(string kennung, Position startPos)
{
this.kennung = kennung;
this.pos = startPos;
}
public override void Steigen(int meter)
{
//pos.HoeheAendern(meter);
pos.PositionAendern(0, 0, meter);
Console.WriteLine(kennung + " steigt " + meter + " Meter, neue Höhe=" + pos.h);
}
public override void Sinken(int meter)
{
//pos.HoeheAendern(-meter);
pos.PositionAendern(0, 0, -meter);
Console.WriteLine(kennung + " sinkt " + meter + " Meter, neue Höhe=" + pos.h);
}
}
class Starrflügelflugzeug : Flugzeug, ITransponder
{
public Starrflügelflugzeug(string kennung, Position startPos) : base(kennung, startPos)
{
//Program.transponder += new TransponderDel(Transpond);
//Program.transponder += Transpond;
}
//Neu: ESA_Projekt Aufgabe 3
protected BinaryWriter writer;
protected string protokoll;
public string Protokoll
{
get { return protokoll; }
}
public void Transpond(string kennung, Position pos)
{
//if (kennung.Equals(this.kennung))
// Console.WriteLine("{0} an Position x={1}, y={2}", kennung, pos.x, pos.y);
DateTime timestamp = DateTime.Now;
if (kennung.Equals(this.kennung))
{
Console.Write("{0}:{1}", timestamp.Minute, timestamp.Second);
Console.Write("\t{0}-Position: {1}-{2}-{3}", this.kennung, base.pos.x, base.pos.y, base.pos.h);
Console.Write("Zieldistanz: {0} m\n", Zieldistanz());
//Neu: ESA_Projekt Aufgabe 3
if (Program.protokollieren && writer != null)
{
writer.Write(pos.x);
writer.Write(pos.y);
writer.Write(pos.h);
}
}
else
{
double abstand = Math.Sqrt(Math.Pow(this.pos.x - pos.x, 2) + Math.Pow(this.pos.y - pos.y, 2));
Console.Write("\t{0} ist {1} m von {2} entfernt.\n", this.kennung, (int)abstand, kennung);
if (Math.Abs(this.pos.h - pos.h) < 100 && abstand < 500)
Console.WriteLine("\tWARNUNG: {0} hat nur {1} m Höhenabstand!", kennung, Math.Abs(this.pos.h - pos.h));
}
}
double a, b, alpha, a1, b1;
bool gelandet = false;
private bool SinkenEinleiten()
{
double strecke = Math.Sqrt(Math.Pow(streckeProTakt, 2) - Math.Pow(sinkhoeheProTakt, 2));
int sinkstrecke = (int)(strecke * (pos.h - zielPos.h) / sinkhoeheProTakt);
int zieldistanz = Zieldistanz();
if (sinkstrecke >= zieldistanz)
{
//Console.WriteLine("{0} Sinkstrecke {1} >= Zieldistanz {2}", kennung, sinkstrecke, zieldistanz);
return true;
}
else
return false;
}
private void PositionBerechnen(double strecke, int steighoeheProTakt)
{
a = zielPos.x - pos.x;
b = zielPos.y - pos.y;
alpha = Math.Atan2(b, a);
a1 = Math.Cos(alpha) * strecke;
b1 = Math.Sin(alpha) * strecke;
pos.PositionAendern((int)a1, (int)b1, steighoeheProTakt);
}
private int Zieldistanz()
{
return (int)Math.Sqrt(Math.Pow(zielPos.x - pos.x, 2) + Math.Pow(zielPos.y - pos.y, 2));
}
public void Steuern()
{
if (steigt)
{
if (this.SinkenEinleiten())
{
steigt = false;
sinkt = true;
}
else if (pos.h > flughoehe)
{
steigt = false;
}
}
else if (sinkt)
{
if (pos.h <= zielPos.h + steighoeheProTakt)
gelandet = true;
}
else
{
if (this.SinkenEinleiten())
{
sinkt = true;
}
}
if (!gelandet)
{
Program.transponder(kennung, pos);
if (steigt)
{
double strecke = Math.Sqrt(Math.Pow(streckeProTakt, 2) - Math.Pow(steighoeheProTakt, 2));
this.PositionBerechnen(strecke, steighoeheProTakt);
}
else if (sinkt)
{
double strecke = Math.Sqrt(Math.Pow(streckeProTakt, 2) - Math.Pow(sinkhoeheProTakt, 2));
this.PositionBerechnen(strecke, -sinkhoeheProTakt);
}
else
{
this.PositionBerechnen(streckeProTakt, 0);
}
}
else
{
Program.fliegerRegister -= this.Steuern;
Program.transponder -= this.Transpond;
Console.WriteLine("\n{0} gelandet (Zieldistanz={1}, Höhendistanz={2})", kennung, Zieldistanz(), pos.h - zielPos.h);
if (Program.protokollieren && writer != null)
{
writer.Write(pos.x);
writer.Write(pos.y);
writer.Write(pos.h);
writer.Close();
}
}
}
}
class Düsenflugzeug : Starrflügelflugzeug
{
protected Düsenflugzeugtyp typ;
protected int sitzplaetze;
private int fluggaeste;
public int Fluggaeste
{
set
{
if (sitzplaetze < (fluggaeste + value))
Console.WriteLine("Keine Buchung: Die " + "Fluggastzahl würde mit der Zubuchung " + "von {0} Plätzen die verfügbaren Plätze " + " von {1} um {2} übersteigen!", value, sitzplaetze, value + fluggaeste - sitzplaetze);
else
fluggaeste += value;
}
get { return fluggaeste; }
}
public Düsenflugzeug(string kennung, Position startPos) : base(kennung, startPos) { }
public void Starte()
{
Console.WriteLine("Flieger \"{0}\", Typ {1} ({2} Sitzplätze) startet", Kennung, typ, sitzplaetze);
steigt = true;
Program.transponder += this.Transpond;
Program.fliegerRegister += this.Steuern;
}
//Neu: ESA_Projekt Aufgabe 3
public void Flugschreiber()
{
if (Program.protokollieren)
{
DateTime timestamp = DateTime.Now;
string pfad = kennung + "_" + timestamp.Day + "-" + timestamp.Hour + "-" + timestamp.Minute + "-" + timestamp.Second + ".bin";
protokoll = pfad;
writer = new BinaryWriter(File.Open(pfad, FileMode.Create));
string header = "Flug \"" + kennung + "\" (Typ " + this.typ + ") startet an Position " + pos.x + "-" + pos.y + "-" + pos.h + " mit Zielposition " + zielPos.x + "-" + zielPos.y + "-" + zielPos.h;
writer.Write(header);
}
}
public void Buchen(int plätze)
{
Fluggaeste += plätze;
}
//public bool Starte()
//{
// string pfad = @".\" + kennung + ".init";
// StreamReader reader;
// try
// {
// reader = new StreamReader(File.Open(pfad, FileMode.Open));
// }
// catch (IOException e)
// {
// Console.WriteLine("{0} Fehler beim Zugriff auf die Datei " + pfad, e.GetType().Name);
// return false;
// }
// int[] data = new int[9];
// for (int i = 0; i < 9; i++)
// {
// string str = reader.ReadLine();
// str = str.Substring(str.IndexOf('=') + 1);
// //Console.WriteLine(str);
// data[i] = Int32.Parse(str);
// }
// reader.Close();
// this.zielPos.x = data[0];
// this.zielPos.y = data[1];
// this.zielPos.h = data[2];
// streckeProTakt = data[3];
// flughoehe = data[4];
// steighoeheProTakt = data[5];
// sinkhoeheProTakt = data[6];
// //"typ" aus data[7] initialisieren
// Array typen = Enum.GetValues(typeof(Düsenflugzeugtyp));
// this.typ = (Düsenflugzeugtyp)typen.GetValue(data[7]);
// sitzplaetze = data[8];
// Console.WriteLine("Flug {0} vom Typ {1} mit {2} Plätzen initialisiert.", kennung, typ, sitzplaetze);
// steigt = true;
// Console.WriteLine();
// return true;
//}
}
class Program
{
public static TransponderDel transponder;
public delegate void FliegerRegisterDel();
public static FliegerRegisterDel fliegerRegister;
//Neu: ESA_Projekt Aufgabe 3
public static bool protokollieren = true;
public void ProgrammTakten()
{
Düsenflugzeug flieger1 = new Düsenflugzeug("LH 500", new Position(3500, 1500, 180));
Düsenflugzeug flieger2 = new Düsenflugzeug("LH 3000", new Position(3000, 2000, 100));
flieger1.Starte();
flieger2.Starte();
while (fliegerRegister != null)
{
fliegerRegister();
Console.WriteLine();
Thread.Sleep(1000);
}
}
//Neu: ESA_Projekt Aufgabe 4
public void ProtokollAusgeben(string protokoll)
{
BinaryReader reader = new BinaryReader(File.Open(protokoll, FileMode.Open));
Console.WriteLine(reader.ReadString());
bool goOn = true;
while (goOn)
{
try
{
for (int i = 0; i < 3; i++)
Console.Write("\t{0}", reader.ReadInt32());
}
catch
{
goOn = false;
}
reader.Close();
Console.WriteLine();
}
}
static void Main(string[] args)
{
Program test = new Program();
test.ProgrammTakten();
}
}
}
Ich würde mich freuen, wenn jemand meinen Fehler erkennt und mir helfen kann... 🙂
LG Irina
Habe den Code etwas umgeschrieben.....
Da scheint aber noch etwas falsch zu sein....
Ich erhalte keine Fehlermeldung, aber bei der Konsolenausgabe habe ich nur ein schwarzes Bild....
Habe ein zweidimensionales Array erstellt byte[,] array = new byte[7, 11];, aber irgendwo steckt immer noch ein Denkfehler von mir....
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ESAAufgabe2
{
class Program
{
public void ESA2IN(string pfad, byte[] array)
{
FileStream stream = File.Open(pfad, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write);
stream.Write(array, 0, array.Length);
stream.Close();
}
public void ESA2Out(string pfad)
{
FileStream stream = File.Open(pfad, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[,] array = new byte[7, 11];
for (int i = 0; i < array.Length;)
{
Console.Write((char) i);
}
Console.WriteLine();
stream.Close();
}
static void Main(string[] args)
{
Program test = new Program();
string pfad = @"C:\Users\admin\source\repos\CSH-Lehrgang\CSH03\VS-Projekte\Buch CSH03\ESAAufgabe2\ESA2IN.txt";
byte[] array = {32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
67, 32, 32, 32, 32, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 };
test.ESA2IN(pfad, array);
test.ESA2Out(pfad);
}
}
}
LG Irina
Guten Morgen zusammen,
nochmal zu meinem Byte-Array...
Soweit klappt jetzt alles super, es gibt keine Fehlermeldungen mehr.....
Die Konsolenausgabe und das Schreiben in die Datei mit den entsprechenden Zeichen funktioniert auch....
Der Code wird mir aber nur in einer Reihe angezeigt, anstatt mit einer Splittung in 7 Reihen....
Irgendwo ist also ein kleiner Denkfehler....
Hier mein geschriebener Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ESAAufgabe2
{
class Program
{
public void ESA2IN(string pfad, byte[] array)
{
FileStream stream = File.Open(pfad, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write);
stream.Write(array, 0, array.Length);
stream.Close();
}
public void ESA2Out(string pfad)
{
FileStream stream = File.Open(pfad, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[] array = new byte[stream.Length];
stream.Read(array, 0, (int)stream.Length);
for (int i = 0; i < array.Length; i++)
{
Console.Write((char)array[i]);
}
Console.WriteLine();
stream.Close();
}
static void Main(string[] args)
{
Program test = new Program();
string pfad = @"C:\Users\admin\source\repos\CSH-Lehrgang\CSH03\VS-Projekte\Buch CSH03\ESAAufgabe2\ESA2IN.txt";
byte[] array = {32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
67, 32, 32, 32, 32, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 };
test.ESA2IN(pfad, array);
test.ESA2Out(pfad);
}
}
}
Ich hoffe, das ihr mir weiterhelfen könnt...
LG Irina
Ich habe dies jetzt so gestaltet....
Die Datei ESA2IN habe ich in dem Projekt ESAAufgabe2 erstellt, diesen Pfad kopiert und in die Aufgabe eingefügt....
Die unbehandelte Ausnahme konnte ich damit beheben....juhu...
Der Code wird mir nur noch nicht richtig angezeigt.....dieser steht noch in einer Reihe.....soll aber untereinander stehen...da muss ich noch ein bisschen tüffteln.
Sieht zur Zeit so aus....
CC # # C C # # C #####C # # C ##### C C # # CC # #
Soll am Ende aber so aussehen....
CC # #
C C # #
C #####
C # #
C #####
C C # #
CC # #
Das bekomme ich hin....
Vielen Dank für eure Hinweise.....
LG Irina
Ok, das heisst, in den Übungen war es ok, diese Dateien in diesem Verzeichnis zu speichern....da hatte ja alles funktioniert....
Und wenn ich das jetzt richtig verstehe, dann sollte die Datei im Debug oder Release Ordner angelegt werden...und somit würde dann die Meldung verschwinden...
LG Irina
Auch mit FileAccess.Write und FileShare.Write kommt die gleiche Meldung.
Mit der Dokumentation habe ich immer und immer wieder alles mögliche probiert, aber die Fehlermeldung verschwindet einfach nicht....
LG Irina
Hallo zusammen,
ich habe ein Screenshot mit der Fehlermeldung angehangen....
LG Irina
Hallo zusammen,
in meiner aktuellen Aufgabe soll ein Array aus einer Datei ausgelesen werden und auf der Konsole ausgegeben werden.
Egal, wie oft ich den Code verändere (ca. 50 mal bis jetzt), ich habe immer in Zeile 14 eine unbehandelte Ausnahme.
Letztendlich weiß ich einfach nicht, wo dabei mein Fehler liegt.
Hier mein Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ESAAufgabe2
{
class Program
{
public void ESA2IN(string pfad, byte[] array)
{
FileStream stream = File.Open(pfad, FileMode.OpenOrCreate);
stream.Write(array, 0, array.Length);
for (int i = 0; i < array.Length; i++)
{
Console.Write((char)array[i]);
}
Console.WriteLine();
stream.Close();
}
public void ESA2Out(string pfad)
{
StreamReader reader = new StreamReader(File.Open(pfad, FileMode.Open));
int i;
while ((i = reader.Read()) != -1)
{
Console.WriteLine("{0}", i);
}
Console.WriteLine();
reader.Close();
}
static void Main(string[] args)
{
Program test = new Program();
string pfad = @"C:\Users\admin\OneDrive\Dokumente\ILS\Einsendeaufgabe 19 CSH03B\ESA2.txt";
byte[] array = {32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
67, 32, 32, 32, 32, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 };
test.ESA2IN(pfad, array);
test.ESA2Out(pfad);
}
}
}
Ich hoffe, das ihr mir helfen könnt....
Vielen Dank
LG Irina