Laden...

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

06.02.2013 - 09:46 Uhr

Warum sollte es nicht möglich sein?
Die Embedded-Versionen sind ja auch normale Windows-Versionen nur halt mit einer bestimmten Auswahl an Features. Du solltest sicherstellen, dass eine .NET-Version installiert ist und dann sollte es funktionieren.

04.02.2013 - 16:36 Uhr

Ich schätze das bei Count(*) einfach etwas anderes als decimal.

Darauf würde ich auch erstmal tippen. Das ExecuteScalar eines "count(*)" gibt in der Regel ein int (oder ggf. long) - also eine Ganzzahl - zurück. Keine gebrochene Zahl wie decimal.
Kann sein, dass das bei Oracle anders ist, aber ich würde erstmal da gucken.

31.01.2013 - 16:36 Uhr

Ist denn der UNC-Pfad als vertrauenswürdige Zone eingerichtet?

29.01.2013 - 09:44 Uhr

Und noch eine weitere Vervollständigung: Man kann VS auch so einstellen, dass immer das aktive Projekt als Startprojekt verwendet wird (dann wird ignoriert, was als Startprojekt eingestellt ist).

28.01.2013 - 15:02 Uhr

Die Befehle die ich absetze sind wie beim Vorposter [...]

Die reinen Befehlsnamen sagen aber nicht allzu viel aus. Viel interessanter wären noch die Parameter (Bytecodes und Destination).

[...] dass der Status "Card not activated" bedeutet.

So müsste es sein - wenn du in die MTK-Spezifikation Teil 4 (CardTerminal Basic Command Set) guckst, findest du die Zuordnung.

Hast du mal eGKs ausprobiert? Es gibt sonst niemanden in deiner Umgebung, der (noch) eine KVK hat, die du mal probieren kannst?

Gruß,
dN!3L

28.01.2013 - 11:48 Uhr

Zitat von: Sortieren von Usings
Standardmäßig sortiert Visual Studio die using-Direktiven, die mit System beginnen, vor anderen using-Direktiven. Sie können Usings sortieren ändern, um alle using-Direktiven alphabetisch zu sortieren. Weitere Informationen finden Sie unter Optionen, Text-Editor, C#, Erweitert.

28.01.2013 - 10:41 Uhr

Noch eine kleine Ergänzung zu eGKs:*In der Spezifikation für Multifunktionale Kartenterminals (MKT) sind in Teil 4 (CT-BCS - Anwendungsunabhängiger CardTerminal Basic Command Set) die Kommandos und möglichen Rückgabe-Codes erklärt. *eGK-Musterkarten können kostenfrei unter gematik (Bestellung Musterkarten) beantragt werden.

25.01.2013 - 15:33 Uhr

Wo ich deine Where-Bedingung so sehe: Bitte dringend mal [Artikelserie] SQL: Parameter von Befehlen angucken (und anwenden).

Warum machst du...


dr.GetOrdinal("part_nr_TWA");
dr[b];

...und nicht...


dr["part_nr_TWA"];

Ansonsten:
Wie groß ist der Inhalt von part_nr_twa?
Ist die Zuweisung an r[a] langsam oder das Auslesen aus `dr**[/tt]?
Wahrscheinlich läuft es auch auf ein N+1-Problem hinaus.

22.01.2013 - 16:11 Uhr

Mir scheint, mein Beitrag wurde überlesen...
Ich schrieb bereits, wo die Benutzereinstellungen gespeichert werden. Und wenn man sich das mal genau anguckt, sieht man auch den Abschnitt "Anwendungspfadhash":
C:\Users\<Benutzer>\AppData\Local\<Firmenname>\<Anwendungsname>.exe_Url_<Anwendungspfadhash>\<Version>\user.config
Siehe auch Client Settings FAQ

Also: Ja, wenn man die Anwendung verschiebt, wird ein neuer Ordner für eine user.config mit einem anderen Pfad-Hash angelegt. Anderer Pfad -> andere Anwendung -> andere Einstellungen.

Der Grund ist folgender:

Zitat von: Client Settings FAQ - Cool Client Stuff - Site Home - MSDN Blogs
<Profile Directory>&lt;Company Name>&lt;App Name><Evidence Type><Evidence Hash>&lt;Version>\user.config
[...]
<Evidence Type> and <Evidence Hash> - information derived from the app domain evidence to provide proper app domain and assembly isolation.

Das ist also gewünschtes Verhalten, um Anwendungen sauber voneinander trennen zu können.
Wenn du das ändern möchtest, musst du wahrscheinlich den SettingsProvider austauschen.

22.01.2013 - 14:52 Uhr

Einstellungswerte werden in zwei Bereiche eingeteilt: "Anwendung" und "Benutzer". Die Anwendungseinstellungen (und die Default-Werte für die Benutzereinstellungen) stehen in der *.exe.config. Speichern bzw. Ändern kannst du nur Einstellungen aus dem Bereich "Benutzer" - diese wiederum werden in den lokalen Anwendungsdateien gespeichert (C:\Users&lt;Benutzer>\AppData\Local&lt;Firmenname>&lt;Anwendungsname>.exe_Url_<Anwendungspfadhash>&lt;Version>\user.config).

Wenn du also deine Datei verschiebst (umbenennst, neue Version verpasst), wird eine neues Benutzereinstellungsdatei erstellt und die alten gespeicherten Daten sind nicht mehr verfügbar.

21.01.2013 - 14:46 Uhr

Das ich mit ReadLine und Split arbeiten muss, habe ich schon verstanden.

Nö, musst du nicht. Siehe z.B. [Artikel] Regex-Tutorial

18.01.2013 - 14:15 Uhr

(?<![.,])\d{3}

Das Forum ist aber kein Patterngenerator! Guck dir das [Artikel] Regex-Tutorial an, lad dir das Regex-Lab und probiere selbst.

18.01.2013 - 10:38 Uhr

Das nächste Treffen findet am Donnerstag, den 14.02.2013, ab 18.30 Uhr statt.


[b]Windows Phone 8[/b]

Windows Phone 8 gehört zu den am schnellsten wachsenden Plattformen im mobilen Umfeld. Erleben Sie live anhand der offiziellen BASTA!-Konferenz-App, welche Stationen eine App während ihrer Entstehung durchläuft. In dieser Session wird Matthias Fischer eine Einführung in die App-Entwicklung auf der Windows-Phone-Plattform geben, von der Planung bis zur Veröffentlichung.

Im zweiten Teil dieser codelastigen Session erfahren Sie mehr über die Neuerungen in Windows Phone 8. Erleben Sie die erweiterten Funktionen der Verschiedene APIs von Windows Phone 8 kommen im Einsatz.

Referent: [i]Matthias Fischer[/i]

Eine Anmeldung für die Brötchen- und Getränke-Planung ist unbedingt erforderlich. Die Anzahl der Teilnehmer ist auf 25 Personen begrenzt. Auf der Anmeldeseite wird auch angezeigt, wie viele Plätze noch frei sind.

Die Kosten des Abends werden wir mit voraussichtlich 3,- EUR wie gewöhnlich auf die Teilnehmer umlegen (Achtung: Außer Getränken gibt es keine Verpflegung).

Veranstaltungsort:
BBT Group GmbH, Bernburger Str. 30/31, 10963 Berlin

www.dotnetbb.de

18.01.2013 - 10:33 Uhr

In der Liste der Beispiele würde ich noch folgendes ergänzen:

StackExchange (StackOverflow, etc): C#, ASP.NET MVC/Razor, SQL Server, LINQ2SQL
Siehe auch High Scalability - Stack Overflow Architecture

16.01.2013 - 13:45 Uhr

Was für Erweiterungen sind installiert/aktiviert?

10.01.2013 - 15:38 Uhr

Emails verschicken ist total simpel - siehe MailMessage-Klasse.

Eine weitere Möglichkeit zur Benachrichtigung wäre ein RSS-Feed - im Prinzip wie Email, nur "andersherum" (pull statt push - da spart man sich dann auch die Empfänger der Mails). Haben wir bei bestimmten automatisierten Vorgängen im Einsatz. Ist auch relativ unkompliziert zu implementieren.

10.01.2013 - 15:19 Uhr

Naja, schwer zu sagen ohne viel mehr Informationen.
Guck dir mal [Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden an.

Hast du nur ein einziges Projekt oder mehrere? Steht der Konfiguration in der wirklich benutzten app.config?

10.01.2013 - 14:39 Uhr

Warum es nicht geht: So sucht Common Language Runtime nach Assemblys

Ansonsten gibt es im Forum schon mehrere Beiträge zum Thema. Stichworte sind z.B. <probing>-Element oder AppDomain.AssemblyResolve-Ereignis

09.01.2013 - 11:16 Uhr

Siehe [FAQ] Besonderheiten der String-Klasse (immutabler Referenztyp mit Wertsemantik)

Du musst folgendes machen: ZeilenNr = ZeilenNr.Replace(")", "")
Die String-Klasse is immutable - die Replace-Methode ändert also nichts am Wert der (ursprünglichen) Variable "ZeilenNr". Stattdessen gibt sie einen neuen Wert zurück, den du der Variable zuweisen musst.

08.01.2013 - 11:47 Uhr

Benutze besser einen Timer, statt Thread.Sleep.

Da es sich hier um einen Windows-Dienst handelt, ist das vorgehen schon richtig so. Mann muss aus dem OnStart raus, aber (mind.) einen Thread am Laufen haben, damit der Dienst nicht ausgeht.

Sind die 6 Stunden reproduzierbar? Irgendwelche Timeouts (Sessions, Transaktionen, etc.)?

07.01.2013 - 10:18 Uhr

Oder du nimmst einen anderen Serializer. Der JSON-Serializer kommt besser mit Interfaces klar.

04.01.2013 - 13:33 Uhr

Nimm dir einfach die UpDownBase-Klasse und implementiere dir die Zeitanzeige selbst.


public class TimeSpanUpDown : UpDownBase
{
	public TimeSpan Value { get; set; }
		
	public override void UpButton()
	{
		this.Value = this.Value.Add(TimeSpan.FromMinutes(1));
		this.UpdateEditText();
	}

	public override void DownButton()
	{
		this.Value = this.Value.Add(TimeSpan.FromMinutes(-1));
		this.UpdateEditText();
	}

	protected override void UpdateEditText()
	{
		this.Text = this.Value.ToString(@"hh\:mm");
	}
}

04.01.2013 - 13:25 Uhr

VS.NET schaut am Anfang ob irgendwelche Updates für VS.NET oder alle installierten Extensions vorhanden sind.

Interessant. Mit deaktivierten automatischen Suchen nach Updates lädt VS etwas schneller.

03.01.2013 - 16:39 Uhr

Und genau das versuche ich nun zu beheben, indem ich Google einen 404er senden will, wenn die Seite "nicht mehr existiert"

Wäre da ein 410 nicht besser? Also statt mit "niemals davon gehört" lieber mit "nicht länger mehr hier vorhanden'" zu antworten!?

03.01.2013 - 15:08 Uhr

neu in .NET 4.5 ist die
>
-Klasse.

Nö, die gibt's schon seit 2.0.

03.01.2013 - 10:11 Uhr

Was für Erweiterungen hast du installiert?
Ich hab das Gefühl, dass das Laden vor dem letzten NuGet-Update schneller ging.

03.01.2013 - 09:41 Uhr

Das ist aber falsch. Die Logik steckt bei MVC im Controller und nicht in den Modellen.

Ui, mit solchen absoluten Aussagen wäre ich aber vorsichtig. Alle Allaussagen sind falsch. 😉
Denn der Controller soll eigentlich recht wenig Logik enthalten und nur die View-Aktionen entsprechend auf das Model abbilden. Die konkrete Geschäftslogik steckt in den Modellen - da hat der Controller nichts mit zu tun.

30.12.2012 - 15:27 Uhr

OpenSource bedeutet nicht zwingend kostenlos. Willst du zwingend eine quelloffene Datenbank oder nur eine freie/kostenlose?

Siehe z.B. Empfehlungen für SQL-Datenbank gesucht

30.12.2012 - 15:22 Uhr

Warum kann zB. ein byte[] nicht als object[] betrachtet werden?

Gern gemachter Fehler - du denkst da nur in eine Richtung. Wenn man das "Rausholen" von Elementen aus dem Array betrachtet, dann würde es klappen - ein Byte ist auch ein Object also könnte man für diese Richtung ein Byte[] auch als Object[] betrachten. Allerdings denkt man oft nicht auch gleichzeitig an das "Reinmachen": In ein Object-Array müsstest du beliebige Objekte reintun können (z.B. ein string, int, etc.) - geht aber nicht, da du ja eigentlich ein Byte-Array hast.
Siehe auch Kovarianz und Kontravarianz.

27.12.2012 - 21:55 Uhr

JQuery ist nicht so einfach zu verstehen wenn man sich alleine schon den Aufbau ansieht, nach solchen Erklärungen suche ich selbst noch.

Guck mal da: Für Web-Entwickler: Free Tutorial: 30 Days to Learn jQuery / 30 Days to Learn HTML & CSS

27.12.2012 - 21:20 Uhr

ich bin gerade dabei, eine XML Datei auszulesen und die enthaltenene Werte in ein DTO zu speichern. [...]
Kann mir evtl. jemand auch zugleich eine gute Möglichkeit empfehlen, eine XML Datei auszulesen?

Kennst du den XmlSerializer?

23.12.2012 - 14:35 Uhr

Wie kann ich am einfachsten meine DateTime Objekte auf den selben tag, aber die Stunden 0 zurücksetzen?

Indem du einfach die DateTime.Date-Eigenschaft verwendest.

Wenn das nicht hilft, musst du in die Erstellung der Ausdrucksbaumstruktur für den LINQ-Provider eingreifen. Z.B. mittels LINQKit (siehe auch Berechnete Properties im EntityFramework).

20.12.2012 - 16:07 Uhr

Und auch vielen Dank für die wirklich ordentlich ausgearbeitete Fragestellung!
So wünscht man sich das. Muss man ja auch mal loben. 😉

20.12.2012 - 15:46 Uhr

Es gibt - wie du ja schon probiert hast - vier Kombinationen, wo/wie du die DbProviderFactory hinzufügen kannst:1.in machine.config, nicht in app.config -> funktioniert 1.nicht in machine.config, in app.config -> funktioniert 1.nicht in machine.config, nicht in app.config -> nicht gefunden 1.in machine.config, in app.config -> bereits vorhanden bzw. funktioniert

Bei 4. kommt der "bereits vorhanden"-Fehler, weil du ja schon in der machine.config ein add gemacht hast und in der app.config noch einmal ein add mit dem gleichen Key.

Der Trick ist nun, dass du in der app.config vor dem add noch ein remove für den Key machen musst:


<system.data>
	<DbProviderFactories>
		<remove invariant="FirebirdSql.Data.FirebirdClient" />
		<add invariant="FirebirdSql.Data.FirebirdClient" name="FirebirdClient Data Provider" description="..." type="..." />
	</DbProviderFactories>
</system.data>

19.12.2012 - 09:01 Uhr

Und nicht vergessen auf Nullable zu achten.

18.12.2012 - 16:04 Uhr

Hast du die Assemblies als Datei oder als Projekt referenziert? Steht "lokale Kopie" auf true?

18.12.2012 - 10:18 Uhr

Gehostet oder zum selbst auf einem Server installieren?

16.12.2012 - 13:20 Uhr

Hast du dir mal den XmlSerializer angeguckt? Damit kannst du dir die XML-Datei erstmal in POCOs deserialisieren lassen (kannst dir also das LINQ2XML-Zeugs sparen) und kannst dann bequem mit diesen weiterarbeiten.

EDIT: Z.B. folgendermaßen:


XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<BackupXMLSet>),new XmlRootAttribute("BackupSets"));
StringReader stringReader = new StringReader(xml);
List<BackupXMLSet> backupSets = (List<BackupXMLSet>)xmlSerializer.Deserialize(stringReader);

[...]

public class BackupXMLSet
{
	[XmlAttribute("id")]
	public string ID { get; set; }

	[XmlElement("BackupType")]
	public string Type { get; set; }

	[XmlElement("BackupLastDate")]
	public DateTime LastDate { get; set; }

	[XmlArray("BackupFolderList")]
	[XmlArrayItem("Folder")]
	public BackupFolder[] BackupFolders { get; set; }

	public class BackupFolder
	{
		[XmlAttribute("id")]
		public string ID { get; set; }

		[XmlText]
		public string Folder { get; set; }
	}
}
12.12.2012 - 09:28 Uhr

Wer kann helfen und hat einen Tip warum bei einem erfolgreichem Login bie c# die Loginseite zurückgeliefert wird und bei VB die richtige Seite.

Weil in deinem C#-Code die entsprechende Zeile für _WebRequest.CookieContainer = _WebCookieCont fehlt.

11.12.2012 - 11:27 Uhr

[W]enn ich mein array mit der größe 1000 deklariere[...]

Mit Int32.MaxValue sollte es beim Response-Array keine Probleme geben.

Read Binary liest die gewünschte Anzahl von Bytes aus einer zuvor selektierten Datei. Die Anzahl der Datenbytes, die von diesem Kommando zurückgeliefert werden soll, wird in dem Parameter Ne angegeben und muss aus dem Intervall [1,65535] oder WildcardShort ['00'] bzw. WildcardExtended ['0000'] stammen.** Bei der Verwendung von WildCard-Werten werden maximal 256 bzw. 65536 Bytes zurückgeliefert, sofern das Ende der Daten noch nicht erreicht ist.**

Zudem ist mir aufgefallen, dass du als viertes Byte im Command eine 1 übergibst. Oben hast du dafür eine 0 angegeben.

Die ersten beiden Bytes also in dem response: response(0) + response(1).

Nein! Eben nicht! Deswegen der Tipp mit dem binären Zahlensystem. Noch ein Tipp: int length = (bytes[0]<<8) + bytes[1];

Danach werden die Bytes in Chars umkonventiert.

Das sollst du eben nicht machen. Du musst den GzipStream noch in einen StreamReader mit entsprechendem ISO-8859-15-Encoding geben.

EDIT: Ablauf:1.Ein ausreichend großes Response-Array erstellen (mach ruhig erstmal mit der Länge 65536). 1.Mittels CT_Data das Response-Array füllen lassen. 1.Das Response-Array entsprechend der von CT_Data zurückgegebenen Länge kürzen (also umkopieren). 1.Die beiden Statusbytes am Ende prüfen (sollte 9000 sein). 1.Die ersten beiden Bytes in ein Int16 umwandeln. Das ist die tatsächliche Länge der PD. 1.Aus dem Response-Array den Bereich von 2 mit der PD-Länge rauskopieren.* 1.Dieses Array GZIP-Dekomprimieren. 1.Das Ergebnis ISO-8859-15-Dekodieren.

*Achtung: Mit der Länge x, nicht bis zur Position x!

11.12.2012 - 10:33 Uhr

Reaktion auf den gesendeten Quellcode.

Was mir als erstes auffällt: Du deklarierst für die Antwort ein Array mit der Länge 300. Wie ich schon geschrieben habe, musst du das Response-Array länger machen. Die CTAPI bekommt das Array als Referenz und schreibt da direkt rein. Wenn du das nicht größer machst, kann dir der Kartenleser auch nicht mehr Daten zurückgeben.
Alternativ kannst du beim Statuscode 6200 gucken, welche Länge du tatsächlich brauchst, und musst dann entsprechend den CT_DATA-Aufruf nochmal (mit einem entsprechend großem Response-Array) durchführen.

Zweitens: Die Berechnung der Länge der tatsächlichen PD sieht sehr sehr obskur aus. Bei PD steht in den ersten beiden Bytes die Länge. Danach folgen dann die Nutzdaten.
Du solltest dir da dringend noch einmal die Doku genau durchlesen, wie die Länge codiert ist. Tipp: Binäres Zahlensystem beachten.

Drittens: Um aus den (entzippten) Byte-Array Text zu machen, kannst du nicht einfach alle Bytes durchlaufen und die in Chars konvertieren. Benutze dafür einen StreamReader mit entsprechendem Encoding.

10.12.2012 - 12:52 Uhr

Guck dir mal deinen Aufruf von CT_data(ctn,ref dad,ref sad,lenc,ref command,ref ulenr,ref response) an. Du erstellst das Response-Array ja irgendwo selbst und gibst der Methode nur eine Referenz darauf mit. Einfach ein größeres Bytearray anlegen.

Ansonsten einfach nochmal den Abschnitt "5.4.2 Read Binary" in der Doku genau lesen.

09.12.2012 - 18:13 Uhr

hab jetzt AnkhSVN installiert. Hat sich binnen weniger Minuten fehlerfrei ins Studio integriert.

Als VS-Integration kann ich VisualSVN empfehlen. Ist da sehr leichtgewichtig und benutzt als UI TortoiseSVN (finde ich viel besser als Ankh, da man ein einheitliches UI hat).
Ist seit der aktuellen Version auch kostenlos (sofern der Rechner kein AD-Mitglied ist).

06.12.2012 - 16:41 Uhr

Wie erkennt man denn den eigentlichen Datenbereich?

Hab ich doch schon geschrieben. Musst du nur aufmerksam lesen 😉
In der Doku steht unter 4.2.3 "Datei EF.PD" und 4.2.4 "Datei EF.VD", wie jeweils das Byte-Array aufgebaut ist.
Bei den PD stehen vorn dran zwei Bytes mit der eigentlichen Länge; bei den VD acht Bytes mit vier Offset-Angaben.