Laden...
G
Grumbler85 myCSharp.de - Member
Entwickler Rheingau Taunus Dabei seit 13.05.2008 538 Beiträge
Benutzerbeschreibung

Forenbeiträge von Grumbler85 Ingesamt 538 Beiträge

10.02.2012 - 11:38 Uhr

Ich habe es gelöst indem ich mich mit ILSpy durch die Klassen in der .NET gehangelt habe - und zwar ausgehend von System.Diagnostics.EventLog.Message
Dabei hab ich alles "internal" kopiert bis ich alle Teile, die man benötigt zusammen hatte.

Im Endeffekt läufts über die kernel32.dll - leider weiß ich noch nicht, wie und ob ich eine Sprache auswählen kann, denn ab Vista sind die Dateien alle "mui".

09.02.2012 - 17:55 Uhr

Es besteht durchaus die Möglichkeit, dass der Dienst nicht in der InstallPhase sondern in der Committ-Phase im SC eingetragen wird, aber das weiß ich leider nicht auf anhieb - ist länger her, dass ich mich damit befasst habe.

Ansonsten: Die Deinstallation des Dienstes könnte scheitern, weil der Dienst läuft - vielleicht hilft schon stoppen im deinstaller?

Du wirst mal ein wenig experimentieren müssen 😉

09.02.2012 - 17:21 Uhr

Du kannst eine Anpassung im Installer machen, so dass er überprüft ob dein Dienst schon vorhanden ist, und wen ja lässt du ihn einfach nicht auf base.OnInstall() los, sondern machst einfach nichts.

09.02.2012 - 15:24 Uhr

Schau mal in das Output-Window, ob er wirklich einen Rebuild macht, oder ob es einfach nur dauert, bis der Debugger an deinen Assemblies hängt.

07.02.2012 - 11:13 Uhr

Hallo allerseits,

ich versuche aktuell aus den EventLogs von Windows, die Originalen Texte auszulesen - also diese, die noch nicht mit dem Ersetzungsstring erschlagen wurden.
Ich habe mittlerweile herausgefunden, dass die DLLs dazu in der Registry abgelegt sind - aber eventuell mehrere und irgendwie fehlen mir informationen, wie ich die Einträge zuordnen kann.

Es gibt die CategoryMessageFile(s), die EventMessageFile(s) und die ParameterMessageFile(s).
Wie spielen diese zusammen? Wie lese ich sie aus?

Also wenn jemand Informationen hat, wie man damit umgeht, oder eine Library (nicht zwingend kostenfrei) kennt, die diese Daten lesen kann, wäre ich sehr dankbar 😃

06.02.2012 - 14:24 Uhr

Hallo,

vielleicht hilft dir das hier weiter:
Specifying the Z-Order of Sprites

26.01.2012 - 18:14 Uhr

Aus Gründen, die ich nicht verstehe funktioniert es nun ...

Was hab ich gemacht?
Das Execute aus meinem BaseController entfernt (wobei das nicht viel getan hat außer base.Execute() aufzurufen)

Außerdem habe ich auf die HandleErrorAttributes verzichtet und stattdessen globale Filter verwendet - pro Errortyp einen.

Die Views selbst hatten scheinbar keine Fehler.

Danke für die Hilfe

26.01.2012 - 11:40 Uhr

Hallo,

also - ich nutze bereits mehrere HandleError Attribute für Verschiedene Fehler-Supertypen, die ich in meiner Applikation definiert habe.
Das Problem ist nicht, dass ich keiner Anleitung folgen könnte oder nicht verstehe was passieren sollte, sondern vielmehr, dass es schlicht und ergreifend nciht funktioniert.

Mein customError-Mode steht auf On (auch wenn mir RemoteOnly für den laufenden Betrieb besser gefällt), die HandleError-Attribute sind vorhanden (verschiedene für unterschiedliche Fehler). Die Error-Views sind ebenfalls vorhanden.
Nichtsdestotrotz sehe ich den YSOD.

Deshalb nochmal die Frage: gibt es Fallstricke, die das HandleError unterbinden, wie Beispielsweise bestimmte Exceptions (Unauthorized zum Beispiel wird ja nicht durch HandleError erfasst)?

25.01.2012 - 16:04 Uhr

Hallo allerseits,

ich versuche grade (erfolglos) das HandleError Attribut in einer MVC3 Webseite zu verwenden.
Es ist sowohl in der Global.asax als Globaler Filter eingetragen als auch in meiner Basisklasse und an meinen sonstigen Klassen.
Wenn ich es richtig interprätiert habe, so sollte das Attribut ja nun bei einem Fehler dafür sorgen, das der Benutzer nicht den "Yellow Screen of Death" bekommt, sondern eine von mir in /Views/Shared/Error.cshtml definierte Seite zu sehen bekommt.

Mein Problem aber - ich bekomme die "Stellen sie die CustomErrors auf OFF"-Seite angezeigt. Muss ich beim verwenden von Custom Errors irgendwas besonderes Beachten? Dürfen nur bestimmte ResponseCodes auftreten?

Aktuell fange ich einfach da wo ich die Fehlerseite möchte bestimmte Exceptions nicht ab - ist das so gedacht?

Danke für Input!
TG

16.01.2012 - 08:57 Uhr

Ich kenne sharppdf nicht, aber ich würde mal raten, dass du die Hintergrundfarbe eventuell über einen Stil festlegen musst anstatt direkt als bgColor. - Sofern sharppdf styles hat.

11.01.2012 - 09:11 Uhr

Also ich habe das auch verwendet und es arbeitet wie erwartet.

Was genau funktioniert denn nicht?
Wird der Service gar nicht installiert?
Mit falschem Benutzer?
Oder was oder wie?

09.01.2012 - 11:21 Uhr

Diese Pfade mit den * drin bedeuten soviel wie "suche in allen Assemblies die meinem Projekt angehören" - was aber dazu führen kann, dass sie die Resource mehrfach finden.
Sofern du also die CSDL Dateien in einer Resource hast kannst du sie mit res://<AssemblyName>/<Model>.csdl ansprechen.

Wie genau sie heißt findest du zum Beispiel mit dem ILSpy heraus.

Mehr Informationen dazu auch hier:MetadataException

29.12.2011 - 10:08 Uhr

Du musst wissen, wie es serialisiert wurde - oder erraten.
Wenn du also weißt was du suchst, kannst du enstprechend deserialisieren.

Den stand eines Spiels zum Beispiel kannst du eventuell auch erraten, indem du bestimmte Zustände speicherst und dann vergleichst.
Zum Beispiel hast du 1000 Geld und speicherst, dann speicherst du nochmal mit 1001 Geld und schaust, was sich in der Datei verändert hat. Damit kannst du per Ausschlussverfahren feststellen, wie das alles serialisiert wurde.

28.12.2011 - 14:02 Uhr

Ich hab noch nie damit gearbeitet, aber bist du sicher, dass der "Terminator" für Feld 2 stimmt?
Vielleicht kannst du auch sowas wie source=NULL für die ID Spalte angeben?

21.12.2011 - 10:38 Uhr

Da passt was nicht zusammen ...
Wenn ein Gerät den ComPort wechselt, wird es entweder (wenn es USB ist) neu installiert oder es wird physisch umgesteckt.
Die Nummer des ComPorts (grade bei seriellen Schnittstellen) korreliert nämlich direkt mit der Hardware.

Allerdings könntest du alle ComPorts abfragen mit einem bekannten Commando (etwas TEST) und schauen wo das Gerät antwortet.

19.12.2011 - 10:14 Uhr

Insbesonere ist das "nach dem Anmelden" zu spät, denn Kinder sind erfinderisch und könnten durchaus ALT+F4 drücken (oder den Prozess killen).

Liefert den Eltern leiber eine Anleitung, wie sie das mit Windows-Boardmitteln verwirklichen können - damit ist den Leuten sicherlich mehr geholfen (und es ist deutlich schwieriger zu umgehen)

15.12.2011 - 15:10 Uhr

Hallo,

zunächst mal WPF und Webservice haben nichts miteinander zu tun, denn WPF ist die Windows **Presentation **Foundation - die macht Darstellung.
WCF hingegen (Windows **Communication **Foundation) macht tatsächlich (u.A.) auch Netzwerk.

Wie wird denn deine Tabelle dargestellt?
Als DataGrid? Dann zeig halt nur 3 Spalten oder wieviele auch immer du benötigst an. Verlass dich halt eben einfach nicht auf den automatisch generierten Kram.

Ansonsten 🛈 und 📗 können dir auch weiterhelfen, wenn du keine Erfahrung hast.

09.12.2011 - 09:23 Uhr

Das ist in der Tat alles etwas merkwürdig, aber sicher gibt es eine ganz einfache Lösung dafür.

Versuche dir für Debuggingzwecke ein Miniprojekt zu erstellen, das nichts anderes tut, als den Server anzufragen und auf die Antwort zu warten.
Nimm Fiddler (oder falls du gut damit umgehen kannst) NetMon und analysiere die Anfragen (sie sollten weitgehend identisch sein). Im Zweifelsfall bilde die Anfrage exakt in C# nach (nur um sicher zu gehen).

Außerdem versuche mal IPv6 abzuschalten - eventuell macht das ärger (zumindest hab ich das schon mal gesehen).

Du kannst auch die Anfragen aus .NET und deinem Browser direkt mit Fiddler wiederholen - musst also nicht zwingen diese Programme nutzen.

Wenn das eine Möglichkeit für dich ist: Versuche .NET 4

08.12.2011 - 11:43 Uhr

Wenn du im Fiddler die beiden Anfragen hast - kannst du sie direkt miteinander vergleichen - dann solltest du sofort sehen, wo der Unterschied liegt.
Achte auch auf Header-Daten. Und prüfe die URL lieber nochmal ganz sorgfältig.

08.12.2011 - 09:27 Uhr

Hallo,

ich habe mich mal damit beschäftigt ICQ anzusprechen, musste aber leider zu dem Schluss kommen, dass es keine API gibt, die solche funktionen nach außen publiziert.

Es gibt bei AOL eine API für die xTraz, aber die ist nur für Web-Inhalte.

Mit den anderen Clienten (Pidgin, Miranada, [Trillian]) hättest du es sicherlich einfacher ...

07.12.2011 - 13:45 Uhr

Was passiert denn, wenn du einen anderen Namespace wählst?
Sowas wie expample.org?

05.12.2011 - 09:49 Uhr

Mit der Tatsache, dass du aus einem x86-Programm auch x64-Programme überwachen willst schießt du dir meines Erachtens nach doch ziemlich ins Knie, denn abgesehen davon, dass du die ProcessInfo nicht direkt benutzen kannst, hast du auch auf bestimmte Ordner keinen direkten Zugriff, denn zum Beispiel "system32" landet aus einem x86 Prozess im Ordner "sysWOW64".
Einige Umgebungsvariablen sind auch anders - Microsoft war hier sehr bemüht transparent (im sinne von unsichtbar) die Kompatibilität zu x86 zu erhalten (leider - wie ich anmerken möchte).

01.12.2011 - 13:36 Uhr

Also - das Build-Ziel von Visual Studio 2008 sollte bei einer WPF Anwendung bereits eine lauffähige Applikation sein.
Die Dateien die du brauchst sollten dann alle in /bin/[Debug|Release]/ liegen.
Und vor allem - was im Debugger läuft sollte auf dem gleichen PC auch ohne Debugger lauffähig sein.

29.11.2011 - 15:22 Uhr

Lies alle Wörter in ein Array ein und nutze einen Zugriff per Random()

28.11.2011 - 17:21 Uhr

Hm - die ServiceBehaviour könnte tatsächlich einfluss darauf haben ..
Aktuell habe ich keine gesetzt. Ich untersuche morgen mal, ob ich damit etwas erreichen kann.

28.11.2011 - 16:21 Uhr

Hallo,

ich habe einen WCF Service im IIS laufen, dort folgendes Konstrukt:


[PrincipalPermission(SecurityAction.Demand, Role = "group")]
    public class ABCService : ServiceBase, IABCService
    {
        public ABCService()
        {
            AppDomain.CurrentDomain
                    .SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        }

Die PrincipalPermission wirkt also auf die Klasse - dummerweise auch auf den Konstruktor, was ich eigentlich nicht möchte, denn der Service soll die Klasse ja ausführen können. CurrentPrincipal ist zum Zeitpunkt des Konstruktors allerdings Nicht authentifiziert.
Workaround - alle Methoden mit dem PrincipalPermissionAttribute kennzeichnen - das ist aber keine ganz so schöne lösung, wie ich finde.

Kennt dazu jemand eine bessere Idee?

28.11.2011 - 13:50 Uhr

Hallo,

dein Problem ist das Arbeitsverzeichnis, welches nicht dem entspricht was du erwartest. In den FAQs gibt's glaube ich etwas dazu.

Environment.SetWorkingDirectory() könnte dir auch nützlich sein.

25.11.2011 - 11:50 Uhr

Ich habe keine Idee, was du vor hast und was genau deine Frage ist.

Dateien erzeugen? Multiselekt? Gruppen von Files?

24.11.2011 - 11:53 Uhr

Ich glaube "Label" statt Literal könnte dich schon "erlösen".

Im übrigen ist öäü encodiert gar nicht weiter schlimm - würde ich mich nicht mit aufhalten

24.11.2011 - 11:14 Uhr

Je nachdem ob du einen Debugger dran hängen hast oder nicht und ob du in der Debug-Version oder Release-Version kompiliert hast kann das schon ausschlaggebend sein.

24.11.2011 - 09:47 Uhr

Es hindert dich niemand daran folgendes zu tun:

(PSEUDOCODE)


public Constructor() {
  WENN(DesignMode) {
    WHILE(Textbox.Text.Length < MaxLength)
       TextBox.Text += 'E'
  }
}

24.11.2011 - 09:44 Uhr

Ich glaube es ist untypisch, dass bei der Installation dort schon ein Ordner erzeugt wird, da derjenige der das installiert (Admin) und der Benutzer durchaus verschiedene Personen sein können.

Dein Programm sollte so einen Ordner also beim Starten der Anwendung erzeugen, falls nötig (der Benutzer löscht sowas auch schon mal und dann musst du ihn sowieso generieren).

Den Pfad bekommst du über die Environment.SpecialFolders

24.11.2011 - 09:40 Uhr

Wenn du das auf einer Datenbank per UPDATE ausführen willst, dann sind die Zyklen ein ernstes Problem, dass du durch eine (beliebige) Sortierung nicht lösen kannst.

Was aber funktionieren wird ist ein JOIN Der Tabelle mit einer aus den Übersetzungen erzeugten Tabelle in der FROM-Clause des UPDATE Befehls.

23.11.2011 - 17:31 Uhr

Ich dachte du willst so etwas hier machen:

Liste1 (Quelle): 1, 3, 4, 5, 22, 12
Liste2 (Übersetzungen): 1 -> 11, 3 -> 13, 4 ->14, 5 -> 22, 22->12, 12 -> 13

Liste3 (Übersetzungen auf Quelle angewendet):
11, 13, 14, 22, 12, 13

Wenn das der Fall ist, kannst du die Queue benutzen, aber nicht für die Übersetzungen, sondern für die Quelle - die Reihenfolge der Übersetzung ist in dem Fall dann unerheblich.

23.11.2011 - 17:04 Uhr

"My Documents" ist nicht der "Anwendungsdaten des Benutzers"-Ordner der leigt irgendwo in Users/<username>/AppData/

23.11.2011 - 17:03 Uhr

Pixelgenaues-Design ist keine gute Idee, da der Benutzer durchaus eine andere DPI-Zahl am Monitor benutzen kann - und das macht dann alles kaputt ...

Nichsdestotrotz kannst du einfach Constructor die Eigenschaft IsDesignMode abfragen und dann Werte in die Textboxes schreiben.

23.11.2011 - 16:54 Uhr

Es kann nicht "kollidieren", da du es nach der Verarbeitung nicht mehr in die Queue steckst ...

Im übrigen hast du eine Endlosschleife, wenn 22 -> 5 und 5 -> 22 in der Übersetzungsliste stehen und sowohl 22 als auch 5 in deiner Queue sind.

23.11.2011 - 16:52 Uhr

Was hier vielleicht klappen kann ist ein Join der Tabelle mit sich selbst nach folgendem Muster:

SELECT T1.Datum, T1.aktiv, T2.aktiv
FROM Table T1 
JOIN Table T2 
ON Datum = Datum + 1h
WHERE T1.aktiv + T2.aktiv != 1
23.11.2011 - 16:45 Uhr

Durch die Queue wird aber deine Überprüfungslogik, ob du es machen darfst überflüssig ...
Solange es drin ist, darfst du es einfach übersetzen.

23.11.2011 - 15:36 Uhr

Ähm - doch doch machen sollst du sie schon, aber du nimmst sie aus einer Liste heraus, übersetzt sie und legst sie danach in der "schon abgearbeitet" Liste ab, etwa:


public List<WhateverObject> TranslateAll() {
  Queue<WhateverObject> originals;
  List<WhateverObject> results;

  //Originials füllen

  while(originals.Size > 0)
  {
    var current = originals.Pop();
    TranslateObject(current);
    results.Add(current);
  }

  return results;
}

23.11.2011 - 15:32 Uhr

Ich vermute, du kannst das erreichen indem du die ProcessStartInfo mit einer solchen URL fütterst und ShellExecute auf true stellst.

23.11.2011 - 15:13 Uhr

Wenn ich das richtig verstehe willst du keine Doppelübersetzung.

5 -> 55: Okay
22 -> 5: Okay

22 -> 5 -> 55: BadCase

Abgessehen von der Topologischen Sortierung kannst du auch einfach zwei Listen machen:

Liste1: Nicht übersetzte Objekte (Queue erscheint geeignet, weil es Pop() gibt)
Liste2: Übersetze Objekte

Damit vermeidest du die doppelte Übersetzung.

23.11.2011 - 15:08 Uhr

Wenn ich nur mal rate, würde ich sagen, du machst das was wir da sehen in AddUser (das bringt so nix, denn du machst es auf eine NEUEN Form1, die du niemals anzeigst)

Richtig wäre also in Form1 sowas wie:


//..
Form AddUser = new AddUser();
AddUser.FormClosed += AddUserFormClosed;
AddUser.Show();
//..

und AddUserFormClosed (ebenfalls in Form1) etwa so:


private void AddUserFormClosed(object sender, FormClosedEventArgs args) {
  FillTree();
}

23.11.2011 - 14:56 Uhr

Wenn du uns zeigst, wie du das Form_Closed Event abbonierst, können wir dir bestimmt weiterhelfen.

23.11.2011 - 14:39 Uhr

Du musst eine Topologie (für eine topologische Sortierung) aufbauen.
Im Endeffekt musst du also die Übersetzungen als Pfade und die Werte als Knoten in einem Graph verstehen. Da dein Pfad (bzw. Graph) gerichtet ist, kannst du ein Ende und einen Anfang ausmachen.
Wenn du nun von Ende bis Anfang sortierst, dann hast du dein Ergebnis.

Dazu auch in der Wikipedia: Tolopogische Sortierung (EN)

23.11.2011 - 09:40 Uhr

Sharepoint kann sowas.
WebDAV nur beschränkt, denn WebDAV macht im Prinzip nen Download und nen Lock (bzw. Excel macht das so)

18.11.2011 - 15:26 Uhr

Ah - das ist auch ne gute Idee - ich habe eben versucht das ganze über ein CacheMiss Event zu regeln. Damit laufe ich aber gefahr, dass mehrere Instanzen die den Cache nutzen das Objekt versuchen zu setzen.

Vielen Dank

18.11.2011 - 15:05 Uhr

Vielleicht versteh ich was nicht, aber wenn ich ein Element hinzufügen will - dann habe ich es offensichtlich schon - warum sollte ich dann ein vorhandenes aus dem Cache nehmen?

Aber das hängt wohl indirekt mit dem Callback zusammen, den ich noch nicht gefunden habe ...