Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von SGT_BOB
Thema: enum als Parameter im Konstruktor
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Suchst Du:
Enum.GetName(...);
Enum.GetNames(...);
?

Kann schon sein. Aber wie komm ich da jetzt dran.

Ich erstelle mir in meiner Testklasse eine Instanz von Character. Auf deren Member kann ich über die öffentlichen Methoden zugreifen (siehe Beispiel oben)

Wenn ich jetzt aber über die der Klasse Character auf das enum Type zugreifen möchte, wie soll das geschehen? Da es jetzt ja public ist sollte der Zugriff doch auch direkt gehen, oder? Geht aber nicht...

Sorry Leute ich glaub ich schlaf zu wenig.

Thema: enum als Parameter im Konstruktor
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ihr hattet wohl recht. =)

Habs jetzt so gemacht:

Character ch = new Character("Hero",Game.Character.Type.PC, ...); 

Wie kann ich mir jetzt den Type ausgeben lassen? Alà Console.WriteLine z.B.

Hab in der Character-Klasse Methoden deklariert z.B.:

		public string GetName()
		{
			return this.Name;
		}

Wie würde das jetzt für den enum-Wert gehen?

Ich komm mir vor wie ein blutiger Anfänger X(

Thema: enum als Parameter im Konstruktor
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich verlier allmählich den Durchblick.

Ja. Der Konstruktor soll außerhalb aufgerufen werden. Aber mein Problem entsteht ja schon beim Erstellen des Projektes. Also ohne Aufruf des Konstruktors.

Ich versuche hier erstmal nur eine *.dll zu erstellen, auf die ich später zugreifen will. Aber ich rufe den Konstruktor hier noch nicht auf.

Auch wenn ich den public setze, will das nicht so ganz.

Thema: enum als Parameter im Konstruktor
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das ist schon richtig so. Da sich beide in der selben Klasse befinden, sollte das auch kein Problem darstellen. Bei den anderen Klassenmembern hab ich ja auch deswegen keine Problem. Das Problem liegt irgendwo anders.

Danke trotzdem.

Thema: enum als Parameter im Konstruktor
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Leute.

Vielleicht ist es ein triviales Problem, aber ich häng damit ziemlich in der Luft.

Ich würde gern meinem Konstruktor ein enum übergeben.


public class Character
{
private string Name = null;
private enum Type {PC, NPC, EN};
private uint HPCur = 0;
private uint HPMax = 0;
private uint MPCur = 0;
private uint MPMax = 0;
private uint Level = 0;
private uint EXPCur = 0;
private uint EXPNxtLvl = 0;
private uint Strength = 0;
private uint Dexterity= 0;


public Character()
{

}

public Character(string Name, Type type, uint hpcur, uint hpmax, uint mpcur, uint mpmax, uint level, uint expcur, uint expnxtlvl, uint strength, uint dexterity)
{
this.Name = Name;
this.Type = type;
this.HPCur = hpcur;
this.HPMax = hpmax;
this.MPCur = mpcur;
this.MPMax = mpmax;
this.Level = level;
this.EXPCur = expcur;
this.EXPNxtLvl = expnxtlvl;
this.Strength = strength;
this.Dexterity = dexterity;
}
}

Leider bekomme ich folgende Fehlermeldung beim Aufruf des Konstruktors:
C:\Dokumente und Einstellungen\olli\Eigene Dateien\Visual Studio Projects\GameTests\Character\CharacterClass.cs(29): Inconsistent accessibility: parameter type 'Game.Character.Type' is less accessible than method 'Game.Character.Character(string, Game.Character.Type, uint, uint, uint, uint, uint, uint, uint, uint, uint)'


Was genau läuft hier falsch? Es ist schon spät und vielleicht sehe ich den Wald vor lauter Bäumen nicht.

SGT_BOB

Thema: SwapEffect.Discard richtig erklärt ???
Am im Forum: Grafik und Sound

Hallo Leute.

Ich kämpfe mich grade durch die DirectX9 Doku. Hab zu SwapEffect.Discard folgendes gefunden:
...
An application can use the Discard swap effect to avoid these overheads and to enable the display driver to choose the most efficient presentation technique for the swap chain.
...

Hab mir das jetzt folgendermaßen übersetzt (nur der fettgedruckte Text):

...ermöglicht dem Grafiktreiber automatisch die effizienteste Darstellungstechnik des Buffer-Wechsels auszuwählen. (naja sehr grob übersetzt :D)

Kann mir evtl. kurz mal einer den Unterschied zwischen SwapEffect.Discard, SwapEffect.Copy und SwapEffect.Flip erklären. Komme in der Doku nicht weiter.

THX für eure Hilfe.

SGT_BOB

Thema: 2 Jahre myCSHARP.de - Happy Birthday ;-)!
Am im Forum: Ankündigungen

Was soll man da noch hinzufügen???

Herzlichen Glückwunsch an das Forum...

SGT_BOB

Thema: Kann mit VS2003 kein neues Projekt anlegen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

OK... hattest Recht.

Nach dem Reparaturvorgang lief es wieder. Lag daran daß alte Dateien einer vorherigen Installation noch vorhanden waren und diese während der neuen Installation nicht neu aufgespielt wurden.

Google ist mein Freund.

Thema: Kann mit VS2003 kein neues Projekt anlegen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Leute.

Wie der Titel schon sagt, bekomme ich beim anlegen eines neuen Projektes folgende Fehlermeldung:

"VC Package not available or not registered" ?(

Hab probiert für C#, C++.NET, VB.NET jeweils ein neues Projekt anzulegen, aber jedesmal diese Fehlermeldung.

Hab das komplette Paket installiert. Demnach dürfte ja wohl nix fehlen.

Projekte bzw. Solutions kann ich öffnen und kompilieren.

Ich check garnix mehr. Plz help.

SGT_BOB

Thema: Fachinformatiker noch Chancen?
Am im Forum: Smalltalk

Hallo Leute.

Erstmal danke für euer Interesse an diesem Thema. Hab leider noch immer nix gefunden (BIN ALSO NOCH IMMER AUF DER SUCHE).

Hab nun schon fast 50 Bewerbungen weggeschickt. Ein Bekannter, der in der IT-Branche tätig ist, sagte mir das selbst berufserfahrene Profis Probleme haben etwas zu finden. Wie bitte stehen dann die Chancen eines Berufsanfängers?
Man bekommt ja nicht mal die Chance sich den Firmen gegenüber zu beweisen.

Für "lau" arbeiten... einfacher gesagt als getan, meine Familie braucht ein Dach über dem Kopf und Essen auf dem Tisch, und, und, und...
So etwas kann man bestenfalls nebenher machen. Und da ran zu kommen ist ähnlich schwer, wie einen Job zu finden.

Sicher gibt es viele Wege, keiner davon mit Erfolgsgarantie, aber die kosten, wie gesagt, viel Zeit und die muss man erstmal haben.

Nichts desto trotz, ich lass mich nicht kleinkriegen und weitersuchen. (Wie war das mit dem "blinden Huhn" ?

Ciao SGT_BOB

Thema: DirectX SDK
Am im Forum: Grafik und Sound

Wenn du das komplette SDK geladen hast, sollte der SampleBrowser auch mit installiert sein und auch eine Doku. Soweit ich weiß aber (leider) nur in C++.Net.

Vielleicht hast du beim Setup was falsch gemacht (Haken irgendwo entfernt oder so).

Hast du das komplette SDK (incl. C++.Net, C#, VB.Net) ???

Thema: Raucht ihr? [Rauchen, Trinken, Ernährung, Sport]
Am im Forum: Smalltalk

Ich rauche (meistens zuviel), dafür trink ich seeeeeehr selten Alk und Essen (hmmm.... Pizza)

Sport, was ist das??D Doch... Tastatur - Finger - Aerobik und ein wenig Hallen - Jojo (Spaß muss sein)

Aber ich hab zwei Kiddies und die halten einen ständig auf Trab. 8)

Thema: DirectX: Tutorial
Am im Forum: Grafik und Sound

Wow... alle Achtung für dieses Tut.
Sowas hab ich schon lange gesucht. Mich würd mal interessieren wie lange du schon (C#) proggst und vor allem wie weit du das hier noch durchziehen möchtest. Ist doch ne ganze Menge Arbeit.
Hab mich mal vor die DX-Doku gesetzt, ist schon ziemlich viel was da drin steht (alleine D3D betreffend). Respekt vor dem der sich da durch kämpft.

Wie gesagt, nur weiter so, bin gespannt...

Thema: KeyEvent bei PictureBox abfragen
Am im Forum: GUI: Windows-Forms

Erst mal Danke daß du dich so mit meinem Thema auseinander setzt.

Ums kurz zu fassen, in diesem Thread hab ich schon erklärt, worauf das ganze hinauslaufen soll.

Ich hab jetzt eine MDI Form mit zwei Unterformularen und je einer PictureBox. In dem einem Fenster wird mein Quellbild geladen und in das andere sollen nach und nach, ausgewählte Bildschirmausschnitte kopiert werden. (siehe Thread).
Ich möchte jetzt die Tasten von der jeweils ausgewählten Form (bzw. dessen PictureBox) die Tasten abfragen, um das Auswahlrechteck zu bewegen.
Hoffe das ich das jetzt einigermaßen erklären konnte.

Muss dafür nicht jeweils die PictureBox das KeyEvent zugewiesen bekommen.


pbox.KeyDown += new KeyEventHandler(PBoxOnKeyDown);
pbox.KeyUp += new KeyEventHandler(PBoxOnKeyUp);

Wenn die PictureBox jetzt den Focus hat, müssten ich doch mit dem folgendem Code ein Ausgabe bekommen, oder?


                protected void PBoxOnKeyDown(object obj, KeyEventArgs kea)
	{
		Keys key = kea.KeyCode;
		Console.WriteLine("obj: "+obj.ToString());
		Console.WriteLine("PBoxOnKeyDown: "+key.ToString());
	}
	
	protected void PBoxOnKeyUp(object obj, KeyEventArgs kea)
	{
		Keys key = kea.KeyCode;
		Console.WriteLine("obj: "+obj.ToString());
		Console.WriteLine("PBoxOnKeyDown: "+key.ToString());
	}


Momentant hab ichs so gemacht, wie du's (herbivore) mir beschrieben hast.


...
this.KeyPreview = true;
...
this.KeyDown += new KeyEventHandler(PBoxOnKeyDown);
this.KeyUp += new KeyEventHandler(PBoxOnKeyUp);

Aber so wird nur zwischen den beiden Formen hin und her geswitcht.

Vielleicht hast du oder jemand anders ja noch eine Idee.

Thema: KeyEvent bei PictureBox abfragen
Am im Forum: GUI: Windows-Forms

Hui, ein Wochenendfrühaufsteher.

Hatte der PictureBox den Focus schon gegeben, aber irgendwie hat's auch nicht so wirklich funktioniert. Hab auch keine anderen Steuerelemente auf der Form. Hmmm...

Das KeyPreview ist auch auf true, ist es das nicht standarmäßig???

Weiß nicht mehr weiter.

Kann das damit zusammenhängen, das ich ein MDI From erstellt hab. Eigentlich doch nicht oder, da ich ja so auch nur ein Unterformular erstellt habe. Oder???

Thema: KeyEvent bei PictureBox abfragen
Am im Forum: GUI: Windows-Forms

Hallo Leute.

Ja...genau... ich schon wieder...

Also ich hab schon wieder ein Problem mit dem PictureBox-Element. Und zwar möchte ich bestimmte Tasten abfangen. Habs mal so versucht:


Im Konstruktor:


pbox.KeyDown += new KeyEventHandler(PBoxOnKeyDown);


protected void PBoxOnKeyDown(object obj, KeyEventArgs kea)
{
	Keys key = kea.KeyCode;				Console.WriteLine("PBoxOnKeyDown: "+key.ToString());
}

Hab erst mal nur eine Kontrollausgabe um zu sehen ob da überhaupt was passiert.
Aber mir wird nix ausgegeben.
Irgendwie scheint er da nicht drauf anzuspringen. Wieso nicht???

Thema: Auf Image zeichnen? Refresh?
Am im Forum: GUI: Windows-Forms

@VizOne:

Jippie... genau das war mein Problem. Manchmal sieht man den Wald vor lauter Bäumen nicht.

Danke an alle.

ABER... Mein Problem von weiter oben (das mit der Zwischenablage) besteht immer noch. X(

Thema: Fachinformatiker noch Chancen?
Am im Forum: Smalltalk

Zitat
@SGT_BOB
Haste denn schon mal versucht Projekte an Land zu ziehen auch wenns für lau sein sollte ?

@claniboy:

Ähm, wie genau meinste das??? Projekt an Land ziehen. Da würd ich mich doch freuen, wenn du mir das mal näher erleuterst.

@Rene Paschold:

Meine Frau hat die ganze Ausbildungszeit hinter mir gestanden. Trotz das sie die meiste Zeit der Schwangerschaft allein war, trotz der Tatsache das manche Sozialhilfeempfänger mehr Geld zum Leben hatten als wir, trotz...
Damit könnte ich noch weiter machen.
Mittlerweile sind wir soweit das ich mich auch nach anderen Jobs umsehe, die mit meinem Berufsfeld nicht im entferntesten was zu tun haben. Hab aber Angst das ich zulange von der "Materie" getrennt bin und mir ein Berufseinstieg in der IT-Branche noch schwerer fällt als momentan. Schließlich hab ich nicht gelernt, um was ganz anderes zu machen.

Ich hoffe ernsthaft das es mit der IT-Branche bald mal wieder aufwärts geht. Aber, wem sag ich das...

Thema: Auf Image zeichnen? Refresh?
Am im Forum: GUI: Windows-Forms

Also erstmal danke für die vielen Antworten und die heiße Diskussionsrunde.

Ich werd es mal aufklären, was ich genau vorhab. Es soll ein Programm zur Bearbeitung von Tilesets werden. Dabei sollen aus dem einen Bild die gewählten Teile in ein neues oder vorhandenes Bild eingefügt werden können. Die "Template" aus dem einfachen Grund, weil ich da ein Schachbrettmuster in der Größe 32x32 drauf habe. Da läßt sich leichter erkennen, ob alles passt.

Wie gesagt "bewegen" kann ich das Rechteck schon. Was ich nicht gemacht hab Paint Ereignis für die PictureBox aufzurufen. Das ist schon wahr. Werds aber mal probieren.

Vielleicht hat ja noch jemand eine Idee, wie ich den aktuell ausgewählten Ausschnitt des "Originalbildes" in die Zwischenablage kopieren kann. Da ich ja immer nur einzelne Teile des Bildes brauche(z.B. 32x32 Pixel groß).

CU @ll SGT_BOB

Thema: AudioVideoPlayback: Duration liefert falsche Werte
Am im Forum: Grafik und Sound

Siehe hier.

Thema: VBR bei mp3s korrekt auslesen
Am im Forum: Grafik und Sound

Hatte mir selber mal nen kleinen Player gebastelt.
Ich weiß nicht ob dir das hier weiterhilft:



using DX_AudioVideo;
using System;
using System.IO;
using System.Collections;
using Microsoft.DirectX.AudioVideoPlayback;

class MP3_Header
{
	FileInfo fi = null; 
	FileStream fs;
	
	Track track;
// Daten um Header zu finden und zu speichern
	
	int neue_Zahl;
	int ergebnis;
	int rest;
	string temp = "";
	string output = "";	// binär Ausgabe des Headers als String
	byte[] header = new byte[4];	// 4 Bytes des Headers
	int[] IntBytes = new int[4];
	
	int headerpos;		// Headerheaderposition
	
	// MP3 Header-Daten				Bit
	string SyncWord;			// 0 - 11
	string MPEG_Version;		// 12
	string MPEG_Layer;			// 13 - 14
	string ProtectionBit;		// 15
	string Bitrate;				// 16 - 19
	string SamplingFrequency;	// 20 - 21
	string PaddingBit;			// 22
	string PrivateBit;			// 23
	string Mode;				// 24 - 25
	string ModeExtension;		// 26 - 27
	string Copyright;			// 28
	string OriginalHome;		// 29
	string Emphasis;			// 30 - 31
	
	// MPEG 1 & 2 Layer 1 are the same kbit/s
	string[] Layer1 = new string[]{"-","32","64","96","128","160","192","224","256","288","320","352","384","416","448","-"};

	// MPEG 1 & 2 Layer 2 are the same kbit/s
	string[] Layer2 = new string[]{"-","32","48","56","64","80","96","112","128","160","192","224","256","320","384","-"};
	
	// MPEG 1 Layer 3
	string[] Layer3_1 = new string[]{"-","32","40","48","56","64","80","96","112","128","160","192","224","256","320","-"};

	// MPEG 2 Layer 3
	string[] Layer3_2 = new string[]{"-","8","16","24","32","64","80","56","64","128","160","112","128","256","320","-"};
	
	int FrameCount;
	
	public MP3_Header(Track track)
	{
		//this.GetHeader();
		this.track = track;
		Console.WriteLine("MP3_Header angelegt mit: MP3_Header("+track.GetPath()+")");
		this.GetHeaderPos();
		this.GetHeaderParts(output);
		this.CountFrames();
	}
	
	public void GetHeader(byte[] header)
	{
	
		/*
		 * Jedes Byte wird per "Restverfahren" in seine 8 Bits zerlegt.
		 * Dabei wird die Reihenfolge der Bits umgekehrt.
		 * Zur Kontrolle kann jeder Rechenschritt ausgegeben werden. (Kommentierung entfernen)
		 * */
		foreach( byte b in header )	// für jedes Element in "ByteArray"
		{
			neue_Zahl = b;
			for(int i = 0; i < 8; ++i)	// 8 mal ( 8 bit = 1 byte)
			{
				ergebnis = neue_Zahl/2;	// Ergebnis der Division
				rest = neue_Zahl%2;		// Restwert der Division

				//Console.WriteLine("{0,3} durch 2 = {1,3} Rest: {2}", neue_Zahl, ergebnis, rest);
				
				temp = temp.Insert(0,rest.ToString());	// Rest im temporären String an Position 0 einfügen
														// wegen umgekehrter Reihenfolge der bits
				neue_Zahl = ergebnis;					// zum Weiterrechnen im nächsten Durchlauf
			}
			output += temp;//+" ";		// Einfügen eines Leerzeichens um jeweils 8 Bit voneinander zu trennen
			temp = "";				// temporären String wieder "leeren"
		}
		Console.WriteLine(output);
		fs.Close();
	}
	
	public void GetHeaderPos()
	{
		//fi = new FileInfo(@"C:\mp3\Track 01-.mp3");
		//fi = new FileInfo(@"C:\mp3\01 - Flat On The Floor.mp3");
		//fi = new FileInfo(@"C:\mp3\10 - Another Hole In The Head.mp3");
		fi = new FileInfo(track.GetPath());
		Console.WriteLine("MP3_Header.GetHeaderPos():"+track.GetPath());
		fs = fi.OpenRead();
		
		byte b;
		headerpos = 0;
				
		do
		{
			b = (byte)fs.ReadByte();
			
			//Console.WriteLine("Byte Nr: {0,4}: {1} ",headerpos,(int)header[0]);
			headerpos++;
		}while(b != 0xff);
		
		Console.WriteLine("\nHeader:\n******");
		header[0] = b;
		Console.WriteLine("Byte 0 = {0:x}",(int)b);
		
		for(int i = 1; i ≤ 3; ++i)
		{
			header[i] = (byte)fs.ReadByte();
			Console.WriteLine("Byte {0} = {1:x}",i+1,(int)header[i]);
		}
		
		Console.WriteLine("\n\nHeader bei: " +(headerpos-1));
		this.GetHeader(header);
		// 11111111 11111011 10110000 01100100
		// 11111111 11111011 10110000 01100100
		fs.Close();
	}
	
	public void GetHeaderParts(string output)
	{
		this.SyncWord 			= output.Substring(0,12);
		this.MPEG_Version 		= output.Substring(12,1);
		this.MPEG_Layer			= output.Substring(13,2);
		this.ProtectionBit		= output.Substring(15,1);
		this.Bitrate			= output.Substring(16,4);
		this.SamplingFrequency 	= output.Substring(20,2);
		this.PaddingBit			= output.Substring(22,1);
		this.PrivateBit			= output.Substring(23,1);
		this.Mode				= output.Substring(24,2);
		this.ModeExtension		= output.Substring(26,2);
		this.Copyright			= output.Substring(28,1);
		this.OriginalHome		= output.Substring(29,1);
		this.Emphasis			= output.Substring(30,2);
		
//		Console.WriteLine("SyncWord: " + SyncWord + 
//		                  "\nMPEG_Version: "+ MPEG_Version +
//		                  "\nMPEG_Layer: "+ MPEG_Layer +
//		                  "\nProtectionBit:"+ ProtectionBit +
//		                  "\nBitrate: "+ Bitrate);
		
//		Console.WriteLine("Version: "+this.GetMPEG_Version());
//		Console.WriteLine(this.GetMPEG_Layer());
//		Console.WriteLine("CRC-Prüfsumme: "+this.GetProtectionBit());
//		Console.WriteLine(this.GetBitrate()+" kbit/s");
//		Console.WriteLine(this.GetSamplingFrequency()+" Hz");
//		Console.WriteLine("Padding: " +this.GetPaddingBit());
//		Console.WriteLine("Private: " +this.GetPrivateBit());
//		Console.WriteLine("Mode: " +this.GetMode());
//		Console.WriteLine("Copyright: " +this.GetCopyright());
//		Console.WriteLine("Original: " + this.GetOriginalHome());
//		Console.WriteLine("Rauschunterdr.: " +this.GetEmphasis());
		                  
	}
	
	// SyncWord (ungenutzt, ausser bei MPEG 2.5)
	public string GetSyncWord()
	{
		return SyncWord;
	}
	
	// MPEG Version
	public string GetMPEG_Version()
	{
		if(MPEG_Version.Equals("0"))
			return "MPEG 2";
		else
			return "MPEG 1";
	}
	
	// Layer
	public string GetMPEG_Layer()
	{
		if(MPEG_Layer.Equals("00"))
			return "undefiniert";
		else if(MPEG_Layer.Equals("01"))
			return "Layer III";
		else if(MPEG_Layer.Equals("10"))
			return "Layer II";
		else
			return "Layer I";
	}
	
	// CRC Prüfsumme (ja: 16 Bit nach dem Header)
	public string GetProtectionBit()
	{
		if(this.ProtectionBit.Equals("1"))
			return "nein";	// 0: CRC = ja ; 1: CRC = nein
		else
			return "ja";
	}
	
	// Bitrate
	public string GetBitrate()
	{
		if(this.MPEG_Version.Equals("1")) // MPEG 1 ???
		{
			return this.MPEG_1_Bitrate();			
		}
		else							  // MPEG 2 ???
		{
			return this.MPEG_2_Bitrate();
		}
	}
	
	// Sample Frequenz
	public string GetSamplingFrequency()
	{
		if(MPEG_Version.Equals("1"))
		{
			switch(this.SamplingFrequency)
			{
				case "00":	return "44100";
				case "01":	return "48000";
				case "10":  return "32000";
				case "11":	return "-";
				default: return "error";
			}
		}
		else
		{
			switch(this.SamplingFrequency)
			{
				case "00":	return "22050";
				case "01":	return "24000";
				case "10":  return "16000";
				case "11":	return "-";
				default: return "error";
			}
		}
	}
	
	// Padding Bit
	public string GetPaddingBit()
	{
		if(this.PaddingBit.Equals("1"))
			return "ja";
		else
			return "nein";
	}
	
	// Private Bit (ungenutzt)
	public string GetPrivateBit()
	{
		if(this.PrivateBit.Equals("1"))
			return "ja";
		else
			return "nein";
	}
	
	// Audio Modus
	public string GetMode()
	{
		switch(this.Mode)
		{
			case "00":	return "Stereo";
			case "01":	return "Joint Stereo";
			case "10":	return "Dual-Channel";
			case "11":	return "Mono";
			default:	return "error";
		}
	}
	
//	Nur interessant bei Joint Stereo
//	
//	public string GetModeExtension(string ModeExtension)
//	{
//		
//	}

	// Copyright ja/nein
	public string GetCopyright()
	{
		if(this.Copyright.Equals("1"))
			return "ja";
		else
			return "nein";
	}
	
	// Original-Datenstrom
	public string GetOriginalHome()
	{
		if(this.OriginalHome.Equals("1"))
			return "ja";
		else
			return "nein";
	}
	
	// Rauschunterdrückung
	public string GetEmphasis()
	{
		switch(this.Emphasis)
		{
			case "00":	return "keine";
			case "01": 	return "50/15ms";
			case "10":	return "reserviert";
			case "11":	return "CCITT j.17";
			default: 	return "error";
		}
	}
	
	private string MPEG_1_Bitrate()
	{
		if(this.MPEG_Layer.Equals("11")) 		// MPEG 1 Layer I  ???
		{
			return this.Layer1[this.Bitrates()];
		}
		else if(this.MPEG_Layer.Equals("10")) 	// MPEG 1 Layer II ???
		{
			return this.Layer2[this.Bitrates()];
		}
		else									// MPEG 1 Layer III ???
		{
			return this.Layer3_1[this.Bitrates()];
		}
	}
	
	private string MPEG_2_Bitrate()
	{
		if(this.MPEG_Layer.Equals("11")) 		// MPEG 2 Layer I  ???
		{
			return this.Layer1[this.Bitrates()];
		}
		else if(this.MPEG_Layer.Equals("10")) 	// MPEG 2 Layer II ???
		{
			return this.Layer2[this.Bitrates()];
		}
		else									// MPEG 2 Layer III ???
		{
			return this.Layer3_2[this.Bitrates()];
		}
	}
	
	private int Bitrates()
	{
		switch(this.Bitrate)
		{
			case "0000": return 0;
			
			case "0001": return 1;
			
			case "0010": return 2;
			
			case "0011": return 3;
			
			case "0100": return 4;
			
			case "0101": return 5;
			
			case "0110": return 6;
			
			case "0111": return 7;
			
			case "1000": return 8;
			
			case "1001": return 9;
			
			case "1010": return 10;
			
			case "1011": return 11;
			
			case "1100": return 12;
			
			case "1101": return 13;
			 
			case "1110": return 14;
			
			case "1111": return 15;
			
			default: return -1;
					
		}
	}
	

	
	void CountFrames()
	{
		double framelength	= 0;
		double bitrate 		= (Convert.ToDouble(this.GetBitrate()))*1000;	// kbps * 1000
		double frequency 	= (Convert.ToDouble(this.GetSamplingFrequency()));
		double padding 		= Convert.ToDouble(this.PaddingBit);
		
		if(this.GetMPEG_Layer().Equals("Layer I"))
		{
			Console.WriteLine(this.GetMPEG_Layer());
			framelength = (12 * bitrate / frequency + padding) * 4;
			Console.WriteLine("(12 * {0} / {1} + {2}) * 4 = {3}", bitrate, frequency, padding, framelength);
		}
		else
		{
			Console.WriteLine(this.GetMPEG_Layer());
			framelength = 144 * bitrate;
			Console.WriteLine("144 * bitrate = " + framelength);
			framelength = framelength / frequency;
			Console.WriteLine("framelength / frequency = " + framelength);
			framelength = framelength + padding;
			Console.WriteLine("framelength + padding = " + framelength);
			Console.WriteLine("144 * {0} / {1} + {2} = {3}", bitrate, frequency, padding, framelength);
		}
		
		FrameCount = (int)framelength;
		Console.WriteLine("Framelength in Bytes: {0}",(int)framelength);
		//return FrameCount;	
	}
	
	public int GetFrameCount()
	{
		return FrameCount;
	}
	
}


Ist mit Sicherheit nicht die elgenteste Lösung, aber ich hatte mit der Tracklänge nie Probleme.

Thema: Fachinformatiker noch Chancen?
Am im Forum: Smalltalk

Klasse. Hätte nicht damit gerechnet, dass dieses Thema doch so viel Anklang findet. 8o Finde es schon mal beruhigend, dass ich damit nicht alleine da stehe.

Das man hier auch mal die "Gegenseite" (Arbeitgeber) hört und dessen Entscheidungskriterien, ist auch super (@Rene Paschold). Ich hatte insgeheim auch immer darauf gehofft, dass ein Auswahlverfahren sich nicht nur nach schulischen Erfolgen richtet. Wir waren schließlich alle mal jung und hatten S*****e im Kopf.

Für mich persönlich ist es nur schwer, da meine Familie(Frau, 2 Töchter) die ganze Zeit während der Ausbildung im Hintergrund standen, "für eine sichere Zukunft", und jetzt die Frage im Raum steht: "Was hat es gebracht?"

Werde diesen Thread auf jeden Fall weiter verfolgen, da ich gespannt bin wie es bei anderen so aussieht...

CU @ll SGT_BOB

Thema: Auf Image zeichnen? Refresh?
Am im Forum: GUI: Windows-Forms

Also so wie ich es jetzt habe funktioniert es mit dem links und rechts verschieben.
Leider zeichnet er mir beim Start noch kein Rechteck, obwohl ich dies aufrufe.


using System;
using System.Drawing;
using System.Windows.Forms;


class GraphMDI: Form
{
	Image template = Image.FromFile(@"TileSet_256x768.png");
	
	PictureBox pbox = new PictureBox();
	Graphics g;
	
	Button left = new Button();
	Button right = new Button();
	
	int curPosX = 0;
	int curPosY = 0;
	
	public GraphMDI()
	{
		
		this.AutoScroll = true;
		pbox.Parent = this;
		pbox.Location = new Point(0,0);
		pbox.Size = new Size(template.Size.Width, this.Size.Height);
		pbox.Image = template;
		pbox.SizeMode = PictureBoxSizeMode.AutoSize;
		g = pbox.CreateGraphics();

// Hier sollte doch das erste Rechteck an Pos(0,0) mit Größe(32,32) gezeichnet
// werden, oder nicht???
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		

		left.Parent = this.pbox;
		left.Location = new Point(5,5);
		left.Size = new Size(40,20);
		left.Text = "<-";
		left.Click += new EventHandler(LeftClick);
		
		right.Parent = this.pbox;
		right.Location = new Point(50,5);
		right.Size = new Size(40,20);
		right.Text = "->";
		right.Click += new EventHandler(RightClick);
		
		this.Size = new Size(pbox.Image.Width+30, this.Height);
		Paint += new PaintEventHandler(OnPaint);
	}

	
	void OnPaint(Object obj, PaintEventArgs e)
	{
		Graphics g = e.Graphics;

		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("OnPaint-Methode");
	}

// funktioniert...	
	void LeftClick(object obj, EventArgs ea)
	{
		curPosX -= 32;
		g = pbox.CreateGraphics();
		pbox.Refresh();
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("curPosX = " + curPosX+ "curPosY = " + curPosY);
	}
// funktioniert auch...	
	void RightClick(object obj, EventArgs ea)
	{
		curPosX += 32;
		g = pbox.CreateGraphics();
		pbox.Refresh();
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("curPosX = " + curPosX+ "curPosY = " + curPosY);
	}
}

Ich weiß daß ich nerve, aber ich würde es gerne verstehen, warum er mir das nicht beim Start schon zeichnet. ?(

Kann das Paint-Ereignis auch noch anders aufgerufen werden (von mir selbst), außer über eine Formveränderung?


Ich hätte da direkt noch eine Frage.
Gegebenenfalls ich möchte genau den aktuellen, mit dem Rechteck gewählten, Ausschnitt des Bildes(z.B.: 64,96,32,32) in die Zwischenablage oder sonst wohin kopieren. Wie würde das gehen, wo soll ich da ansetzen???

Danke nochmal für die bisherige Hilfe und auch schon mal für zukünftige Antworten.

CU @ll SGT_BOB

Thema: Fachinformatiker noch Chancen?
Am im Forum: Smalltalk

Hallo Leute.

Ich hab im Februar dieses Jahres meine Ausbildung zum Fachinformatiker Anwendungsentwicklung erfolgreich beendet. Seit dem bin nun schon auf Jobsuche.
(Gegend um Aachen, falls es jemanden interessiert :D) Nach etlichen Bewerbungen und langer Suche gehen mir die Firmen langsam aus. Ablehnungsgründe waren unter anderem: "Wir suchen nur Informatiker...", "... mindestens 3 Jahre Berufserfahrung...", "Kenntnisse in mindestens 5 Programmiersprachen", usw...

Hallo, Deutschland, ich komme aus der Ausbildung. Als ich anfing hieß es von allen Seiten, toll da machste was mit Zukunft. Wo bitte sind die deutschlandweit ca. 8500 Stellen in der IT-Branche und wer sucht bzw. braucht noch Fachinformatiker.

Kann sein dass ich durch meine lange Arbeitssuche mittlerweile eine sehr negative Einstellung zu dem Ganzen habe. X( Aber ich hab das Gefühl die Verlangen einfach zu viel von jemandem der aus der Ausbildung kommt.

Wie denkt ihr darüber?

Thema: Auf Image zeichnen? Refresh?
Am im Forum: GUI: Windows-Forms

Habs mal so versucht, zum mindest so wie ich es verstanden hab.

Leider hat es nicht so ganz funktioniert.

Wenn ich das richtig verstanden habe, zeichnete ich vorher auf dem Image und nicht auf dem PictureBox-Steuerelement, richtig? So das hab ich glaub ich jetzt nicht mehr. Leider aber immer noch mein Problem.


using System;
using System.Drawing;
using System.Windows.Forms;


class GraphMDI: Form
{
	Image template = Image.FromFile(@"TileSet_256x768.png");
	
	PictureBox pbox = new PictureBox();
	Graphics g;
	
	Button left = new Button();
	Button right = new Button();
	
	int curPosX = 0;
	int curPosY = 0;
	
	public GraphMDI()
	{
		
		this.AutoScroll = true;
		pbox.Parent = this;
		pbox.Location = new Point(0,0);
		pbox.Size = new Size(template.Size.Width, this.Size.Height);
		pbox.Image = template;
		pbox.SizeMode = PictureBoxSizeMode.AutoSize;
		g = Graphics.FromImage(template);
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		
		left.Parent = this.pbox;
		left.Location = new Point(5,5);
		left.Size = new Size(40,20);
		left.Text = "<-";
		left.Click += new EventHandler(LeftClick);
		
		right.Parent = this.pbox;
		right.Location = new Point(50,5);
		right.Size = new Size(40,20);
		right.Text = "->";
		right.Click += new EventHandler(RightClick);
		
		this.Size = new Size(pbox.Image.Width, 300);
		Paint += new PaintEventHandler(OnPaint);
	}
	
	void OnPaint(Object obj, PaintEventArgs e)
	{
		Graphics g = e.Graphics;
		pbox.Refresh();
		//g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("OnPaint-Methode");
	}
	
	void LeftClick(object obj, EventArgs ea)
	{
		curPosX -= 32;
		g = pbox.CreateGraphics();
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("curPosX = " + curPosX+ "curPosY = " + curPosY);
	}
	
	void RightClick(object obj, EventArgs ea)
	{
		curPosX += 32;
		g = pbox.CreateGraphics();
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("curPosX = " + curPosX+ "curPosY = " + curPosY);
	}
}

Bei dem Vorschlag von Pulpaplex kommt es doch meiner Meinung nach aufs Selbe raus.
Ich erstelle mir eine Klasse die von PictureBox abgeleitet wird und überschreibe deren Methode "OnPaint()". Dann erstelle ich mir eine Instanz in meiner Hauptform und greife dann auf diese zu.

Oh man, entweder hab ich im moment zu wenig schlaf oder ich hab einfach nur ein Brett vorm Kopf. X(

Vielleicht kann sich noch mal jemand die Arbeit machen mir zu helfen und es genauer erklären. Eigentlich bin ich nicht mehr des blutige Anfänger, hab aber schon seit einiger Zeit nicht mehr viel getan.

Pleaze help !!!

CU @ll SGT_BOB

Thema: Auf Image zeichnen? Refresh?
Am im Forum: GUI: Windows-Forms

Hey, erst mal danke.

Das sieht doch schon ganz gut aus und vor allem verständlich . Ich werds gleich mal probieren.

Danke schön.


CU @ll SGT_BOB

Thema: Auf Image zeichnen? Refresh?
Am im Forum: GUI: Windows-Forms

Erst mal Danke für die schnellen Antworten.

@Pulpapex:

Ich erklär glaub ich erst mal worauf das ganze hinauslaufen soll. Ich möchte aus Grafiken Tiles ausschneiden. Momentan sollen die 32x32 Pixel groß sein.

Also hab ich mir gedacht, nimmste ne PictureBox und packst das Image da rein.
Das gezeichnete Rechteck soll einfach nur zur Auswahl des zukünftigen Tiles sein.

Heißt das jetzt ich soll auf dem Image zeichnen oder auf der PictureBox. wenn ich auf der PictureBox zeichne, dann seh ich das Rechteck nicht.
Hab jetzt den Refresh bzw. das Update für die PictureBox ausgeführt, nicht mehr für die Form. Problem bleibt trotzdem bestehen.
Bin in Sachen GDI+ leider absoluter Neuling, weiß also leider nicht ganz wo drauf du hinaus willst.

Vielleicht kannst du etwas genauer werden, wenns nicht zu viel verlangt ist.

CU @ll SGT_BOB

Thema: Wie gehts nun weiter mit C#
Am im Forum: Smalltalk

@Matrix-NTN:

Mach dir nix draus, ich hab dieses Fettnäpchen auch mitgenommen. Wer lesen kann ist klar im Vorteil.

Aufklärung des ganzen SPASS !!!

War aber auch richtig fies

Aber trotzdem Super durchgezogen

Thema: dos fenster
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Bei #Develop

1. Projekt --> Projektoptionen...

2. Auf Konfiguration klicken

3. Debug oder Release auswählen (für deine Zwecke vermutlich Debug)

4. Ausgabe anklicken

5. Bei Ausgabetyp "WinExe" auswählen

6. mit OK bestätigen

7. freuen

Thema: Auf Image zeichnen? Refresh?
Am im Forum: GUI: Windows-Forms

Hallo Leute.

Ich hab folgendes Problem.

Ich hab eine PictureBox in der ein Bild geladen wird. Ein 32x32 großes Rechteck wird darauf gezeichnet. Dieses soll (momentan mit zwei "häßlichen" Buttons ) auf dem Bild "verschoben" werden. Es soll also immer 32 Pixel nach rechts oder links wandern. Funzt auch soweit.

ABER die "alten" Rechtecke werden nicht gelöscht. Warum??? Refresh???

Hier mal der Quellcode in dem ich grad herumexperimentier:


class GraphMDI: Form
{
	Image template = Image.FromFile(@"TileSet_256x768.png");
	
	PictureBox pbox = new PictureBox();
	Graphics g;
	
	Button left = new Button();
	Button right = new Button();
	
	int curPosX = 0;
	int curPosY = 0;
	
	public GraphMDI()
	{
		
		this.AutoScroll = true;
		pbox.Parent = this;
		pbox.Location = new Point(0,0);
		pbox.Size = new Size(template.Size.Width, this.Size.Height);
		pbox.Image = template;
		pbox.SizeMode = PictureBoxSizeMode.AutoSize;
		g = Graphics.FromImage(template);
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		
		left.Parent = this.pbox;
		left.Location = new Point(5,5);
		left.Size = new Size(40,20);
		left.Text = "<-";
		left.Click += new EventHandler(LeftClick);
		
		right.Parent = this.pbox;
		right.Location = new Point(50,5);
		right.Size = new Size(40,20);
		right.Text = "->";
		right.Click += new EventHandler(RightClick);
		
		this.Size = new Size(pbox.Image.Width, 300);
		Paint += new PaintEventHandler(OnPaint);
	}
	
	void OnPaint(Object obj, PaintEventArgs e)
	{
		Graphics g = e.Graphics;
		g.DrawImage(template, 0,0);
		this.Update();
		//g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("OnPaint-Methode");
	}
	
	void LeftClick(object obj, EventArgs ea)
	{
		curPosX -= 32;
		g = Graphics.FromImage(template);
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		this.Refresh();
		Console.WriteLine("curPosX = " + curPosX+ "curPosY = " + curPosY);
	}
	
	void RightClick(object obj, EventArgs ea)
	{
		curPosX += 32;
		g = Graphics.FromImage(template);
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		
		this.Refresh();
		Console.WriteLine("curPosX = " + curPosX+ "curPosY = " + curPosY);
	}
}


Danke schon mal für die Antworten.

CU @ll SGT_BOB