Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von preli
Thema: Threading-Problem
Am im Forum: Rund um die Programmierung

Verstehe, dann solltest wie ich oben schon geschrieben habe eine Variable nehmen, die angibt, ob das Bild nun "bereit zum Speichern" ist oder nicht.
Evt. ließe sich auch mit "lock" arbeiten, kommt auf den Geschmack und das Beispiel drauf an.
Bei devtrain.de gibts einen (meiner Meinung nach) guten Artikel zum Thema lock und Threading: http://www.devtrain.de/artikel_790.aspx
Oder sonst lock-Anweisung bei MSDN: http://msdn2.microsoft.com/de-de/library/c5kehkcz(VS.80).aspx

Mfg Preli

PS: Vielleicht gäbs auch noch eine bessere Lösung, aber so würde ich es machen, wenn jemand noch weitere Ideen hat, dann nur raus damit.

Thema: File Exists
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Arthuro!

Im Openbook wird meist Application.StartupPath benutzt.
Ich persönliche schreibe einfach nur die Datei ohne Pfadangabe, was jedoch nicht ganz so sauber ist denk ich, zumindest hat es bei mir schon mal zu Komplikationen geführt.
Ich denke StartupPath dürfte da nicht ganz so falsch sein, wenn es auch im Galileo Openbook steht.

Mfg Preli

Thema: Threading-Problem
Am im Forum: Rund um die Programmierung

Invoke bzw. InvokeRequired können dir da sicherlich weiterhelfen.
Damit kann man auch auf GUI-Elemente anderer Threads zugreifen.

Google mal danach oder lies in der MSDN nach, ist eine sauberere, schnellere und bessere Lösung

Mfg Preli

Thema: Threading-Problem
Am im Forum: Rund um die Programmierung

Zitat
Nun bekomme ich das Problem, dass manchmal in der PictureBox ein Bild dargestellt wird, was halb abgeschnitten ist.
Offensichtlich ist es so, das Thread1 noch das Bild in das Feld schreibt und Thread2 schon mit dem auslesen beginnt.
Nun wenn es wirklich daran liegt, solltest du in einer Variable speichern, wenn das Bild fertig ist und Thread2 darf dann erst mit dem Lesen beginnen.
Wenn diese Dinge hintereinander passieren stellt sich jedoch wieder die Frage wozu man dann überhaupt zwei Threads braucht und ob man das nicht in einem unterbekommt.

Mfg Preli

Thema: Teil des Fensters verschwindet beim Maximieren unter der Taskleiste
Am im Forum: GUI: Windows-Forms

Also bei mir kann ich den Minimieren und den Maximieren Button auf False setzen und es funktioniert wie gewünscht. Merkwürdig.

Vielleicht hilft dir evt. die Eigenschaft FromBorderStyle des Forumlars weiter. Dort gibt es auch verschiedene "Rahmen", die bestimmte Einschränkungen was minimieren, maximieren und Größe verändern betreffen.

Möglicherweise weiß ja jemand anderer warum dieser Effekt bei dir auftritt.

Mfg Preli

Thema: Teil des Fensters verschwindet beim Maximieren unter der Taskleiste
Am im Forum: GUI: Windows-Forms

Wenn das Fenster maximiert ist müsste es eigentlich auch am oberen Ende der Taskleiste aufhören.
Bist du sicher dass dein Fenster maximiert ist, oder hast du evt. du Größe "manuell" zu hoch eingestellt?

Mfg Preli

Thema: abstract Forms im Designer
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat
Ich dachte an Interfaces, aber weil ich ja aus der Baseform meine Methoden aufrufe, müsste ich das Interface ja auch wieder dort implementieren, was ja gerade keinen Sinn macht.
Nicht ganz. Du machst ein Interface welches du dann, wie du schon sagtest natürlich nicht in Baseform implementierst, sondern in der davon abgeleiteten Form.

Aber ich denke das beste ist wirklich einfach eine "leere" Funktion zu erstellen und evt. so wie JuyJuka schon erwähnte eine NotImplementedException zu werfen. Ist vielleicht nicht die sauberste Lösung, aber du würdest erreichen was du beabsichtigst.

Mfg Preli

Ach ja: dritte Möglichkeit:
Nachdem du alle Forms und Oberfläche mit dem Designer erstellt hast, kannst du die Funktionen ja abstract machen - dann brauchst du den Designer ja nicht.
Oder du arbeitest ganz ohne Designer

Thema: Wie kann ich Module verwalten...
Am im Forum: Rund um die Programmierung

Hallo phpkueken!

Ich kenne zwar das "Tobit Infocenter" nicht, aber meinst du mit Module sowas wie Plugins bzw. evt. könntest du es auf diese Weise lösen. Klingt für mich jetzt ähnlich - falls ich ganz daneben lieg korrigier mich.
Bei Codeproject -> http://www.codeproject.com/csharp/PluginsInCSharp.asp gibts ein gutes Beispiel zu Plugins. Reinschauen kostet ja nichts.

Mfg Preli

//edit: Ich denke ich bin gerade draufgekommen was du mit Module meinst. Ich denke dass es eigentlich viele "Module Handler" und Bibliotheken zu diesem Thema im Internet geben müsste.

Thema: AccessViolationException - nur in Vista, in XP nicht
Am im Forum: Rund um die Programmierung

Nun egal welche Methode aus der DLL ich aufrufe, es kommt immer diese Exception. Der genau gleiche Code funktioniert in XP jedoch tadellos.
Ich arbeit mit DllImport:

[DllImport("xyz.dll", EntryPoint = "...")]
static extern ....

Ich hab bereits etliche Stunden im Internet verbracht, scheinbar gibt es einige andere, die das selbe oder ein ähnliches Problem haben. Ein allgemein gültiger Lösungsansatz, war jedoch noch nirgends zu finden und die Lösungen die dort standen, helfen bei mir nicht.
Ich kann bis jetzt unter Vista auf keine einzige "nicht .net DLL" zugreifen.

Mfg Preli

Thema: Unicode Textdatei als Tabelle ausgeben
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Schaut ja eh ganz gut aus. Nur dass du deine ArrayList eigentlich nicht benutzt, sprich in deinem Beispiel kannst du sie dir schenken.
Ich schätze du bist noch unzufrieden, weil du nur eine Zeile ausliest und nicht die ganze Datei.


//FileStream kannst dir auch schenken, einfach beim StreamReader den DateiPfad als Parameter angeben
StreamReader t = new StreamReader("Arbeiter.txt");
//Dann brauchst du eine Schleife
while (! t.EndOfStream)
{
   string line;
   line = t.ReadLine();
   ListeBewerber.Items.Add(line);
}
f.Close();
So hättest du die ganze Datei ausgelesen.

Mfg Preli

Thema: Unicode Textdatei als Tabelle ausgeben
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Also soweit ich das verstanden habe, hast du in einer Textdatei UniCode Zeichen, die du auslesen möchtest und irgendwo anzeigen willst.
Hab ich das soweit richtig verstanden?

Dann musst du eigentlich nur die einzelnen Zeichen aus der Datei auslesen (zum Beispiel mit einem StreamReader) und dann irgendwie anzeigen (zum Beispiel in einer ListBox -> listbox.Items.Add(...); )

Evt. kannst du dir die Begriffe ListBox bzw. StreamReader ja im OpenBook http://www.galileocomputing.de/openbook/csharp/ oder bei google nachschlagen.

Oder wo genau liegt das Problem bzw. kommst du nicht weiter?

Mfg Preli

Thema: AccessViolationException - nur in Vista, in XP nicht
Am im Forum: Rund um die Programmierung

Die Idee hatte ich anfangs auch, nur soweit ich weiß würde Vista mich informieren, wenn ein Programm auf Registry etc. zugreifen möchte und ich (als Benutzer) könnte dann zustimmen oder auch nicht.
Außerdem greife ich in keiner der DLLs auf Registry noch auf C:\Windows oder C:\Programme zu.
Zusätzlich ist die AutoIt (eine der zwei Bibliotheken) offiziell mit Vista kompatibel.

Trotzdem glaube ich dass es evt. ein Konfigurationsproblem ist oder das Programm zu wenig Rechte besitzt. Nur wie könnte ich den Fehler beheben?

Mfg Preli

PS: Ich führe das Programm als Admin aus, falls das relevant ist

Thema: AccessViolationException - nur in Vista, in XP nicht
Am im Forum: Rund um die Programmierung

Hallo allerseits!

Folgendes Problem: Habe zwei DLL-Dateien, auf die ich zugreife, die eine ist SQLite (kennen wahrscheinlich viele) und die zweite ist AutoItX3.
Unter Windows XP funktioniert alles wie es soll, in Vista jedoch kommt eine AccessViolationException.

Any Ideas?

Mfg Preli

Thema: Programm im Hintergrund laufen lassen
Am im Forum: Rund um die Programmierung

Hallo oli001!

Du könntest auch einen Dienst dafür programmieren. Würde denk ich gut passen für dein Problem. Lies dich mal etwas in die Thematik ein, falls dir dieses Kapitel noch unbekannt ist. Da (zumindest einige) Computer so konfiguriert sind, dass "gewöhnliche Programme" gegenüber "Diensten" bevorzugt werden, wird der User nichts mitbekommen. Du könntest die Priorität für den ausführenden Thread auch selbst niedriger einstellen.

Für die zeitgesteuerten Aufgaben könnte man einen Timer benutzen. ACHTUNG allerdings: wenn du dich für einen Dienst entscheidest funktioniert der Standardtimer von Windows nicht. Gibt aber noch andere Timer, die serwohl funktionieren.

Mfg Preli

Thema: Performance String/StringBuilder
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Original von Cookiie
Aber gut zu wissen, das ich jetzt mein Programm nicht zwangsoptimieren muss :-)
Hatte auch mal ein Programm mit vielen Stringoperationen, das ich dann optimiert habe. Also von String auf StringBuilder. Hat mich ca. 20 Stunden Arbeit gekostet um danach festzustellen, dass es ungefähr gleich schnell war wie zuvor.

Mfg Preli

Thema: Performance String/StringBuilder
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Cookiie!

Also Fall 1 und 2 sind gleichwertig was die Geschwindigkeit anbelangt. (edit: Davon abgesehen, dass Fall 2 vom Compiler nicht zugelassen wird. :D)
Fall 3 dürfte nach meiner Erfahrung sich NICHT auszahlen. Könnte man eigentlich ganz einfach ein Testprogramm machen und prüfen was länger dauert.
Hab auch mal viel Zeit in String Optimierung gesteckt und habe danach festgestellt, dass es sich in vielen Fällen NICHT auszahlt auf StringBuilder zu wechseln. (Außer natürlich wenn sehr, sehr viel verändert wird und der String selten ausgelesen wird)

Mfg Preli

//edit: Hab jetzt mal ein Testprogramm geschrieben (war selbst neugierig). Fall 1 ist ca. 30 Prozent schneller. Selbst in diesem Fall
Fall1:

string str = "lala" + var1 + "bubu" + var2 + "knoblauch" + "lala" + var1 + "bubu" + var2 + "knoblauch" + "lala" + var1 + "bubu" + var2 + "knoblauch" + "lala" + var1 + "bubu" + var2 + "knoblauch";
Fall3:

StringBuilder strb = new StringBuilder();
                strb.Append("lala");
                strb.Append(var1);
                strb.Append("bubu");
                strb.Append(var2);
                strb.Append("knoblauch");
                strb.Append("lala");
                strb.Append(var1);
                strb.Append("bubu");
                strb.Append(var2);
                strb.Append("knoblauch");
                strb.Append("lala");
                strb.Append(var1);
                strb.Append("bubu");
                strb.Append(var2);
                strb.Append("knoblauch");
                strb.Append("lala");
                strb.Append(var1);
                strb.Append("bubu");
                strb.Append(var2);
                strb.Append("knoblauch");
                str = strb.ToString();

Es gab schon mal so einen ähnlichen Thread (siehe hier Arbeiten mit strings beschleunigen ). Dort stelle ich ganz unten auch eine eigene Klasse von mir vor (StringBuilder), die in manchen Fällen sogar schneller als string sein kann.
Schau's dir mal an (am besten auch die Excel-Datei)

Thema: System.IO enthält keine Definition für File.SetAttributes
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Tja ich bezweifle das du das Löschen einer Datei so richtig verhindern kannst, aber du kannst die Datei verschlüsseln, dann kann der Benutzer die Datei zumindest nicht lesen und somit auch nicht zu etwas sinnvollen verändern.
Im "normalen" Framework gibts da ganz einfach zu benutzende Klassen. Ob's die aber auch im CF gibt weiß ich leider nicht.
Einfach mal ein bisschen googeln.

Mfg Preli

Thema: System.IO enthält keine Definition für File.SetAttributes
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Driftdriver!

Ich denke du gehst das ganze zu kompliziert an.

Ich denke mal du meinst mit "SteamWrite Vorgang", dass du mit einem StreamWriter etwas in eine Textdatei schreibst. So würde ich zumindest vorgehen, wenn ich etwas in eine Textdatei schreiben wollte.
Wenn du mit dem Schreibvorgang fertig bist musst du nur den StreamWriter schließen. FERTIG.

Beispiel:


StreamWriter sw = new StreamWriter("myfile.txt");
sw.WriteLine(...);
//und nun schließen
sw.Close();

Mfg Preli

Thema: offene Explorerfenster ermitteln
Am im Forum: GUI: Windows-Forms

Hallo sarabande!

Danke für die Info.
Ich dachte mir schon, dass ich mit GetProcessesByName nicht weiterkomme.

Zu deiner Frage, das ganze sollte auf Vista laufen. (hätte ich vielleicht gleich sagen sollen)

Bin jetzt bei meinen Recherchen auf AutoIt gestoßen. Die neue Version3 kann mir da vielleicht weiterhelfen (möglicherweiße). Ich befürchte die Chance ist recht gering, dass jemand AutoIt in C# schon mal benutzt hat. Falls doch wäre ich über Hilfestellungen dankbar.
Für Java hab ich schon einiges gefunden, werd mal weitersuchen.

Mfg Preli

Thema: offene Explorerfenster ermitteln
Am im Forum: GUI: Windows-Forms

Hallo allerseits!

Ich müsste eine Funktion schreiben, mit der ich ermitteln kann, welche Explorer-Fenster gerade offen sind, sprich welche Ordner.
Ich bin bei meiner Suche schon auf kleine Code-Ausschnitte gestoßen, jedoch hat noch keiner so richtig zum Ziel geführt.

Process[] processes = Process.GetProcessesByName("explorer");
Klingt schon ganz gut, hab bis jetzt jedoch noch nicht rausbekommen, wie ich ermitteln kann, welche Ordner offen sind.

Irgendwelche Vorschläge??? =)

Mfg Preli

Thema: Homepagetool in C#
Am im Forum: Projekte

Hallo KirKone!
Wir überlegen gerade ob wir nicht doch etwas anderes programmieren sollen. Immerhin gibt es solche Programme wirklich schon haufenweise.

Wir sind aber immer noch am überlegen - sprich nix ist fix

Beim Projekt haben wir bis jetzt mal eine Art Pflichtenheft festgelegt und sind jetzt grad dabei ein Klassendiagramm des Grundgerüsts zu erstellen, bzw. andere grundlegende Dinge festzulegen.

Mfg Preli

PS: Dein Webeditor würde mich trotzdem interessieren. Würd ich gern mal ausprobieren.

Thema: Collection<Color> zur Designtime initialisieren...
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Du könntest den Bug an Microsoft melden (ist ja wie du selbst geschrieben hast ne Beta Version). Egal wie Microsoft das ganze geplant hat, ich bin sicher, dass es nicht beabsichtigt ist, dass sich das VS "kommentarlos schließt".

Wie man das Problem umgehen könnte weiß ich aber leider auch nicht. sorry.

Mfg Preli

Thema: Was ist Instalieren? + Trial Version?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

@ 0815Coder: gute Idee, wenn es funktioniert

Es gäb noch zwei weitere Möglichkeiten, die mir eingefallen sind:

1.) einen Dienst im Hintergrund laufen lassen, der in regelmäßigen Abständen (z.B. alle 5 Minuten) prüft, ob die Zeit verändert wurde (sprich die Zeit wird alle 5 Minuten gespeichert, liegt die neue Zeit "hinter" der alten wurde geschummelt. Kann zwar auch umgangen werden, indem man den Dienst abstellt, aber da muss man erst mal draufkommen.
Wär natürlich nicht wirklich fair dem User gegenüber immer einen Dienst im Hintergrund laufen zu lassen.

2.) Was natürlich noch unkomfortabler wäre für den Nutzer: aktuelle Zeit nicht vom Computer ermitteln, sondern von einem Server im Internet abfragen, dann weiß man bestimmt das richtige Datum. Nachteil natürlich: Ohne Internetzugang funktioniert das Programm nicht und wenn der Server mal nicht funktioniert, geht auch nix. Außerdem wollen die meisten User kein Programm, welches nach Hause telefoniert.
Würde ich höchstens einsetzen, bei einem Programm, welches ohnehin das Internet benötigt, wie MailProgramme oder Messenger.

Mfg Preli

Thema: Was ist Instalieren? + Trial Version?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat
Original von DCoder
Oder du benutzt eine Kombination aus Datum in die Registry schreiben und Feststellen ob das Datum geändert wurde. Dazu könntest du beispielsweise bei jedem Programmstart das aktuelle Datum speichern und mit dem letzten vergleichen -- wenn das letzte in der Zukunft liegt hat der User die Zeit verstellt. (Das Speichern des Datums muss wiegesagt verschlüsselt geschehen, da man ja sonst das Programm ohne weiteres austricksen könnte ;-))
Ist aber auch nicht zu 100% sicher, da der Benutzer das Datum ja VOR jedem Programmstart zurückstellen könnte und zwar ungefähr 5 Minuten später als der letzte Programmstart war. Dann denkt das Programm es sind lediglich 5 Minuten vergangen, in wirklichkeit könnten aber Tage oder Wochen vergangen sein.
Da viele Demo-Programme so arbeiten ist es auch nicht wirklich unwahrscheinlich, dass der Benutzer das austesten wird.
TROTZDEM: wahrscheinlich immer noch eine der besten und sichersten Lösungen.

Mfg Preli

Thema: Speicher eines Wertes bei der Datei
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Original von Arthuro
Aber irgendwie wir die datei nicht geöffnet warum ?
Ich nehme mal an, dass die Datei geöffnet wird, aber du tuts ja nichts damit. Immerhin zeigt die Funktion OpenText nichts an, sondern liefert nur einen StreamReader zurück.
Schau dir mal Beispiel 2 auf folgender Seite an, da wird mit der Funktion OpenText gearbeitet:
http://www.csharphelp.com/archives/archive24.html

Mfg Preli

Thema: Was ist Instalieren? + Trial Version?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat
Original von Himo
danke Balu, aber das Datum als bezug für den Trailinterwal ist doch keine geschickte Idee, weil der user das Datum von seinem System zuruckstellen kann
Stimmt genau, der User könnte das Datum zurückstellen, das kann man nicht wirklich verhindern.
Wenn dir das zu unsicher ist, gäbs da noch die Möglichkeit das der Benutzer das Programm zum Beispiel nur 30 mal Öffnen darf. Ist aber auch nicht das Gelbe vom Ei.
Zitat
Original von Himowie kann ich in C# auf das Registry zugreifen?
Meiner Meinung nach gutes Tutorial: http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=264

Mfg Preli

Thema: Programm viel zu langsam
Am im Forum: Rund um die Programmierung

Hallo DavidT!

Ich hatte auch mal ein recht rechenintensives Programm geschrieben. Als ich die Compileroptionen umstellte (von Debug-Modus auf Release), hat sich die Geschwindigkeit um die 25% verbessert. Also in machen Fällen kanns schon hilfreich sein sich da etwas zu spielen. Dass man aber von 50% Auslastung auf 5% kommt - eher nicht. Aber vielleicht ein Schritt in die richtige Richtung.

DirectX ist evt. zu überlegen, da in diesem Fall die Grafikkarte besser einbezogen wird und somit der Prozessor geschont wird.

Mfg Preli

Thema: Frage zu Thread
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Wie Andavos bereits sagte, wird ein Thread beendet, wenn die Methode fertig ist, jedoch ist zu beachten, dass Thread-Methoden oft ungefähr so aussehen (findet man zumindest in einigen Tutorials und Büchern):

while(true) { ... }
Vor allem wenn irgendetwas ständig im Hintergrund durchgeführt werden soll. Kann oft zu Fehlern führen, da ein Thread NICHT automatisch beendet wird, wenn man den "Haupt-Thread" beendet. Kann dann oft zu Fehlern führen.

Ich weiß das war nicht direkt gefragt, aber das passt hier recht gut dazu und ist für die Praxis recht hilfreich. Ich hoffe ihr verzeiht mir.

Mfg Preli

Thema: Insertionsort mit Array (keine abbruchbedingung oda endlosschleife :( )
Am im Forum: Rund um die Programmierung

Zitat
Original von Heckenschere
edit2: HIHI habs endlich geschafft. Musste das dumme do weg machen. aber ich versteh irgendwie nich warum bei wiki da do steht und es mit do garnich funzt
Das liegt daran, dass bei wikipedia pseudocode steht und nicht C#-Code

Mfg Preli

Thema: Insertionsort mit Array (keine abbruchbedingung oda endlosschleife :( )
Am im Forum: Rund um die Programmierung

So ist es, das Problem liegt an deinem "semi"

Zitat
muss da immer noch nen semi hin machen -.-

Vielleicht hilft dir das zu verstehen warum: Eine while schleife führt immer die die danach folgende Anweisung aus. Mit einem { } auch mehrere. In deinem Fall hast du (wieder mal) eine tolle Endlosschleife, weil die Schleife eines macht nämlich nichts -> " ;"

Mfg Preli