Laden...

Forenbeiträge von 0815Coder Ingesamt 767 Beiträge

13.11.2008 - 15:34 Uhr

Process.StartInfo.WorkingDirectory

nicht 100%ig, man kann zB bei Verknüpfungen ein anderes Arbeitsverzeichnis angeben.

11.11.2008 - 14:14 Uhr

wenn du ex.ToString() logst, hast du auch den kompletten callstack, nicht nur diese methode

05.11.2008 - 12:03 Uhr

Amiga-Basic
Motorola 68k Assembler
Amiga-E
C++ (Amiga)
C++ (BeOS)
Java
C#

11.10.2008 - 15:35 Uhr

weder repair noch manuell registrieren haben was gebracht...

sonst noch jemand eine idee?

ich hab mich auch schon durch einige der links im msdn forum zu dem thema geclickt, aber alle meinen nur, man soll den registry key eintragen / reparieren. bei manchen hats was gebracht, bei manchen nicht...

11.10.2008 - 15:23 Uhr

der erste war leider ein beitrag zu fehlerhaftem xaml, aber es funktioniert schon bei einer neuen silverlight anwendung nicht (und die in dem beitrag angegebenen schemas wurden vom vs auch erstellt)

den zweiten hatte ich schon gefunden, aber repair / reinstall bringt wohl auch ein zweites mal nichts. ich versuch das dennoch mal und danach ggf. den registry eintrag manuell zu erstellen.

11.10.2008 - 12:42 Uhr

Hallo,

ich hab VS 2008 Professional mit SP1 installiert sowie die Beta2 von Silverlight 2.0 (silverlight_chainer.exe), alles auf englisch.

Leider hab ich im VS jetzt weder Intellisense noch eine Preview für das XAML. Ich hab nur den reinen XML Editor.

Ursprünglich hatte ich Express Edition SP1 und die Standard Edition drauf. Diese wurden inklusive sämtlichen dazugehörigen Paketen deinstalliert (also auch SqlServer, Doku, etc).

Trotzdem fehlt mir nach der Neuinstallation vom VS2008 mit Silverlight Intellisense und Preview.

Fehlermeldung bei der Installation oder Start vom VS hab ich keine bekommen. Einzig in den Optionen unter
Texteditor -> XAML -> Formatting und
Texteditor -> XAML -> Miscellaneous
den Fehler "An error occured loading this property page."

Was kann ich tun?

edit:
Auch bei WPF fehlen mir die Preview und Intellisense

07.10.2008 - 19:49 Uhr

wenn der eine Datei schreibt, die einen "Parameter" Pro Zeile hat, dann kannsst du die mit File.ReadAllLines() einlesen und hast genau so einen string[] wie wenn du es über Kommandozeilenparameter machst. Das wäre genau eine Zeile.

26.09.2008 - 09:53 Uhr

@herbivore: stimmt. die explizite möglichkeit vergess ich selber oft - aber wenns nirgendwo gebraucht wird...

@golo: dennoch schade. ich bild mir ein, dass java kovarianz beherrscht.

(und hoffe weiterhin, dass es in einer späteren sprachversion dazukommt.)

26.09.2008 - 01:04 Uhr

Also ich hab bisher nur einmal ein Clone() implementieren müssen und damit mit Absicht auf ICloneable verzichtet. Ich brauchs nämlich nicht per Interface und der Vorteil, den richtigen Type zurückzubekommen war mir wichtiger.

In Framework Design Guidelines steht, es gibt im .NET Framework viele Klassen die IClonable implementieren, aber keine Verwendung des Interface. Es ist besser es nicht zu implementieren (warum steht im ersten Absatz).

Edit: so jetzt hab ich mich auch von herbivore verwirren lassen. Ich hätte Kovarianz auch schon mal gebraucht. Gibts aber leider nicht mit einer Ausnahme: Delegaten.

24.09.2008 - 14:37 Uhr

vorallem bringts nichts, wenn man die berechnung dann aus dem GUI thread auslagert (um das UI nicht zu blockieren) wenn man dann das UI blockiert indem man auf den thread wartet.

22.09.2008 - 16:41 Uhr

das gilt für windows. wenn die datei von einem anderen system kommt, ists leider anders.
auf linux ists nur ein einfaches \n und auf macs nur ein \r (soweit mich meine erinnerungen nicht trügen)

22.09.2008 - 14:03 Uhr

Hallo zusammen

Ich hab eine WebReferenz gemacht und den Timeout nach dem new() auf 1 Minute gestellt.

Jetzt ist folgende Meldung gekommen:

Beim Anforderungskanal ist während des Wartens auf eine Antwort nach 00:00:59.5625000 eine Zeitüberschreitung aufgetreten.

Ich hätt erwartet, dass das zumindest 00:01:00,000 heisst... Die Timer Klassen sind ja nicht besonders genau, aber dass der Timeout schon vorher kommt (wenn auch irrelevant) nimmt mich wunder...

22.09.2008 - 13:11 Uhr

schon mal überlegt, .net dlls einzubinden? dann kann jeder die sprache verwenden die er will... (gibt ja noch mehr als nur vb und c#)

19.09.2008 - 09:51 Uhr

Vorsicht, wenn man unter Windows Hardlinks für Verzeichnisse verwendet (Junction Points).

Angenommen du machst einen auf das Verzeichnis C:\Windows.
Wenn du den im Explorer wieder löschen willst, werden zuvor alle enthaltenen Dateien gelöscht - und das sind keine Kopien.

18.09.2008 - 22:51 Uhr

Liegt daran, weil die nicht generische Variante explizit implementiert ist, und daher nur sichtbar wird wenn man übers interface geht.

17.09.2008 - 23:14 Uhr

zumindest jpgs haben Metadaten namens "Eindeutige Id". Wenn sich das Format nicht ändert sondern die Datei nur kopiert / umbenannt wird, kannst du sicher dieses verwenden. (Picasa macht das auch, hab meine dupletten damit wegbekommen)

17.09.2008 - 23:07 Uhr

Wann wird die Methode GetEnumerator der nicht-generischen Variante aufgerufen, weil ich jetzt einige Situationen ausprobiert habe, aber diese Methode niemals aufgerufen wurde.

theoretisch so (code from scratch):


List<int> zahlen = new List<int>();
// nach belieben füllen
IEnumerable aufzählung = zahlen;
foreach(object obj in aufzählung) // jetzt wird die nicht generische aufgerufen

obacht, grad bei diesem Beispiel wird das weniger performant als die generische variante, weil alle ints in ein objekt gepackt werden müssen -> siehe boxing.

17.09.2008 - 20:51 Uhr

Ich habe das erstmal gelößt indem ich den Code in die Klasse gepackt habe.

Aber so ganz das wahre ist das nicht - da dies ja vom Designer überschrieben wird. Wo und wie kann ich das an einer anderen Stelle definieren?

Was ich mich erinner, ist die vom Designer erstellte Klasse "partial", kannst sie also leicht erweitern ohne überschrieben zu werden.

16.09.2008 - 15:31 Uhr

Ich verwende das schon seit einiger Zeit, einfach spitze.

Trotzdem 2 Verbesserungsvorschläge:

  1. Manchmal will man im Input mehrere Beispiel-Strings halten, und einzeln auswerten. Fein wärs, wenn hier wie beim Sql-Management-Studio nur der gerade markierte Teil ausgewertet wird (bzw, alles, wenn nichts markiert ist).

  2. Undo Funktion Strg-Z im Input um Änderungen rückgängig machen zu können...

16.09.2008 - 13:02 Uhr

Objekte die man im Konstruktor instanziert, welche von IDispose erben, sollte man ohnehin im eigenen Dispose() entsorgen. Dann gibts auch kein Problem, wenn der Konstruktor mittendrinn eine Exception wirft, und der Verwender des ganzen brav ist und ein using() verwendet.

11.09.2008 - 20:49 Uhr

Email ist ein elektronischer Brief. Trotzdem heissts nicht "der Email".

Also vom Artikel der deutschen übersetzung auf den Artikel des eingedeutschten englischen Wortes zu schließen geht nicht (wie auch, in englisch gibts keine Artikel).

10.09.2008 - 15:21 Uhr

nachdem da wo der strahl ist, ein ziemliches vakuum ist, brauchst du die kräfte schon vorher 😉

10.09.2008 - 12:00 Uhr

ist noch niemandem aufgefallen, dass wir den heutigen tag schon zum 17ten mal erleben?

edit: 18
edit: 19
...

08.09.2008 - 14:45 Uhr

Für "große" Images wie Fotos / Scans kenn ich die Algorithmen nicht.

Für PixelArt gibts das:
http://www.hiend3d.com/hq2x.html
Das kann aber nur zum Vergrößern verwendet werden und nur mit Faktoren 2,3,4.

08.09.2008 - 14:40 Uhr

Vielleicht kann man die Zeilenhöhe am Font selber einstellen?

06.09.2008 - 17:51 Uhr

vielleicht reicht es dir aber auch, einfach nur eine dll zu erstellen, eine Klasse dieser zu instanzieren und eine Methode aufzurufen.

29.08.2008 - 12:43 Uhr

Ein Interrupt macht ja genau das (zumindest bei Mikrocontrollern): Das Hauptprogramm wird unterbrochen (Hier blockiert jetzt das GUI), alles abgearbeitet, was der Interrupt zu sagen hat (=Event), dann wird wieder der GUI-Thread weiterbearbeitet (GUI wieder verfügbar). Wichtig ist dabei, dass das Programm exakt an die Stelle zurückspringt (goto lässt grüßen), an der es vorher die Bearbeitung stillgelegt hat, um das Event zu bearbeiten.
Dabei hat das Ereignis eine höhere Priorität, wird aber nicht als Thread ausgeführt(Sonst könnte man Events ja systemseitig ignorieren(Prio niedriger als GUI-Methoden)).

mfg, Rasta

WindowsForms ist aber kein MicroController. Und ein Event ist kein Interrupt.
Und nach dem Event gibts auch kein Goto...
Das Ereignis hat auch keine höhere Priorität, es ist einfach nur das nächste was ausgeführt wird... wenn im Programm steht:


Do1(); 
Do2();
Do3();
//...
public void Do2()
{
 Do5();
 Do6();
}

dann werden die ja auch in der Reihenfolge ausgeführt (eh klar). wenn jetzt statt Do2() ein MyEvent(EventArgs.Empty) steht, dann wird dieses dort ausgeführt. Der Unterschied ist nur, dass man beim Event nicht weiss, wieviele Methoden ausgeführt werden, weil sich die Clients dranhängen, und bei der oberen Do2() schon.

28.08.2008 - 23:38 Uhr

Die BackgroundWorker.ReportProgress() Methode geht intern sicher den Weg über Control.Invoke() um dann am GuiThread den ProgressChanged Event auszulösen.

Also muss ich die Klasse, die die Ergebnisse zur Weiterverarbeitung entgegennehmen sollen mit an die Thread(s) übergeben und dann eine der IHR zugehörigen Methoden aufrufen ?

Daten an einen Thread übergeben ist kein Problem, wenn er mit den Daten gestartet wird und wenn er fertig ist, diese zurückgeben soll. Dann kannst du die Daten ja als Parameter übergeben (Klasse ThreadStart)

Wenn du eine Art eigenen BackgroundWorker hast, der immer laufen soll und wartet dass er was zu tun bekommt, übergib die daten zB über ein Property des threads. In dem Fall sollte der Thread dann aber nicht dauernd prüfen ob er was zu tun hat, sondern mit der Klasse AutoResetEvent ein Signal zum Arbeiten bekommen.

Ich hoff ich hab jetzt nicht das Thema verfehlt...

28.08.2008 - 20:21 Uhr

Ich könnte also damit KEIN Event an einen anderen Thread senden 🤔

Vielleicht denkst du wegen irgendwelcher antiker Techniken, dass Events sowas wie Interrupts oder Messages sind...

Vergiss das (egal ob du sie dir so vorstellst oder nicht).

Events sind simpel gesagt eine Sammlung von registrierten Methoden. Das Event auszulösen bedeuted nichts anderes als alle Methoden der Reihe nach aufzurufen. Nachdem alle an dem Event registrierten Methoden ausgeführt wurden macht die Methode die das Event ausgelöst hat weiter.

Die Events laufen als nie in einem anderen Thread, und "Senden" kann man events eigentlich nicht, sondern eben höchstens aufrufen.

Wenn du "einen Event an einen anderen Thread senden" willst, dann musst du in der Methode die das tun soll zuerst in den anderen Thread wechseln und dann auslösen - was eher so passiert, dass dem anderen Thread mitgeteilt wird, dass er das Event auslösen soll... zB:


Control.BeginInvoke(delegate{ OnMyEvent(EventArgs.Empty) });
28.08.2008 - 14:00 Uhr

Wenn du ein Property hinzufügst, wird das beim Deserialisieren des alten Xml den default Wert haben, also null, 0, false...

Deserialisiert wird aber trotzdem, der XmlSerializer gibt dann keinen Fehler aus. Du müsstest als nur entscheiden was der default Wert dann bedeuted bzw einen eigenen default Wert im parameterlosen Konstruktor setzen.

Properties die entfernt wurden aber im Xml noch vorhanden sind, machen auch keine Fehler, diese kann man irgendwie mit dem [XmlAnyElement] bzw [XmlAnyAttribute] in eine Liste von XmlElement bzw XmlAttribute bekommen, dann könntest du nach dem Serialisieren die alten Werte konvertieren.

27.08.2008 - 17:38 Uhr

Console.CancelKeyPress... hilft zumindest für das Ctrl-C...

19.08.2008 - 09:27 Uhr
private void MachWas()  
{  
  BerechneWas();  
  this.Invalidate();  
}  

witzigerweise ist genau das die variante die ich eine weile verwendet hab (aber auch nur bei controls)... ich hab mich mit mir aber drauf geeinigt, auch hier kein .this mehr zu verwenden.

19.08.2008 - 09:21 Uhr

das einzige was ich mir vorstellen kann wäre ein Strg-C zu senden...

18.08.2008 - 12:26 Uhr

"Gender" wär eine etwas dezentere Möglichkeit...

16.08.2008 - 15:16 Uhr

Die .pdb Dateien können auch im Release interessant sein, weil dann bei Exceptions auch Datei und Zeilennummer mitangegeben wird. Ohne .pdb Datei steht da nur der Methodenname.

14.08.2008 - 16:02 Uhr

Ich glaub auch, dass sich das in den meisten Fällen vermeiden läßt. Allerdings würde ich in den wenigen Ausnahmen immer noch eine List<object> der ArrayList vorziehen. Damit ist schon mal dokumentiert, dass man wirklich objects meint die nichts miteinander zu tun haben...

14.08.2008 - 12:56 Uhr

war auch keineswegs böse gemeint. ich schreib auch oft in dem stil. aber es hat so schön zum satz gepasst.

14.08.2008 - 10:20 Uhr

ich handhabe meine sachen wie golo... funktioniert super.

14.08.2008 - 10:17 Uhr

typsicherheit wird in c# groß geschrieben.

aber offenbar nicht in diesem Satz ... (SCNR)

13.08.2008 - 00:09 Uhr

vielleicht ist das ein Fehler im Demo, und nicht in der dll selber. Aber das hat mich bisher davon abgehalten es zu verwenden.

12.08.2008 - 20:46 Uhr

Beim Weifen bleibt mir schon die demo.exe dauernd hängen oder dockt die Windows nicht mehr an wenn sie ein paar mal an- und abgedockt wurden...

12.08.2008 - 18:14 Uhr

[EDIT=herbivore]Abgeteilt von Begriffsverwirrung (.NET Framework, MFC, WinForms)[EDIT]

Hallo shamanu,
zu 2. Wenn du mit C# arbeitest brauchst du MFC nicht und wirst es auch nicht vermissen. Ich denke MFC hat keine echte Existenzberechtigung für neue Systeme.

erst vor kurzem wurde MFC 9 oder MFC featurepack (oder sowas in der art, so genau kenn ich mich da auch .net aus) veröffentlicht. da gibts einige nette controls die ich in winforms vermisse... DockingWindows, das Office Ribbon dings...

aber natürlich sind das wenn man .net im ganzen mit MFC vergleicht kleinigkeiten.

hm... kennt wer eine gute möglichkeit, diese MFC controls in c# zu verwenden / gibts da einen wrapper ?

12.08.2008 - 18:01 Uhr

definiert wird das dann als
Dictionary<int, List<int>>

12.08.2008 - 13:17 Uhr

Du könntest prüfen wie lang es noch bis zum nächsten Wechsel dauert und den Timer auf diese Zeit setzen.

12.08.2008 - 09:52 Uhr

sicher. der ganze Artikel geht aber davon aus, dass die Endgröße nicht bekannt oder schätzbar ist.

11.08.2008 - 22:31 Uhr

Hab das Programm zum Messen grad stark erweitert:

  • Bissl was am UI rumgepfuscht 🙂

  • Es wird auch mitgetracked, wieviele GarbageCollections während der Tests durchgeführt werden - das gibt einen Hinweis auf Speicherverbrauch / Zahl der Objekterstellungen

  • neuer Test:
    Der Test verwendet eine List<string> zum sammeln der Strings die aneinander gehängt werden sollen, und fügt diese dann mit string.Concat(list.ToArray) zusammen. Das ist speziell bei Strings ab ca 5 Zeichen schneller als mit einem StringBuilder.
    Grund dafür ist der folgende: wird der Speicher beim StringBuilder zu klein, dann wird der gesamte bisher erstellte String in den neuen Speicher umkopiert. Bei der List<string> werden nur Referenzen gesammelt und wenn die nächste nicht mehr Platz hat, werden auch nur die Referenzen umkopiert.

11.08.2008 - 12:53 Uhr

da der exchange server keine .net anwendung ist sondern .net nur selber hosted, bezweifle ich, dass eine solche config (egal wie sie heisst) geladen wird.

wenn alle stricke reissen, mach dir ein eigenes config system (zB xml datei aus dem pfad Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) laden und deserialisieren).

11.08.2008 - 11:45 Uhr

hab den code nur überflogen aber aufgefallen ist mir dabei:

wärs nicht möglich (zwecks Polymorphie) direkt von Image zu erben?

10.08.2008 - 18:25 Uhr

es geht sogar auch ohne "umstellen".

wenn man mit F5 das programm startet wird eine Debug version erzeugt und diese gestartet. kompiliert man aber mit F6 (ohne starten) wird die Release version erzeugt. (Was die Buttons in der Toolbar machen weiss ich nicht, ich kompilier nur mit Tasten)