Laden...
Avatar #avatar-2343.png
preli myCSharp.de - Member
Student Österreich Dabei seit 11.07.2007 343 Beiträge
Benutzerbeschreibung

Forenbeiträge von preli Ingesamt 343 Beiträge

23.09.2007 - 09:17 Uhr

Ich muss sagen für einen Anfänger ist der Fehler nicht so leicht zu lösen (IMHO). Also geb ich noch einen weitere Tipp:
Die Klasse ShareWatcher.Properties.Settings selbst ist NICHT als public definiert, sprich man kann nicht von überall darauf zugreifen. Die Funktion SettingsForm der Klasse SettingsForm ist public, sprich jeder kann darauf zugreifen. Als Übergabeparameter wird jedoch die Klasse ShareWatcher.Properties.Settings benutzt. Wie kann man diese Funktion nun nutzen, wenn man keinen Zugriff auf diese Klasse im Übergabeparameter hat. Ist irgendwie unlogisch und da mekert der Compiler eben.

Du hast nun zwei Möglichkeiten:
1.) Du machst die Klasse ShareWatcher.Properties.Settings ebenfalls public
2.) Du entfernst diesen Übergabeparameter
Da du den Parameter aber nicht nur zum Spaß hingeschrieben hast, würde ich eher Lösung Nummer 1 empfehlen.

Mfg Preli

20.09.2007 - 09:05 Uhr

Ich hab zwar nicht ganz verstanden was du tun möchtest, aber wenn es dir ausschließlich um die Performance geht, solltest du die Daten nicht wieder auf die Festplatte schreiben, sondern in den Arbeitsspeicher. (Zugriffe auf den Arbeitsspeicher können ca. 1000 Mal schneller sein als Zugriffe auf die Festplatte)

Soweit ich mich nicht irre gibts da sogar einen Thread hier im Forum. Moment ... ja den gibts: Datei in RAM ablegen (Datei im Ram ablegen)

Die Klasse PerformanceCounter könnte auch interessant sein (damit kann man u.a. den freien Arbeitsspeicher berechnen)

Mfg Preli

20.09.2007 - 00:10 Uhr

Original von Maddinel
Gebühren anzeigen lassen und diese dann manuell über meine Buchhaltungssoftware abbuchen, oder gibt es irgend eine automatische Variante, die man irgendwie nutzen oder einbinden könnte, die das von allein erledigt?

Diese Frage hab ich mir auch schon mal gestellt. Bis jetzt hab ich nichts passendes gefunden. Wäre interessant mal bei einer Bank nachzufragen. Wenn jemand weiß ob und wie man so etwas automatisiert dann die.

Weiterhin wäre interessant zu erfahren, ob mir als Einzugsermächtigung vom Kunden ein Haken in einer CheckBox genügt, oder ob ich da mehr brauche?

Das kommt ganz drauf an, ob man auf Nummer sicher gehen möchte. Wenn ich an Google denke, bevor die einen Abbuchungsauftrag durchführen muss man sich ein Formular ausdrucken unterschreiben und ihnen schicken bzw. faxen.
Bei ebay oder amazon genügt ein Klick (und eine Checkbox) um die Abbuchung durchführen zu lassen. Technisch gesehen benötigt man nur Kontonummer und Bankleitzahl (Kontoinhaber wäre auch nicht schlecht). Hat man die Unterschrift des Inhabers ist man jedoch besser abgesichert, falls etwas schief geht, bzw. kann man Betrügerein zumindest etwas vorbeugen.

Mfg Preli

19.09.2007 - 23:39 Uhr

Original von bhelbig
Ist es normal, dass Haltepunkte in einem Thread nicht angesprungen werden?

Nein, ist nicht normal, es sei denn diese Stelle wird einfach nicht passiert.

So wie ich das sehe startest du deinen Thread nicht. (Außer diesen Codeteil hast du nicht gepostet, dann schauts natürlich anders aus).


Thread tBackgroundWorker = new Thread(new ThreadStart(HasToSync));
//folgendes fehlt bei dir
tBackgroundWorker.Start();

Mfg Preli

17.09.2007 - 18:47 Uhr

Hallo error1408!

Ich denke "überschreiben" im Sinne wie du es meinst tun sich die Methoden nicht. Jede Methode wird für sich aufgerufen. Da du von webseiten redest nehm ich mal an, dass es sich um ASP bzw. ASP.net handelt. Sollten also mehrere Benutzer gleichzeitig die Seite betrachten sollte die Funktion trotzdem funktionieren ob statisch oder nicht.
Mit Threads und threadsicher hat das IMHO aber nicht viel zu tun. Für die Threadsicherheit müssen genauso Vorkehrungen getroffen werden, wie bei einer nicht statischen Methode (falls du mehrere Threads hast)

Mfg Preli

17.09.2007 - 18:30 Uhr

Hallo DavidT!

Soweit ich weiß gibt es keine Möglichkeit dies "einfach" zu erkennen. Ob die Verbindung besteht oder nicht kann nur überprüft werden, indem man Daten rüberschickt oder empfängt und dort Fehler auftreten.

Mfg Preli

17.09.2007 - 18:23 Uhr

Hallo Haukinger!

Also ich muss sagen, deine Idee ist einfach spitzenmäßig. Leider seh ich auch keine Möglichkeit einer "einfachen" Umsetzung bzw. einer Umsetzung, die danach leicht zu benutzen wäre.
Aber du könntest ja an Microsoft schreiben, dass sie bei der nächsten .net Version solch eine Klasse oder vielleicht auch ein Schlüsselwort dafür einbauen. So einen TimeOutWächter hab ich mir auch schon paar mal gewünscht.
Viel Glück noch damit 👍 und sorry dass ich nicht wirklich weiterhelfen kann.

Mfg Preli

17.09.2007 - 17:19 Uhr

Original von Riv3r

Directory.GetCurrentDirectory()  

sollte auch gehen...

GetCurrentDirectory ruft das aktuelle Arbeitsverzeichnis der Anwendung ab. (siehe MSDN) Dies ist in den meisten Fällen das gleiche Verzeicnis wie die Exe-Datei, muss aber nicht sein.

Mfg Preli

17.09.2007 - 14:51 Uhr

Ich weiß zwar nicht genau was du falsch machst, bzw. wo das Problem liegt, aber bei mir funktioniert alles tadellos.

Hab im selben Verzeichnis wie meine Exe-Datei die Datei "test.txt" erstellt und folgenden Code ausgeführt.


string file = "test.txt";
if (System.IO.File.Exists(Application.StartupPath+"\\"+file))
	MessageBox.Show("ja");
else MessageBox.Show("nein");

Wenn die Datei existiert wird ja ausgegeben sonst nein. Klappt alles wie es klappen soll.
Ich denke der Fehler liegt irgendwo in deinem Code.

Mfg Preli

//edit:
Ich denke Application.StarupPath ist schon das was du brauchst. (siehe MSDN http://msdn2.microsoft.com/en-us/library/system.windows.forms.application.startuppath.aspx)

Gets the path for the executable file that started the application, not including the executable name.

17.09.2007 - 14:44 Uhr

Hallo Sieben!

Ich finde deine Angaben etwas ungenau. Was meinst du genau mit "technisch umsetzen"?

  • Klassendiagramm?
  • C#-Funktionen?
  • Netzwerk Multiplayer?

Mfg Preli

17.09.2007 - 14:41 Uhr

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.

17.09.2007 - 14:05 Uhr

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

17.09.2007 - 13:52 Uhr

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

17.09.2007 - 13:34 Uhr

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

17.09.2007 - 12:24 Uhr

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

17.09.2007 - 09:23 Uhr

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

17.09.2007 - 08:41 Uhr

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 😁

16.09.2007 - 15:45 Uhr

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.

16.09.2007 - 09:37 Uhr

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

16.09.2007 - 08:29 Uhr

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

15.09.2007 - 22:47 Uhr

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

15.09.2007 - 22:31 Uhr

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

15.09.2007 - 21:32 Uhr

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

14.09.2007 - 18:20 Uhr

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

14.09.2007 - 10:03 Uhr

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

14.09.2007 - 09:41 Uhr

Hallo Cookiie!

Also Fall 1 und 2 sind gleichwertig was die Geschwindigkeit anbelangt. (edit: Davon abgesehen, dass Fall 2 vom Compiler nicht zugelassen wird. 😄)
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)

14.09.2007 - 09:12 Uhr

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

13.09.2007 - 23:15 Uhr

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

13.09.2007 - 23:10 Uhr

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

13.09.2007 - 20:21 Uhr

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

13.09.2007 - 17:56 Uhr

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.

08.09.2007 - 19:47 Uhr

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

08.09.2007 - 18:53 Uhr

@ 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

08.09.2007 - 17:06 Uhr

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

08.09.2007 - 10:46 Uhr

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

07.09.2007 - 18:24 Uhr

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.

_Original von Himo_wie 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

07.09.2007 - 12:43 Uhr

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

05.09.2007 - 21:00 Uhr

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

04.09.2007 - 21:43 Uhr

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

04.09.2007 - 20:31 Uhr

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

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

04.09.2007 - 20:08 Uhr

Original von Heckenschere
ehrlich gesagt hast mich erwischt 🙂

Nun, wikipedia ist keine Schande. Irgendwoher muss man sich ja seine Infos holen.
Ich kann da nur sagen, wer noch nie auf wikipedia war, der werfe den ersten Stein. 😁

Mfg Preli

PS: ich werd schon mal anfangen mich für Quick und Selectionsort vorzubereiten. 😉

04.09.2007 - 19:56 Uhr

Sag mal Heckenschere kennst du wikipedia? 😁
Irgendwie hat der Pseudocode dort verblüffende Ähnlichkeiten mit deinem.
(Falls das nur zufällig so ist, dann schau trotzdem mal auf wikipedia)
Dort steht nämlich zwischen dem Pseudocode noch ein Kommentar:
//Füge A[j] ein in die sortierte Folge A[1 .. j  1].

Vielleicht hilft dir dieser Tipp ja weiter.

//edit: naja, eigentlich ein Schwachsinn, was ich da oben grad geschrieben habe. Sagen wirs mal so: du hast den Pseudocode etwas missverstanden (ich gehe jetzt mal davon aus, dass du dich bei wikipedia schlau gemacht hast, wenn nicht, verzeih mir bitte diese Annahme). Genauer gesagt passen die Anfänge und Enden der Schleifen nicht so ganz.

//edit (2): okay ich machs noch etwas einfacher. So sollte es dann zum Schluss aussehen:

        static void Main(string[] args)
        {
            int j, key, i;
            int[] a = new int[] { 83, 26, 9, 44, 29, 46, 32, 83, 18, 76 };

            for (j = 1; j < a.Length; j++)  //j = 1
            {
                key = a[j];
                i = j - 1;
                while ((i >= 0) && (a[i] > key)) { // >=
                    a[i + 1] = a[i];
                    i = i - 1;
                }
                a[i + 1] = key;
            }

            for(int z=0; z<a.Length; z++)
                Console.WriteLine(a[z]);
            Console.ReadKey();
        }

Hier funktioniert die Ausgabe nun nicht mehr so wie bei Selectionsort. Hier muss zuerst fertig sortiert werden, dann kann erst die Ausgabe erfolgen!
Soweit ich das sehe fängt das Array beim Pseudocode auf wikipedia bei 1 an und nicht bei 0 so wie in C#.

Mfg Preli

04.09.2007 - 19:17 Uhr

Den Desktop bekommst du zum Beispiel folgendermaßen:

Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);

//edit:
Weil du danach gefragt hast: eigene Bilder sieht folgendermaßen aus

Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); 

Mfg Preli

04.09.2007 - 18:53 Uhr

Original von herbivore
a.Length und a.GetLength(0) liefern denselben Wert.

Tja, was soll ich sagen, erwischt. Aber mal ganz ehrlich a.Length ist schon schöner. 😁

warum muss da noch eine For schleife hin

Muss eigentlich gar nicht. Bei Selectionsort würde es auch so gehen, aber ich finde es so übersichtlicher. Außerdem sollte man in den Algorithmus keine Ausgaben hineinpacken, da es dann bei längeren Algorithmen unübersichtlich werden kann und das nicht gerade schön bzw. saubere Programmierung ist.

Mfg Preli

04.09.2007 - 17:43 Uhr

Habs:


        static void Main(string[] args)
        {
            int b, c, d, e;
            int[] a = new int[] { 3, 68, 2, 6, 56, 14 };

            for (b = 0; b <= a.Length - 1; b++)
            {
                c = b;
                for (d = b+1; d < a.Length; d++)
                {
                    if (a[d] < a[c]) // < statt > 
                    {
                        c = d;
                    }
                }

                e = a[c]; //dieser Teil muss außerhalb der Schleife sein
                a[c] = a[b];
                a[b] = e;
            }

            //Die Ausgabe sollte erst erfolgen, wenn fertig sortiert ist
            for(int j=0; j<a.Length; j++)
                Console.Write(a[j]+ " - ");
            Console.ReadKey();
        }

Mfg Preli

04.09.2007 - 17:34 Uhr

Genau lesen bitte. Lenght ist eine Property. Ich vermute, du hast a.Lenght() geschrieben. Falls dies der Fall ist, dann lasse die () weg.
Aber ich denke es ist trotzdem noch irgendwo im Algorithmus ein Fehler. Hab das Programm jetzt mal bei mir rein getan, aber richtig soriert hat er es nicht.
Moment, ich muss das ganze nochmal durchlesen.

Mfg Preli

//edit: Nein, warum müssen hier alle immer nur so schnell sein. 😉

04.09.2007 - 17:26 Uhr

Hier steckt der Fehler:
b≤a.GetLength(0)

benutze a.Length

Mfg Preli

04.09.2007 - 13:16 Uhr

Original von martin_zi
Einfach soll er sein 😁
Ich soll leicht von überall darauf zugreifen können.

Also ich habe einen Logger, bei dem ich einen Singleton Designpattern benutze, dann kann ich auch von überall darauf zugreifen und es ist sicher gestellt, dass es nur einen Logger gibt.
Der Aufruf kann dann von überall aus folgendermaßen erfolgen:

Logger.Instance.WriteLog(text);

Ist eben Geschmackssache, bei allen Projekten wird das bestimmt nicht sinnvoll sein, aber ich bin bis jetzt ganz zufrieden so wie ich ihn gemacht habe.

Mfg Preli

04.09.2007 - 09:26 Uhr

Hallo Arthuro!

1.) Kann es sein, dass du statt Circel vielleicht Circle meinst?
2.) Bist du sicher, dass diese Klasse (Circel oder Circle wie auch immer) überhaupt existiert?
Ich hab nämlich bei google und bei msdn auch nichts gefunden.
Und wenn google es nicht findet .... dann ist das schon sehr merkwürdig und bedenklich. 🤔

Mfg Preli

04.09.2007 - 09:00 Uhr

Danke, hat geklappt