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

18.11.2011 - 14:52 Uhr

Hallo allerseits,

ich versuche grade ein paar Daten in einem System.Runtime.Caching.MemoryCache abzulegen.
Dabei bin ich über folgende Fragestellung gestolpert:

Wenn ich einen Cache-Miss habe - gibt es die Möglichkeit einen Callback (zu registrieren (beispielsweise einen der auf dem Key operiert), der automatisch aufgerufen wird, oder muss ich das "per Hand" machen?

Und welchen Sinn macht eigentlich die AddOrGetExisting-Funktion?

Gruß

18.11.2011 - 11:16 Uhr

Vielleicht kannst du ein OCR benutzen und auf den "eingemalten" Text loslassen.
Es gibt dort bestimmt verschiedene Schnittstellen dafür (die sind aber tendenziell nicht kostenfrei z.B. Abbyy)

17.11.2011 - 11:13 Uhr

Ein Einzelnes Enum wird deine Anforderung nicht erfüllen können, aber du kannst ein Enum definieren und anschließen (statische) Zugriffsklassen/Properties definieren, wie zum Beispiel:


namespace MimeType {
  enum MimeTypes {
    // ...
  }

  public static class Audio {
    public static MimeTypes MPEG { get { return MimeTypes.AudioMPEG; } }
    public static MimeTypes WAV { get { return MimeTypes.AudioWAV; } }
  }
}

Das bringt aber halt keinerlei Vorteil ...

17.11.2011 - 11:01 Uhr

Ich weiß nun nicht, ob der Client schon fest definiert ist, aber ich kann dir zumindest sagen, wie der SQL-Server das Regelt:

Und zwar hat jede Meldung eine Nummer - hinter den Nummern versteckt sich eine Einfacher Format-String und dann wird der Formatstring ausgewertet und die {0} werden ersetzt durch die übergebenen Parameter.

Genau das kannst du auch tun.
Übermittle die Nachricht als Formatstring (oder nur eine NAchrichtennummer) und den variablen Inhalt als array oder Liste.
Dann kannst du einfach die gesamte Meldung erzeugen und außerdem Feststellen, ob du die Meldung schon kennst und referenzieren kannst.

16.11.2011 - 12:09 Uhr

Das kannst du mit einem enstprechenden "ValueConverter" erreichen. Zum Beispiel kannst du den Status in eine Farbe übersetzen (sogar bidirektional)

Hier ein (sehr eingeschränktes, quick'n'dirty) Beispiel:


class StringEmptyToVisibilityConverter : System.Windows.Markup.MarkupExtension, IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            var s = value as string;
            return string.IsNullOrEmpty(s) ? Visibility.Collapsed : Visibility.Visible;
        }
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return null;
        }

        private static StringEmptyToVisibilityConverter _instance;
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            return _instance ?? (_instance = new StringEmptyToVisibilityConverter());
        }
    }

15.11.2011 - 11:12 Uhr

Wenn es deine eigene Assembly ist, kannst du ihr einen Starken Namen verpassen, indem du sie beim Kompilieren auch gleich Signierst - das kannst in den Projekteinstellungen setzen.
Dazu brauchst du eine Signatur, die du dir mit sn.exe erstellen kannst.

14.11.2011 - 14:30 Uhr

Ich glaube das Grid und eventuell die Liste von Infragristics können so etwas

14.11.2011 - 13:44 Uhr

Was wäre denn in so einem Fall die ToolStripDropDownCloseReason?

AppFocusChange?

07.11.2011 - 14:48 Uhr

401 heißt, dass du nicht Authentifiziert bist - dabei geht es nicht um das PHP Skript, sondern um den Aufrufenden Benutzer (also derjenige der den Webbrowser öffnet).
Der hat nämlich keinen Zugriff auf die Resource, die du dort haben willst.

Auch wenn ich mich wiederholen sollte:
Solche Fehler sieht man, wenn man den Fiddler oder ähnliche Tools verwendet.

04.11.2011 - 14:25 Uhr

Ich würde Vermuten, dass die Fehlermeldung genau zutrifft (nämlich falsches PW/Username)

Wie ermittelst du denn Passwort und Benutzername?

//Um die Frage genauer zu gestalten:
Nutzt du Kerberos/NTLM, Digest, Basic?
Ist das Hardcodiert?

04.11.2011 - 11:43 Uhr

Verarbeitet dein Netzwerk WOL überhaupt korrekt?

03.11.2011 - 15:43 Uhr
// ...
serviceClient.PingCompleted += PingCompleted;
serviceClient.PingAsync();
//...

void PingCompleted(object sender, PingCompletedEventArgs e) {
//...
}
03.11.2011 - 15:21 Uhr

Hallo Insider,

du benutzt einfach den ServiceClient (bzw. Proxy), und rufst die Asynchrone Methode auf. Vorher abonnierst du das completet event und dort erhälst du in den Event Arguments alle nötigen Informationen.

03.11.2011 - 12:16 Uhr

Danke für deine Antwort, aber das war es nicht - es hat eine Weile gedauert, bis ich begriffen habe, was da eigentlich passiert.

In PowerShell erzeugt

@{"SomeName"="SomeValue"}

eine HashTable (System.Collections.HashTable)

Wenn man genau das nach C# übersetzt, klappt es wie erwartet:


var myValue = new System.Collections.HashTable {{ "Add", smptAddress }};
command.parameters.Add("EmailAddresses", myValue);

02.11.2011 - 15:44 Uhr

Ich habe ein Problem beim übergeben eines Parameters via Powershell.
Es handelt sich um das Exchange2010 PS-Addin und ich versuche eine Emailadresse (Alias) hinzuzufügen:

using (var pipeline = ExchangeManagementShell.CreatePipeline())
            {
                var command = new Command("Set-Mailbox");
                command.Parameters.Add(IdentityParameter, username);
                //property = "EmailAddresses"
                //value = "@{Add='neuesAlias@example.com'}"
                command.Parameters.Add(property, value);

                pipeline.Commands.Add(command);

                pipeline.Invoke();
                if(pipeline.Error != null && pipeline.Error.Count > 0)
                    throw new ApplicationFailedException(pipeline.Error.Peek().ToString());
            }

Damit generiere ich folgende Fehlermeldung:> Fehlermeldung:

Cannot convert '@{Add='neuesAlias@example.com'}' to the type 'Microsoft.Exchange.Data.ProxyAddressCollection' required by parameter 'EmailAddresses'.
The address '@{Add='neuesAlias@example.com'}' is invalid: "@{Add='neuesAlias@example.com'}" isn't a valid SMTP address. The domain name can't contain spaces and it has to have a prefix and a suffix, such as example.com.

Der Befehl den ich ausführen möchte, sieht etwa so aus:

Set-Mailbox grumbler85 -EmailAddresses @{Add='neuesAlias@example.com'}
02.11.2011 - 14:41 Uhr

Zum Stream gehört eine Position. Das ist ein Zeiger, wo du grade im Stream liest. Wenn du stream.Read ausführst, wird AB dieser Position gelesen.
Mit Seek(0, Begin) kannst du diese Position auf 0 zurücksetzen und somit liest du wieder den ganzen Stream.
Ähnlich wie bei einer Kasette könnte man sagen (nur ohne umdrehen).

02.11.2011 - 14:27 Uhr

Eventuell musst du deinen Stream "zurückspulen"

stream.Seek(0, SeekOrigin.Begin);
02.11.2011 - 12:39 Uhr

Ich würde tippen der "offizielle Ansatz" heißt "reboot for Software-Maintenance"

Wie dem auch sei - falls du zwei Server hast, die in einem Load-Balance Verbund stehen kannst du auch einen entfernen, dort updaten, dann den LoadBalancer auf den Upgedatetn umschalten und selbiges das Update auf dem anderen Server machen - das wäre wohl ne ganz saubere lösung.

Oder du gibst den usern in zukunft einen Link und installierst in verschiedene Verzeichnisse, dann musst du nur den Link ändern (was leider bei den Freigabe-Leuten schwer wird).

Schnelle und recht saubere Lösung per Skript:
Alle Verbindungen schließen (also TS-Sitzungen und SMB-Sitzungen), Software austauschen, Verbindungen wieder erlauben. Das ganze ankündigen und Nachts laufen lassen.

28.10.2011 - 08:39 Uhr

Die Klasse "Ping" gibt es seit .NET 2.0 und ist in 4.0 immer noch vorhanden.
Du findest sie in intantiierst sie so:


var p = new System.Net.NetworkInformation.Ping();

Sofern du die System.dll referenzierst ist diese Klasse vorhanden und ohne System.dll wird's langweilig in .NET.

24.10.2011 - 16:20 Uhr

Wenn du den ReSharper hast hilft [Shift][Alt][L] und ansonsten kann der Blog helfen:

Find In Solution

Oder du nutzt DPack was (unter anderem) auch ein Rechtsklick auf den Tab anbietet zum finden der Datei

24.10.2011 - 15:41 Uhr

Ja - sorry - ich hab nicht präzise genug gelesen.
Aber Mr.Sparkle hat ja eine entsprechende Antwort da gelassen.

24.10.2011 - 14:07 Uhr

Einfach auf dem Dateitab im Editor mit der Maus stillhalten, dann bekommst du den ganzen Pfad angezeigt.

21.10.2011 - 16:09 Uhr

Generierst du auch irgendwo zufallswerte?
Wenn ja - wie initialisierst du die Random-Generatoren?
Eventuell hilft es, wenn du die Randoms threadübergreifend verwendest.

21.10.2011 - 16:04 Uhr

Oh - ich dachte du meinst SQL Express ...

21.10.2011 - 15:00 Uhr

Kurzer Hinweis noch:
Die Express Version kann mit dem Report-Server umgehen, aber dann musst du nicht Express, sonder Express with Advanced Services (oder wie auch immer das genau heißt) verwenden.

21.10.2011 - 14:56 Uhr

Was sagt denn ein Debugger?

21.10.2011 - 08:55 Uhr

Ich erkläre dir deinen Code:


//Erzeuge eine neue Instanz der Klasse Button und speichere in der Variable "copy"
Button copy = new Button();

//Nimm die Instanz aus den Drag Daten und speichere diese in der Variable "copy"
copy = (Button)e.Data.GetData(typeof(Button));

Merkst du etwas? 😉

20.10.2011 - 14:00 Uhr

Also Passwörter speichern ist selten eine gute Idee..
Wenn du es für unumgänglich hälst - dann schau dir eventuell mal die DataProtectionAPI an - die gibt's in Windows.

Wenn kein Windows-User zugriff hat auf ne Maschine - wer eigentlich dann?

20.10.2011 - 10:44 Uhr

Du hast zwei (drei) Möglichkeiten:

Entweder du schaffst einen Accout mit allen nötigen Rechten für alle Dienste und nutzt diesen dann (das ist durchaus sauber)

oder

Du nutzt "constrained Delegation" und machst einen S4ULogon ohne Passwort.
Dazu muss du in der Domäne die Delegation vom Server auf dem das Programm läuft zu den Zielsystemen erlauben - inklusive "Protocoll Transition" - die MSDN weiß da ganz viel mehr darüber.
In dem Fall kannst du dich einfach per UPN als anderer Benutzer ausgeben.

oder

Du startest dein Programm mit verschiedenen Startparametern in verschiedenen Benutzerkontexten - denn bei nem geplanten Task (beispielsweise) kannst du ja auch einfach einen ausführenden Benutzer angeben. Dann kann dein Programm zwar nur eine Quelle gleichzeitig verarbeiten, aber vielleicht reicht das ja.

19.10.2011 - 16:24 Uhr

Wie sieht denn dein TryCatch-Block aus?

19.10.2011 - 11:04 Uhr

Ich denke du hast hier ein Problem mit Cookies.

Wenn du dich mal mit dem Fiddler oder ähnlichen Tools dazwischen hängst, kannst du vermutlich feststellen, dass der IE beim Link aus Word heraus das Cookie für die ASP-Session nicht übermittelt und ergo du auch keine Zuordnung bekommst.
Warum das allerdings so ist kann ich dir nur schwer beantworten.

Ich vermute, dass es tatsächlich daran liegt, dass der IE neu startet und keine vorhandenen Session Cookies übermittelt (das kann auch eine Sicherheitseinstellung sein) - genauso wie er es tut, wenn der IE von Visual Studio aus aufgerufen wird.

19.10.2011 - 09:50 Uhr

Vom Prinzip her musst du (wie genau weiß ich nicht) die Processor-Affinity-Mask setzen.
Aber du solltest nicht davon ausgehen, dass du besser aufteilst als dein Betriebssystem - grade dann nicht, wenn du mehr als nur einen Thread hast.

Sofern das also nicht grade in einer Anforderung drin steht - lass die Finger weg.

17.10.2011 - 17:23 Uhr

Willkommen im Forum

Also erstmal folgendes:

Console.ReadLine ist nicht nötig zum Anhalten - du kannst einfach einen Breakpoint setzen und dann mit dem Debugger anhalten.
Dann liest du eine ganze Datei - einfügen tust du aber nur die letzte gelesene Zeile (die sehr oft leer ist, weil jemand ein Enter am Ende hinzugefügt hat).

Der Debugger hätte dir das im Übrigen sehr schön gezeigt, denn mit dem kannst du schritt für SChritt durchgehen.

17.10.2011 - 16:46 Uhr

Nur so am Rande (abgesehen von den ganzen Bemerkungen..)
Die Color ist das einzige Element, das du nicht mit GetValue liest.

17.10.2011 - 16:06 Uhr

Ich möchte ich dir empfehlen mal nach Profiling-Tools zu suchen - die können dir vielleicht sagen was im Argen ist. Und vielleicht prüfst du auch mal, dass deine Tabellen keinen Überhang haben. Und dass die Verwendete Engine die gleiche ist u.v.A.

17.10.2011 - 14:24 Uhr

Ich mag mich täuschen, aber ist das nicht sowieso genau so?
Also ohne jedes zutun?

Ansonsten kannst du auch im Fenster die Tastenevents abfangen, auf Tab-Taste prüfen, und dann selbst SelectNext (oder wie das auch immer heißt) auslösen und wenn das dann das aktive Control eine Textbox ist, kannst du sie selektieren.

Andersrum kannst du auch den Mausklick abonnieren und bei Click den Cursor korrekt setzen - das dürfte aber schwieriger sein als die erste Variante.

14.10.2011 - 15:51 Uhr

Wenn es nicht da ist, wo du es brauchst, dann solltest du es deployen, sofern du das darfst (Lizenzen und so...) ...

11.10.2011 - 09:12 Uhr

Vielleicht hilft dir statt PK mit auto-increment ein GUID (uniqueidentifier in SQL) der bleibt bestehen - ABER der belegt halt auch deutlich mehr raum (falls das relevant sein sollte)

10.10.2011 - 15:41 Uhr

Naja - joinen musst du eigentlich immer nur 3 Felder (man kann ja jede Operation entsprechend zerlegen) - das Problem ist wohl a) die Auswertungsreihenfolge und b) die Rekursionstiefe bei diesem Vorgehen ...

Was hast du denn am Ende damit vor?

10.10.2011 - 10:19 Uhr

Vielleicht musst du die Formel anders aufbauen - dann kannst du einfach per Navigationseigenschaft arbeiten:

3 Felder: left, right, operator

Alternativ kannst du natürlich auch deine partielle EF-Klasse erweitern um eben die 3 Felder oben und dann Formel vor dem Speichern aus den 3 Feldern erzeugen.

07.10.2011 - 14:44 Uhr

Ich kenne FO nicht, deshalb kann ich dazu nichts sagen, aber was auf jeden Fall geht: Teile einfach dein Dokument in 2 auf.

07.10.2011 - 11:51 Uhr

Ich bin mir nicht sicher, aber CreateChannel öffnet glaube ich noch keine Verbindung zum Server.

07.10.2011 - 10:09 Uhr

Ja - ehrlich (entschuldigung - ich konnte es mir nicht verkneifen)

Also: Wenn du dein Programm als Admin installierst (so wie zum Beispiel Office, IE, FireFox, uva), dann ist eine Fehlermeldung wegen der Rechte nach dem Programmstart eher ein Problem des Programms und nicht des Installers.
Also zum Beispiel, wenn du Daten in das Programmverzeichnis schreibst, dann ist das schlicht am Falschen Ort (Forensuche wird da helfen).

Warum das "für alle installieren" nicht sichtbar ist - kann ich dir nicht sagen. Eventuell liegt es aber an einer Default-Einstellung des Installers.
Im Übrigen:
Um ein Programm nach C:\Programme\ zu installieren benötigst du in Win7 so oder so Admin-Rechte

07.10.2011 - 09:53 Uhr

Installiere ich dagegen als Admin und starte dann als Nichtadmin das Programm, gibt es ebenfalls eine Fehlermeldung wegen nicht ausreichender Zugriffsrechte und das Programm wird beendet.

Dann ist aber was anderes auch noch falsch...

07.10.2011 - 09:47 Uhr

Es könnte sein, dass dein Service noch starten muss. Je nachdem ob die CLR geladen ist dauert das ein wenig.
Das Problem ist im übrigen nicht beschränkt auf Services sondern tritt bei .NET auch bei lokalen Applikationen und bei Webanwendungen auf.

04.10.2011 - 09:58 Uhr

Und wo ist das Problem?
Du kannst ja wenn es eben nicht LevDist = 1 und Längenunterschied = 1 hat einfach normal die LEvenshtein-Dist berechnen (bzw. nutzen) und einen %-Wert generieren

04.10.2011 - 09:48 Uhr

Ich würde sagen: Prüfe Länge von s1 und von s2 - ist der unterschied 1, berechne die Levenshtein Distanz und prüfe, ob das ergebnis auch 1 ist, wenn ja, dann gib 100% zurück.

04.10.2011 - 09:42 Uhr

Mal so als hinweis zu xpath:


/ = root (also oberste Element-Ebene)
// = suche überall
/*/ = eine Ebene tiefer als Root
/Name = Ein bestimmtes Element

für den Chunk wäre also der "schnellste" Pfad sowas:

/xdp:xdp/pdf/document/chunk

Was mir allerdings ein Rätsel ist:

<?KeepOnDisk?>

Ich kann dir nicht sagen, wie sich (und ob) das auf nachfolgende Elemente auswirkt...

30.09.2011 - 14:51 Uhr

Versuche mal

doc.LoadXml(content);
XmlElement root = doc.DocumentElement;
XmlNode fj = root.SelectSingleNode("//FormData");