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 der Marcel
Thema: Wie seid ihr zu myCSHARP.de gekommen?
Am im Forum: Ankündigungen

Also ich hab mich auf die Express-Version der c't gestürzt.

Ziemlich schnell hatte ich spezielle Fragen an Google und dafür fand ich das Forum ideal

Thema: Threading - Wie denn nun?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi!

Bin selber auch noch nicht solange dabei und habe mich vor kurzem ein bißchen zu Threads in C# schlau gemacht.
Von meinem Verständnis her würde ich meinen, dass BeginInvoke immer eines tut: Daten von einem Thread im Prinzip in einen anderen Thread schaufeln, wobei es der Methode egal ist welche Threads das nun sind.
Bei Control.BeginInvoke willst du ja auf das Control zugreifen, und das befindet sich für gewöhnlich im GUI-Thread...
Bitte berichtigen, wenn ich hier noch was falsch sehe!


MSDN-Online ist tatsächlich recht träge, was daran liegen dürfte, dass so viele Entwickler darauf zurückgreifen. Ein "Aktualisieren" kenne ich nicht, da dies eine Unmenge an Daten umfassen würde (glaube mindestens 2GB), und die Informationen sowieso nur eine gewisse Halbwertszeit aufweisen, womit Aufwand und Nutzen in keiner vernünftigen Relation zueinander stehen.

Gruß, der Marcel

Thema: Frage zur Erstellung von Windows-Anwendungen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi Weyoun!

Du kannst auch erstmal die aktuellen Ausgaben der c't hinzunehmen. Da gibts zurzeit eine Einsteigerserie für C# mit Visual C# Express, wo dir grundsätzliche Sachen der OOP geklärt werden! Aktuell ist es Teil 2/5.

Viel Spaß!

Gruß, der Marcel

Thema: Verzeichnis auslesen (mal wieder)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Stimmt, da muss ich mich herbivore anschließen. Da Du nicht in das Array schreibst, ist eine foreach-Schleife die beste Variante!

Gruß, der Marcel

Thema: Verzeichnis auslesen (mal wieder)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi Dial!

Probier es mal mit folgenden Befehlen:

Path.GetFileName(files[counter]);
Path.GetFileNameWithoutExtension(files[counter]);

Die geben beide einen String zurück.

Benutz doch bei der Schleife eine For- statt einer While-Schleife, da ist das Hochzählen des counter von vornherein mit implementiert.

Viel Spaß!

Gruß, der Marcel

PS: Das Initialsieren von int counter NUR für die Schleife ist bei For auch enthalten. So gäbe es auch keine Probleme, wenn Du mehrere Schleifen hintereinander durchläufst...bei deiner Lösung müsstest Du counter erst vor jeder Schleife "resetten". --> Die Lösung ist meiner Meinung nach absolut unpraktisch und stellt einen potentiellen Fehlerherd dar

Thema: Format String
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi!

Das geht so hier:

DateTime now = DateTime.Now;
            NewBackupOrderButton.Text = now.ToString("dd.MM.yyyy");

Viel Spaß!

Gruß, der Marcel

Thema: Session mit Windows Anwendungen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Kannst Du mir mal bitte erläutern, was du unter seiner session verstehst? Dann kann ich Dir vielleicht eine Antwort geben

der Marcel

Thema: Physische Laufwerksinformationen auslesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi!

Habe wieder mal eine Frage, zu der die Forums-, Google und MSDN-Suche nichts ergeben hat.

Und zwar habe ich vor, mit meiner Anwendung nach einer bestimmten Datei zu suchen, die sich irgendwo auf irgeneinem Laufwerk in irgendeinem Unter(-Unter)-Verzeichnis befinden kann. Die Klasse, welche das Suchen ausführt, erwartet nur den Laufwerksbuchstaben und findet die Datei(en).

Nun würde ich das Ganze gerne so einbinden, dass ich mir alle logischen Laufwerke aufliste und diese dann den physischen Laufwerken zuordne. Als Beispiel: Platte 1: C:\, D:\, E:\ Platte 2: F:\, G:\, H:\

Damit habe ich dann vor, die Suche für Platte 1 und Platte 2 in einem jeweils eigenen Thread auszulagern, damit das parallel stattfinden kann.

Daher ist meine Frage, ob ich die Informationen "Platte 1" und "Platte 2" irgendwie herausbekommen kann oder ob das wirkllich nur über WMI geht?

Gruß, der Marcel

Thema: Möglicher ThreadFehler mit Listbox
Am im Forum: GUI: Windows-Forms

Hi herbivore und talla!

Nein, ich hatte nicht vor, die Listbox zu löschen, da sie als laufende Statusanzeige dient und bei meinen Sersuchen (erstmal) auch noch nicht wirklich sehr viel hineingeschrieben bekommt.

Habe eben herausgefunden, dass man EventHandler auch mehrmals hinzufügen kann

Es lag tatsächlich daran, dass ich die Methode zum Schluss nicht mehr vom EventHandler getrennt habe. Somit hat sie beim 3 Durchgang auch 3 Mal die Werte eingetragen (3 mal das selbe Ereignis)

Arbeite mich noch neu ein, da kann so einen Fehler noch passieren

Vielen Dank für eure schnellen Antworten!!!

Gruß, der Marcel

Thema: Möglicher ThreadFehler mit Listbox
Am im Forum: GUI: Windows-Forms

Hi!

Habe mir ein Projekt erstellt, welches primär jetzt erstmal aus einem Verzeichnis alle Dateien in ein anderes kopieren soll. Da dieser Vorgang ja schon mal etwas Zeit in Anspruch nehmen kann, habe ich die Methode CopyAllFiles in einen Thread ausgelagert.
Sobald ich auf den Button "Kopieren" klicke wird der Thread mit der Methode CopyAllFiles gestartet und arbeitet. Die Methode liegt in einer DLL von mir und sendet über Events den Dateinamen der aktuell zu kopierenden Datei an eine ListBox status_list in meine GUI.
Beim ersten Durchlauf ist alles ok. Mache ich einen zweiten Durchlauf (auch mit anderen Dateien) direkt danach, werden die einzelnen Dateien doppelt in die ListBox eingetragen, beim dritten Durchgang dann 3 Mal und so weiter. Daher ist meine Frage, ob ich den Thread, nachdem CopyAllFiles fertig ist, beenden muss. Meine Versuche mit Thread.GetCurrentThread.Abort() lieferten ein unverändertes Ergebnis.
Die Forumssuche hat für mich leider auch nichts ergeben (zumindest nichts, was ich gefunden hätte )

Initialisiere den Thread folgendermaßen:

Thread Thread1 = new Thread(new ParameterizedThreadStart(Validation.CopyAllFiles));
            AskForFolder.ShowDialog();
            string rawpath = AskForFolder.SelectedPath + (char)215 + ReadDestinationDir("C:\\Dokumente und Einstellungen\\Marcel\\Desktop\\dongle.sec");
            Thread1.Start(rawpath);

Wenn jemand eine Ahnung hat, wo mein Problem liegen könnte, wäre ich wirkilich dankbar

Gruß, der Marcel

Thema: UnauthorizedAccessException beim Registry-Schreiben
Am im Forum: Rund um die Programmierung

Hallo John Doe!

Ich glaube, ich habe deinen Fehler entdeckt. Es liegt ganz einfach daran, dass du mit RegistryKey.OpenSubKey (String) das ganze nur schreibgeschützt öffnest.
Die zweite Überladung für diese Methode ist: RegistryKey.OpenSubKey (String, Boolean), wobei man als Boolean-Wert true setzen muss, um den Schlüssel auch zum Schreiben zu öffnen.

Für dein Beispiel:

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWAREstockADM", true);

Genaueres findest du bei MSDN: RegistryKey.OpenSubKey-Methode

Gruß, Marcel

Thema: Fehler beim starten eines neuen Projektes
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Dann liegt es wohl auch nicht wirklich am Namen! Aber wenn du sagst, der vorgeschlagene Name ist "ConsoleApplication1": Was benutzt du denn für ein Windows? Offensichtlicht hast du die englische Visual C# Express-Version? Wenn dein Windows dann Deutsch ist, kann es vielleicht auch da dran liegen. Zieh dir doch einfach mal die deutsche Visual C# Express-Version von der Microsoft-Homepage und probiers damit.
Als nächstes könntest du, wenn du ein Imaging-Programm parat hast, ein Backup von deiner Systempartition machen, Windows neu installieren und es damit probieren. Wenn es dann klappt, ist deine aktuelle Windows-Applikation im Eimer und bedarf eh der Neuinstallation

Gruß, Marcel

Thema: Kann man ShowWindow benutzen?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke Progger für gute Antwort!

Thema: Fehler beim starten eines neuen Projektes
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi c.alexander!

Ich benutze seit der c't auch das das Visual C# Express.

Hast du vielleicht deinen Standard-Programme-Ordner in deinem Windows in der Registrierung geändert? Wenn ja, dann solltest du den wieder auf C:\Programme zurückstellen.
Hatte beim Erstellen oder öffnen eines Projektes immer die Meldung "Absolute Pfadinformationen sind erforderlich" bekommen. Nach längergem Rätseln hab ich dann gemerkt, dass es daran liegt, dass C:\Programme nicht im ProgramFilesDir-Wert im Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion stand, sondern mein Laufwerk G:, wo ich alle Programme ablege und dass es tatsächlich daran liegt...

Mein erstes C#-Programm hat dann auch versucht damit umzugehen , so dass ich dort einstellen kann, dass es für ein paar Sekunden zwecks Programmstart den Wert auf Standard zurücksetzt oder das solange macht, wie das Programm läuft.

Da sollte man doch meinen, Microsoft wüsste, dass sich die Nutzer die Pfade auch mal anpassen...irgendein Sicherheitsupdate hatte damit auch schon Probleme

Hoffe, dass ich dir damit weiterhelfen konnte und viel Spaß am Programmieren!

Gruß, Marcel

Thema: Kann man ShowWindow benutzen?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Guten Abend!

hab mir den Beitrag zum Thema, das öffnen einer zweiten Instanz verhindern und das das Fenster der geöffneten Instanz in den Vordergrund holen, hier angesehen. Eigentlich sollte der Code da auf c# geschrieben sein, aber ich weiß einfach nicht, was ich machen soll, um den Aufruf

ShowWindow(mainWindowHandle,SW_RESTORE);

zu benutzen.

Soweit ich weiß, ist das Programmierung direkt mit der WIN32-API.

Könnte mir da jemand weiterhelfen?

Gruß, der Marcel

Thema: Wie verwende ich die DLL richtig?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

jetzt gehts....und ich weiß nicht wieso...

"Der Laie wundert sich und der Fachmann staunt"

Danke Talla für die Hilfe!

Gruß, der Marcel

Thema: Wie verwende ich die DLL richtig?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Guten Abend!

Habe aus meinem Projekt eine Methode ausgelagert und diese in einer Klasse in einer DLL kompiliert. Selbstverständlich hab ich in der DLL die ganze Methode als public deklariert..Nun habe ich diese DLL in mein Projekt als Verweis eingebunden und kann mir im Objekt-Explorer auch meine Methode anschauen. Beim einbinden der Ressource über die using-Direktive meckert der Compiler aber:

Der Typ- oder Namespacename "Meine_DLL" konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?)

Hab schon das Forum durchsucht und nachdem, was ich weiß, müsste es gehen.
Denn der Namespace in der DLL ist wie folgt deklariert:

namespace Meine_DLL

die using Direktive:

using Meine_DLL;

Der Dateiname der DLL hat keine Unterstriche, daran kann es nicht liegen, oder?

Wäre wirklich dankbar, wenn mir dabei jemand von euch auf die Sprünge helfen könnte! Danke!

Gruß, der Marcel

Thema: Bestimmte Zeile auslesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi Linus,

schreib vielleicht einfach eine for-schleife mit einem Integer-Zähler, welcher bei jedem Schleifendurchlauf um eins erhöht wird. In der Schleife fragst du mit einer if-Anweisung den Zähler ab und wenn er gerade bei der zeilennummer ist, die du möchtest, schreib die Zeile einfach in die Ausgabe.

Das kann so aussehen:

FileStream fs = File.Open("C:\\Dokumente und Einstellungen\\All Users\\Desktop\\Text.txt", FileMode.Open);
            StreamReader sr = new StreamReader(fs);
            string text;

            for (int i = 0; i < 10; i++)
            {
                text = sr.ReadLine();
                if (i == 2)
                    textBox1.Text = text;//das schreibt die 3. Zeile der Datei in die Ausgabe
                if (i == 5)
                    textBox2.Text = text;//das schreibt die 6. Zeile der Datei in die Ausgabe
            }
            sr.Close();
            fs.Close();

Im Prinzip zählst du also, wie oft du ReadLine schon angewendet hast

Auftretnde Fehler, die kommen, weil du mehr Zeilen auslesen möchstest, als die Datei hat, musst du natrülich auch noch behandeln


Gruß, Marcel

Thema: Programm auch ohne .Netframework ?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Meinem Verständnis nach müsstest du auf eine Nicht-.Net-Sprache umsteigen, oder seh ich das falsch.

ein Tool, was Updaten erledigt, findest du auf:

http://download.winboard.org/downloads.php?ordner_id=70

Gruß, Marcel

Thema: Fortschritt der Installation Anzzeigen..?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hmm, ich will ja die lust nicht dämpfen, aber so ein Update-Pack, wie du es planst, exisitert im grunde schon:

http://download.winboard.org/downloads.php?ordner_id=70

Gruß, Marcel

Thema: Bestimmte Zeile auslesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

*lol* meine Antwort war zu spät...hab den thread mal 10 Minuten nicht aktualisiert ... *g*

Thema: Bestimmte Zeile auslesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi Linus!

Probier es mal mit der Streamreader Methode ReadLine!
Mit der kannst du Zeile für Zeile der Datei auslesen.
Die richtige dann auszulesen ist dann nur noch eine sache der Logik.

Bei mir siehts verinfacht so aus:

FileStream fs = File.Open("C:\\Dokumente und Einstellungen\\All Users\\Desktop\\Text.txt", FileMode.Open);
            StreamReader sr = new StreamReader(fs);

            for (int i = 1; i < 4; i++)
            {
                textBox1.Text = sr.ReadLine();
            }
            fs.Close();
            sr.Close();

Der Code schreibt nacheinander alle Zeilen in die Textbox und lässt die dritte stehen...zugegeben, das ist die holzhammermethode, aber zum veranschaulichen hier reichts ja erstmal

Gruß Marcel

Thema: Byte --> String --> Byte erzeugt falsche Bytes...
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke! Daran liegt es tatsächlich... ich muss natrülich beim Encodieren und Decodieren jedesmal die Unicode-Codierung verwenden, sonst wird es Datenmüll
Leider wird bei der Unicode Encodierung, das Byte-Array grundsätzlich richtig, aber doppelt so groß...Jedes 2. Element ist dann eine 0?? Wie kann das sein?

Werd natürlich die String-Umwandlung rauslassen und die Bytes direkt schreiben, das spart ärger. Hatte es über Strings eingebunden, da ich mir bei der Überprüfung die zwischenzeitlich erzeugten Hash-Werte zum Debuggen ausgeben lassen wollte, um zu sehen, ob ich beim logischen Vergleich was falsch mache.

Gruß, Marcel

Thema: Byte --> String --> Byte erzeugt falsche Bytes...
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi Leute!

Hab ein mittelschweres Problem. Ich versuche eine Datei zu schreiben, welche an bekannter Byte-Position Ihre Erstellungszeit als MD5-Hash abspeichert. Später wird dieser Hash-Werte ausgelesen und mit dem verglichen, der aus der Erstellungszeit der Datei erstellt wird, verglichen. (Ist so eine Art Kopierschutz, damit die Datei nach wegkopieren nicht mehr als korrekt identfiziert werden kann) Jetzt ist es mein Problem, dass ich über einen Funktionsaufrufden MD5-Hash erzeuge und den als String zurückgebe. Das geschieht mit:

private string GetMD5Hash(string plaintext)
        {
            MD5 MD5Hasher = MD5.Create();
            byte[] plaintextByte = Encoding.Default.GetBytes(plaintext);
            byte[] MD5Text = MD5Hasher.ComputeHash(plaintextByte);
            StringBuilder BuildString = new StringBuilder();

            for (int count = 0; count < MD5Text.Length; count++)
                BuildString.Append((char)Convert.ToInt32(MD5Text[count].ToString()));

            MD5Hasher.Clear();
            return BuildString.ToString();
        }

Um den letztenendes im Filestream abzuspeichern, wird der Wert wieder Bytes konvertiert. Genau da passiert bei einigen Zeichen der Fehler, dass die (falsche) binäre 63 in das Byte-Array geschrieben wird.

Woran liegt das?

Das Rückkonvertierung erfolgt mit:

TicksStringByteMD5 = Encoding.Default.GetBytes(TicksStringMD5);

Danke für eure Antworten!

Gruß, Marcel