Laden...

Forenbeiträge von dN!3L Ingesamt 2.891 Beiträge

06.12.2012 - 16:25 Uhr

Die hat natürlich nicht funktioniert.

Und das heißt "natürlich" was genau?
Dein geposteter Code würde auch nicht kompilieren, da die Eigenschaft "Handle**d**" heißt.

Ansonsten: [FAQ] Textbox: Signalton/Beep nach Drücken der Eingabetaste verhindern

06.12.2012 - 16:22 Uhr

So sieht mein Select aus. Die Read Binarys haben jeweils im P1 81 oder 82.

Ich habe hier das gleiche Select. Wie sehen deine Reads komplett aus?
Hast du die Destination (beide Karte) beachtet?
Was gibt es jeweils als Status-Code zurück?

Und gibt es für das dekomprimieren der Daten ein Script, weil bei meinem kommt immer "Die Magic Number im Header ist nicht richtig. Stellen Sie sicher, dass Sie einen GZip-Stream übergeben".

Hast du beachtet, dass du das Response-Array nicht sofort entzippen kannst? Da stehen noch Metadaten drin und du musst erst noch den eigentlichen Datenbereich rauskopieren.
Zeig doch mal her, was du bisher an Code hast, dann kann ich dir Tipps dazu geben.

06.12.2012 - 15:48 Uhr

Wie du erkennst, ob es eine KVK oder eine eGK ist, steht ja oben (Rückgabe von RequestICC).

Zum Lesen der eGK werden bei uns folgende Befehle ausgeführt:1.ResetCT 1.RequestICC 1.Select EGK 1.Read PD 1.Read VD 1.EjectICC

Eine recht ausführliche Doku zu den eGK-Kommandos hatte ich in Integrationsanleitung medMobile (via medline - medMobile - Kartenlesegeräte für die Gesundheitskarte (eGK)) gefunden.

05.12.2012 - 13:27 Uhr

Manchmal ist die Lösung ganz einfach, aber gefunden hab ich die Message nicht ums verrecken.

Steht doch alles eindeutig und vollständig im Link, den ich gepostet habe. OK, man muss natürlich noch ein kleines Stück nach unten bis zur ersten Antwort scrollen...

05.12.2012 - 10:37 Uhr

Du kannst der RichtTextBox die Windows-Message WM_SETREDRAW schicken um das BeginUpdate/EndUpdate-Verhalten nachzubilden und so das gesamte Repaint (de-)aktivieren. Siehe z.B. c# - RichTextBox syntax highlighting in real time--Disabling the repaint

04.12.2012 - 11:39 Uhr

Der Vollständigkeit halber noch das Prinzip für die eGK:
Doku gibt's unter Implementierungsleitfaden zur Einbindung der eGK in die Primärsysteme der Leistungserbringer.
Unter 4.2.3 "Datei EF.PD" und 4.2.4 "Datei EF.VD" steht, wie jeweils das Byte-Array aufgebaut ist.

Zitat von: Implementierungsleitfaden
Die [Daten] selbst werden als XML-Daten gemäß vorgegebenem XML-Schema, gzip-komprimiert und nicht verschlüsselt innerhalb der Datei abgelegt. Der zu verwendende Zeichensatz für die fachlichen Inhalte ist ISO8859-15

Die Schemadateien kann man z.B. unter Release 0.5.3 Basis-Rollout herunterladen (ganz unten "Für Hersteller bietet die gematik zudem Schnittstellendefinitionen im XSD- und WSDL-Format an").
Aus den xsd-Dateien kann man mit dem XML Schema Definition-Tool (Xsd.exe) entsprechende Klassen generieren lassen.
Das entsprechende Byte-Array mit den Nutzdaten (Achtung: GZip-Komprimiert) kann man dann leicht mit der XmlSerializer-Klasse deserialisieren.

Den C#-Quellcode dazu gibt es unter KVK- & eGK-API (via CTAPI) - Source Code - EgkResult.cs

04.12.2012 - 11:25 Uhr

In dem response stehen ja nur die Bytes oder?

Ja. Und diese Bytes enthalten sowohl Metadaten (Tag, Länge) als auch die eigentlichen Nutzdaten.
Den konkreten Quellcode findest du unter KVK- & eGK-API (via CTAPI) - Source Code - KvkResult.cs.
Das Konzept ist folgendes (Dokumentation siehe Multifunktionale Kartenterminals - MKT):

Falls das erste Byte 8216, 9216 oder A216 ist, kommt als erstes ATR und Directory (Anhang 3 MKT-Anforderungen für Versichertenkarten, 1.6.2 Bit- und Hexadezimal-Struktur des ATR und Directory).
Die (also die ersten 30 Bytes) können dann ignoriert/übersprungen werden.

Dann kommen die eigentlichen Daten:

Zitat von: MKT-Teil 5: SYN – ATR und Datenbereiche 4 Codierungstechnik 4.1.
Als Codierungstechnik für Datenobjekte werden die "Basic Encoding Rules (BER)" der ISO-Codierungskonvention "Abstract Syntax Notation One (ASN.1)" verwendet. Ein Datenobjekt besteht danach aus:
einem Datenobjekt-Kennzeichen ("Tag")

einem Längenangabe ("Length") und

einem Datenobjekt-Wert ("Value").

Die Länge ist recht tricky in 1-3 Bytes codiert (hat mich einiges an Zeit gekostet, das rauszubekommen):

Zitat von: MKT-Teil 5: SYN – ATR und Datenbereiche 4 Codierungstechnik 4.1.

Length 0 .. 127:
one byte coding the length

Length 128 .. 255:
1st byte: bit b8 = 1, b7-b1= 0000001 (number of subsequent length bytes); 2nd byte: Length

Length 256 .. 65535:
1st byte: bit b8 = 1,b7-b1= 0000010; 2nd + 3rd byte: Length

Man muss also das Byte-Array durchgehen, sich den Tag merken, dann die Länge ermitteln, und entsprechend der Länge dann die nächsten n Bytes auslesen. Dann kann man diese in einen String konvertieren (DIN_66003-codiert). Danach kommt dann das nächte Tag, Länge, usw. - bis man am Ende angekommen ist.

Die Auflistung der Tags mit Bedeutungen und Min-/Max-Längen findet man in Anhang 3 MKT-Anforderungen für Versichertenkarten, 1.6.3 Datenstruktur des Application-file und Prüfvorgaben

04.12.2012 - 10:47 Uhr

Jetzt muss ich nur noch die Länge der einzelnen Daten herausfinden, dann kann ich die Daten z.B. in einer Datenbank speichern.

Welche Längen meinst du? Die maximal möglichen Längen oder die tatsächlichen Längen in den Nutzdaten?

04.12.2012 - 10:15 Uhr

Ist der Ablauf richtig?

Ja, sollte so stimmen. (Als Ergänzung noch: Destination ist bei 1,2,3,6 das Terminal (1) und bei 4,5 die Karte (0).

04.12.2012 - 09:47 Uhr

Woran erkenne ich eine eGK und eine KVK worin liegen die Unterschiede?

Das Vorgehen KVK vs. eGK mit der CTAPI ist folgendermaßen:


using (var cardTerminalClient = new CardTerminalClient(...))
{
	cardTerminalClient.ResetCT();
				
	string result = cardTerminalClient.RequestICC();
	if (result=="9000")
	{
		cardTerminalClient.SelectKVK();
		KvkResult kvkResult = cardTerminalClient.ReadKVK();
	}
	else
	{
		cardTerminalClient.SelectEGK();
		EgkResult egkResult = cardTerminalClient.ReadEGK();
	}

	cardTerminalClient.EjectICC();
}

Grundlegende Unterschiede gibt es in der Codierung der Daten der Karten (siehe auch mein vorheriger Beitrag).
Die Daten auf der KVK und der eGK sind so ziemlich die gleichen, wobei sie auf der eGK potentiell noch etwas detaillierter dargestellt sind. Und auf die eGK kann man auch schreiben - wobei das aber noch ein ganz anderes Thema ist.

03.12.2012 - 17:50 Uhr

Der Pfad auf dem Notebekook ist: D:\Datenbank\Projekt_neu\projekt.mdf

Genau das ist das Problem. Du musst die Datenbank im SQL-Server anfügen (mit einem konkreten Namen), statt direkt auf den Pfad verweisen.
Der ConnectionString wäre dann Data Source=BIBER-NOTEBOOK\SQLEXPRESS;Initial Catalog=Projekt.

Siehe auch: Anfügen einer Datenbank.

03.12.2012 - 17:10 Uhr

Was steht denn in dem response drin? Die Position, an dem die Daten in der Karte stehen oder ist das schon z.B. der krankenkassenname?

Man bekommt die kompletten Daten. Also bei der KVK liefert ReadKVK alle auf der Karte vorhandenen Daten; bei der eGK liefert ReadPD die persönlichen Versichertendaten und ReadVD die allgemeinen Versicherungsdaten und die geschützten Versichertendaten.

Allerdings kann man das Result-Array nicht einfach so in einen String umwandeln:

Bei der KVK ist das Result eine Aneinanderreihung von 1 Byte Tag (z.B 8016 für "KrankenkassenName"), 1-3 Bytes Länge des Elements und Wert des Elements (DIN_66003-codiert).

Bei der eGK:
PD enthält 2 Bytes Längenabgabe für den Inhalt, dann ein ZIP-Komprimiertes XML-Dokument (ISO-8859-15 codiert).
VD enthält jeweils 2 Bytes Offset für Start & Ende der VD, sowie je 2 Bytes Offset für Start & Ende der GVD. (Die GVD lassen sich in den Musterkarten noch Auslesen, bei den "echten" eGKarten kommt man aber nicht ran.

Zu beachten sind jeweils noch die zusätzlichen beiden Status-Bytes am Ende des Results.

03.12.2012 - 15:53 Uhr

bekomme aber nie den richtigen zugriff auf die comment-tags

Da brauchst du nur den richtigen XPath-Ausdruck für. Dann wird es auch der besagte Einzeiler.


foreach (XmlNode node in xmlDoc.SelectNodes("Memos/node[@index='0']/comment/text()"))
{
	string text = node.Value;
}

02.12.2012 - 17:29 Uhr

Findet Ihr die Idee gut, erst dass File zeilenweise zu lesen. Danach beim Auffinden von /beginn Messung ein Array zu füllen. Bei / end Messung ein Objekt zu erzeugen und es mit den gespeicherten Daten zu befüllen.

Das kann man so pauschal nicht sagen. Das kommt auf die Anzahl und Komplexität der verschiedenen Möglichkeiten an, wie die Messungen bzw. die Datenpakete aufgebaut sein können. Wenn es immer so simpel ist, wie du es schreibst, kann das eine gute Lösung sein. Vielleicht macht es den Code sogar noch etwas einfacher, wenn du reguläre Ausrücke verwenden würdest.

Gibt es eine bessere Möglichkeit Daten sinnvoll abzuspeichern?

Was genau meinst du damit (die Eingabedatei; oder XML)?

30.11.2012 - 16:39 Uhr

Das ist ein allgemeines Problem. Tritt z.B. auch bei Winforms-Anwendungen auf.

Lösen kann man das z.B. durch einen Timer, der beim Einblenden des Menüs ausgelöst wird und dann (nach einer gewissen Zeit) prüft, ob sich der Mauszeiger noch über dem Menü-Control (bzw. plus einen gewissen Toleranzbereich drumherum) befindet.
Das hat auch den Vorteil, dass man nicht die ganze Zeit den Cursor exakt über dem Menü-Control befinden muss. Denn eigentlich verschwinden Menüs auch gar nicht sofort, wenn man sie verlässt.

30.11.2012 - 14:44 Uhr

Erstens: Du musst deine response noch entsprechend der zurückgegebenen Länge kürzen.


byte[] result = new byte[respLen];
Array.Copy(response,result,respLen);
return result;

Zweitens: Der Status wird durch die letzten beiden Bytes im result dargestellt. In deinem Fall also (144,0)10. Und wie gesagt musst du dir die Werte in der Hexadezimal-Darstellung angucken. Macht (90,00)16 - also genau das, was zurückgegeben werden muss. (ResetCT muss 9000 oder 9500 zurückgeben, nicht 0900.

Hier noch eine Erweiterungsmethode zum einfachen Bestimmen des Statuscodes (Aufruf wäre z.B. string statusCode = result.GetStatusBytes()):


public static class Extensions
{
	public static string ToHexString(this byte value)
	{
		return Convert.ToString(value,16).PadLeft(2,'0');
	}

	public static string GetStatusBytes(this byte[] bytes)
	{
		if (bytes==null || bytes.Length<2)
			return null;
		else
			return bytes[bytes.Length-2].ToHexString()+bytes[bytes.Length-1].ToHexString();
	}
}

30.11.2012 - 14:03 Uhr

Du bekommst also ein Array mit nur einem einzelnen Element zurück?
Und die ganzen cmdreturn-Werte sind in Ordnung (also immer 0)?

Konvertiert in einen String ist das ein Fragezeichen. Vermutlich wird also mein command nicht korrekt abgearbeitet.

Du kannst die (Roh-)Antwort so gut wie nie in einen String konvertieren. Die letzten beiden(!) Bytes sind immer die Statusbytes (die du wie gesagt in Hex umwandeln musst), der Rest ist bei der eGK erstens gezippt und zweitens mit Metainformationen codiert.

30.11.2012 - 13:35 Uhr

Soweit mir bekannt, soll ich nun als Rückgabewert 09 00 erhalten. Bekomme aber ständig 144 als Rückgabewert.

Du musst beachten, was die Rückgabe "09 00" eigentlich darstellt: Nämlich die letzten zwei Bytes in Hexadezimal-Darstellung.
Deine 144 passt da nicht in dieses Darstellungssystem. Daher: Was genau ist bei dir 144? Und bei welchem Befehl?

Ansonsten: Ich habe das ganze mal für ein Cherry MTK+ ST-2052 gemacht. Das Gerät mag es scheinbar nicht, wenn man nicht immer CT_close aufruft (z.B. weil man beim Debuggen zwischendrin einfach mal auf Stopp klickt). Danach hat es bei RequestICC immer eine 9001 zurück gegeben (ansonsten ist nirgendwo ein Fehlercode zu erkennen). Da half dann immer nur ziehen des USB-Kabels und wieder verbinden.

Soweit bin ich schon

Da hast du aber noch einiges vor dir...
Wenn man weiß, was man wie machen muss, ist es eigentlich nicht so schwer. Allerdings muss man erstmal an die Infos dazu kommen - da braucht man immer die richtigen Dokumente zum richtigen Thema zu.

EDIT: Im Dokumentationsbereich der KVK- & eGK-API gibt es nun die zugehörigen Spezifikationen zusammen mit entsprechendem C#-Code.

30.11.2012 - 10:20 Uhr

Das Postfach ist auf einem Exchange

Guck dir mal die Exchange Web Services an.
Am leichtesten kannst du die mithilfe der EWS Managed API ansprechen. Ein gutes Tutorial gibt's unter Working with the EWS Managed API - Getting Started.

Hier mal etwas Beispielcode:


ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

Ews.ExchangeService exchangeService = new Ews.ExchangeService(Ews.ExchangeVersion.Exchange2007_SP1,System.TimeZoneInfo.Local);
exchangeService.Url = new Uri("https://rechnername/ews/exchange.asmx");

Ews.SearchFilter searchFilter = new Ews.SearchFilter.SearchFilterCollection(Ews.LogicalOperator.And,
	new Ews.SearchFilter.IsGreaterThanOrEqualTo(Ews.AppointmentSchema.Start,startDateTime),
	new Ews.SearchFilter.IsLessThanOrEqualTo(Ews.AppointmentSchema.Start,endDateTime),
	new Ews.SearchFilter.IsEqualTo(Ews.AppointmentSchema.Sensitivity,Ews.Sensitivity.Normal));

Ews.FolderId folderID = new Ews.FolderId(Ews.WellKnownFolderName.Calendar,new Ews.Mailbox(email));
Ews.Folder folder = Ews.Folder.Bind(exchangeService,folderID);

foreach (Ews.Appointment app in folder.FindItems(searchFilter,new Ews.ItemView(int.MaxValue)))
{
	app.Load(new Ews.PropertySet(
		Ews.AppointmentSchema.Start,
		Ews.AppointmentSchema.End,
		Ews.AppointmentSchema.Subject,
		Ews.AppointmentSchema.Location,
		Ews.AppointmentSchema.Body));

	string text = app.Body.Text;
	DateTime start = app.Start;
	DateTime end = app.End;
}

30.11.2012 - 10:08 Uhr

Ach ja ich arbeite mit Visual Studio 2010 und .Net Framework 4.0

Was eigentlich noch wichtiger zu erwähnen wäre: Was ist das für ein Postfach, zu dem du dich verbindest? POP? SMTP? IMAP? MS Exchange?

29.11.2012 - 15:11 Uhr

Lokal klappt es wunderbar.

Je nach Sicherheitseinstellungen von Windows kann man nämlich nicht einfach so Anwendungen starten, die sich auf einem Netzlaufwerk befinden.
Ist der \fileserver in den Interneteinstellungen in die Liste der vertrauenswürdigen Hosts aufgenommen (siehe z.B. Ausführbare Dateien und Skripte auf Netzlaufwerk)?

29.11.2012 - 14:42 Uhr

Hast du mal versucht, ob es lokal funktioniert? Denn anscheinend rufst du die Anwendung ja von \fileserver auf.

28.11.2012 - 11:46 Uhr

[...] ich kann die DLL nicht mit dem InstallUtil installieren

Klassenbibliotheken kannst du auch nicht als Dienst installieren. Das muss schon eine exe sein.

Eine Anwendung kann sich auch ganz allein mithilfe der ManagedInstallerClass-Klasse als Dienst installieren. Siehe z.B. Self install windows service in .NET.

28.11.2012 - 11:41 Uhr

[...]ich habs gern das die Maus immer auf der gleichen Linie ist

Daher oben auch mein Tipp (da sowas erst im Nachhinein nervend auffällt):

Worauf man m.E. etwas achten sollte ist, dass (bei unterschiedlichen Größen) die beiden Monitore in etwa die gleiche physische Auflösung haben. Dann klappt es mit dem Mausübergang zwischen den Displays besser 😉

Meine Anzeige:

27.11.2012 - 16:43 Uhr

Das hat überhaupt nichts mit dem Framework zu tun, sondern ist eine Abwandlung von
>

Auf den ersten Blick sieht es natürlich so aus - ist aber nicht so. Auch ohne irgendwelche Threads tritt das Problem auf. Der Cursor wird einfach nicht neu gezeichnet (bzw. nur, wenn man den Cursor wirklich bewegt).

Reproduzieren kann ich das Problem bei mir mit folgendem Code (in Fenster klicken und dann die Hand von der Maus nehmen - der Cursor ändert sich (meistens) erst, wenn man die Maus wieder bewegt - statt sofort nach ändern der Application.UseWaitCursor-Eigenschaft):


public partial class Form1 : Form
{
	private Timer timer = new Timer { Interval = 1000 };

	public Form1()
	{
		this.Click += delegate
		{
			this.timer.Enabled = true;
			Application.UseWaitCursor = true;
			this.Text = "WaitCursor: "+Application.UseWaitCursor;
		};

		this.timer.Tick += delegate
		{
			this.timer.Enabled = false;
			Application.UseWaitCursor = false;
			this.Text = "WaitCursor: "+Application.UseWaitCursor;
		};
	}
}

27.11.2012 - 15:26 Uhr

Kenn ich. Ich habe gerade mal geguckt, wie das gelöst wurde.
Ob du das DoEvents benötigst, weiß ich nicht - aber das Neuzuweisen der Position war glaube ich der Trick.


baseControl.Cursor = Cursors.Default;

Application.DoEvents();
Cursor.Position = Cursor.Position;

23.11.2012 - 16:31 Uhr

Im Controller habe ich die Funktion CarId, in die ich auch komme, allerdings weiß ich nicht wie ich an den Wert komm.

Welchen Wert meinst du genau? An die ausgewählte CarID kommst du direkt über den Parameter deiner Action. Oder funktioniert das schon nicht?

23.11.2012 - 16:20 Uhr

Welche Technologie willst du einsetzen? Egal?

23.11.2012 - 16:03 Uhr

Es sollte eigentlich auch so funktionieren:


public class Pack
{
	[XmlArray("Apps")]
	[XmlArrayItem("App")]
	public Application[] Applications;
}

23.11.2012 - 15:58 Uhr

Hm, ich bin mir nicht sicher, ob man einfach so rausbekommt, welche Dienste ein Prozess benötigt. Ist es möglich, dass die Assemblies, die dein Programm nachladen kann, mit angeben, von welchen Diensten sie abhängen (z.B. via Attribute)?

22.11.2012 - 14:23 Uhr

Schreib dir eine Erweiterungsmethode dafür. Ich habe z.B. folgende (passt nicht für DataRows, solltest du aber leicht umschreiben können):


using System;
using System.Data;
using System.Diagnostics;

public static class DataRecordExtensions
{
	[DebuggerStepThrough]
	public static T GetColumnValue<T>(this IDataRecord dataRecord,string columnName)
	{
		object value = dataRecord[columnName];
		return (value is DBNull) ? default(T) : (T)value;
	}
}

Dann braucht man einfach nur dataReader.GetColumnValue<int?>("Feldname") schreiben.

19.11.2012 - 10:36 Uhr

Spontan fallen mir da folgende Dinge ein:*Connection-Timeout hochsetzen. Vergisst man oft und merkt man oft erst relativ spät. *Beschränkungen bei den Transaktionsgrößen sind mir bis jetzt noch nicht untergekommen. Allerdings musst du die Ressourcen beachten, die der Datenbankserver dafür beansprucht. Teilweise steigt der Arbeitsspeicherverbrauch massiv oder die Größe der Transaktionslog-Dateien massiv an.

15.11.2012 - 13:07 Uhr

FYI: Bei mir sehe ich dann gar nicht mehr (also den Teil des Cursors, der sich im Bereich der Textbox befindet). Das sieht dann so aus, als ob der Textbox-Hintergrund direkt über den Cursor gezeichnet wird.

08.11.2012 - 09:50 Uhr

Lang gewartet und endlich da: Productivity Power Tools 2012.

Und irgendwie funktionieren nicht alle enthaltenen Features bei mir. Grml.

05.11.2012 - 11:18 Uhr

Wie würdes Du dis Sache bewerkstelligen?

Ich betrachte das jetzt mal nicht als dreisten Versuch, andere Leute deine Arbeit machen zu lassen. Daher: Welchen Code hast du denn schon?

05.11.2012 - 11:04 Uhr

Klingt für mich, als würdest du die Knoten alle linear von oben nach unten durchgehen. Allerdings sollte das ein typischer Fall für [Tutorial] Bäume durchlaufen mit Rekursion (und Alternativen) sein - da bekommst du dann auch automatisch den Parent-Knoten raus.

05.11.2012 - 10:58 Uhr

Laut StackTrace ist die letzte aufgerufene Methode "DevExpress.Xpf.LayoutControl.LayoutGroup.GetInternalElements()"...

Und die Methoden davor?
Kann auch sein, dass die DevExpress-Komponente einen Fehler hat. Guck dir mal [Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden an und mach ggf. eine Supportanfrage bei DX auf.

05.11.2012 - 10:44 Uhr

Dann ist es aber eine StackOverflowException.

Kommt drauf an - kann auch eine OutOfMemoryException sein. Kannste mir glauben, hatte ich neulich erst auf dem Tisch. 😉

05.11.2012 - 10:42 Uhr

Ich möchte z.Bsp. am EndElement prüfen, ob die Verschachtelung zu ende ist.

Hm, ich verstehe nicht ganz, wo da das Problem ist (bzw. warum du unbedingt EndElement brauchst). Wenn du mit der XmlDocument -Klasse arbeitest, hast du doch schon alle Infos, was worin geschachtelt ist.

05.11.2012 - 10:40 Uhr

wieso kommt es zu einer OutOfMemoryException?

Die tritt auch gern auf, wenn man eine Endlosrekursion erzeugt hat.
Also - wie schon empfohlen - die Exception abfangen und mal in den StackTrace gucken.

05.11.2012 - 10:29 Uhr

Warum genau willst du sowas machen? Denn zu jedem End-Tag gibt es ja einen entsprechenden Start-Tag. Und die kannst du ja problemlos rausfinden.

31.10.2012 - 18:27 Uhr

Ohne irgendwelche Angaben darüber, wie du "die entsprechenden Zellen in Excel" befüllst (OLE-DB, Office-Interop, etc.?) sagt mir meine Glaskugel nur null bzw. Nullable.

28.10.2012 - 19:41 Uhr

Nimm die DomainUpDown-Klasse.

Zitat von: DomainUpDown-Klasse
Stellt ein Windows-Drehfeld (auch als Auf-Ab-Steuerelement bezeichnet) dar, in dem Zeichenfolgenwerte angezeigt werden.

28.10.2012 - 19:22 Uhr

Rufst du einfach nur Show() ohne Parameter auf oder übergibst du noch den Owner?

22.10.2012 - 13:35 Uhr

[...]aber dann komme ich von den string array nicht auf den byte array

Dann ist es erstmal deine Aufgabe, zu überlegen, wie man nun aus einem String-Array ein Byte-Array macht. Bzw. wie du aus einer String-Repräsentation eines Bytes ein tatsächliches Byte machst. Tipp: Byte.Parse-Methode

19.10.2012 - 11:16 Uhr

Hast Dir mal
>
angeschaut?

Also ich sehe da kein Beispiel mit einem GroupBy nach mehreren Werten.){gray} Das GroupBy-Nested-Beispiel könnte helfen, ist aber nicht die genaue Entsprechung deines SQL-Befehls.

Es geht analog zum Select (hättest du ja auch einfach mal ausprobieren können):


group s by new { s.am.Year,s.am.Month,s.am.Day } into g
select new { Jahr = g.Key.Year, g.Key.Month, g.Key.Day, supportfall = g }

17.10.2012 - 17:04 Uhr

Was genau soll das werden, wenn es fertig ist?
Denn das WebBrowserControl braucht eine aktive Nachrichtenschleife - und so wie der Code aussieht, den du gepostet hast ("Hauptprogramm") - ist die nicht vorhanden.