Ich hab nochmal ne Frage an euch. Und zwar habe ich in meiner WPF Anwendung 3 XML Dateien. Eine davon (sagen wir: meineDatei.endung) beinhaltet den Dateipfad zu den anderen beiden, die readonly und nicht für den Nutzer bestimmt sind. Wenn also meineDatei.endung am Desktop liegt und ich klicke doppelt darauf, öffnet sich meine Applikation. Wie kann ich aber jetzt die Einträge in meineDatei.endung lesen? PS: Ich nutze C#.
XML-Dateien kann man z.B. via XmlDocument verarbeiten: http://msdn.microsoft.com/de-de/library/875kz807(v=vs.110).aspx ...oder mit XmlTextReader ...oder mit XmlSerializer wieder deserialisieren, wenn damit vorher was serialisiert wurde.
Ja, ich weiß. Aber für z.B. XmlSerializer brauche ich ja Dateiname und -pfad. Wie bekomme ich das? meineDatei.endung kann sich ja theoretisch überall befinden und auch einen beliebigen Namen haben.
Paul Gillesberger schrieb: > Ja, ich weiß. Aber für z.B. XmlSerializer brauche ich ja Dateiname und > -pfad. Wie bekomme ich das? meineDatei.endung kann sich ja theoretisch > überall befinden und auch einen beliebigen Namen haben. Dein Programm kriegt beim Aufruf den Namen der Datei mit, auf die du geklickt hast und welches Windows veranlasst hat, zur Bearbeitung dein Programm zu starten. http://msdn.microsoft.com/en-us/library/cb20e19t.aspx Also entweder Main modifizieren oder den Satz beachten
1 | You can also use Environment.CommandLine or Environment.GetCommandLineArgs |
2 | to access the command-line arguments from any point in a console or Windows |
3 | application. |
:
Bearbeitet durch User
Paul Gillesberger schrieb: > Ja, ich weiß. Aber für z.B. XmlSerializer brauche ich ja Dateiname und > -pfad. Wie bekomme ich das? meineDatei.endung kann sich ja theoretisch > überall befinden und auch einen beliebigen Namen haben. bei dem Doppelklick öffnet sich doch deine Anwendung und dieser wird als Paramter der komplette Pfad zur XML Datei mitgeben. Diese must du öffnen und darin steht dann der Pfad zu den nächste Dateien.
Wenn ich mein Programm debuge erhalt ich für Environment.CommandLine den Pfad zur .exe, die dann logischerweise nicht deserialisiert erden kann. Wie kann ich eine Ausnahme einbauen, dass nur XML Dateien deserialisiert werden?
Paul Gillesberger schrieb: > Wenn ich mein Programm debuge erhalt ich für Environment.CommandLine den > Pfad zur .exe Dann machst du was falsch: wenn du eine Textdatei doppelklickst, lautet die Kommandozeile "notepad.exe C:\daten\meintext.txt". Die Frage ist aber, ob du dein Programm überhaupt durch die Shell starten kannst, während du es im Debugger bearbeitest. Bau halt mal eine Ausgabe-Msgbox für die Kommandozeile ein und starte es ohne IDE. Georg
Paul Gillesberger schrieb: > Wenn ich mein Programm debuge Wenn du dein Programm im Debugger startest, wird es aber auch nicht durch den Doppelklick auf eine Datei gestartet. Logisch, dass du dann keinen Dateinamen mitkriegst. Aber: Im Developerstudio kann man irgendwo bei den Project Options einstellen, wie die Command Line aussehen soll, mit der das Programm gestartet wird. Dort kannst du während der Entwicklung genau die Command Line eintragen, die du auch dann kriegen würdest, wenn du eine Datei doppelklickst. Und wie die aussieht, eruierst du, in dem du dir einfach mal als erstes diese Command Line ausgeben lässt und das Programm durch einen Doppelklick auf die Daten-Datei startest. Dann siehst du, was du kriegst, trägst es in den Project Options ein und kannst während der Entwicklung das Programm so starten, als ob es mit dem Doppelklick gestartet worden wäre und nicht indem du den Debugger gestartet hast.
:
Bearbeitet durch User
Tut mir leid, wenn ich mich jetzt blöd anstelle, aber welche Daten Datei und wie lasse ich mir die Kommandozeile ausgeben?
Paul Gillesberger schrieb: > Tut mir leid, wenn ich mich jetzt blöd anstelle, aber welche Daten Datei Deine 'erste' XML Datei. Die in der die Namen der anderen beiden drinn steht. Du willst ja schliesslich wissen, was du als Command Line kriegst, wenn du die anklickst. > und wie lasse ich mir die Kommandozeile ausgeben? Message Box? Wie gibst du denn jetzt irgendwas aus? Du hast einen String und willst den per Programm irgendwie zu Gesicht kriegen! Und das möglichst simpel. Was machst du? (Jetzt mal abgesehen von der Möglichkeit, im Debugger mit der Maus drauf zu zeigen. Das gilt nicht. Denn wenn das Programm ohne Debugger läuft, soll es ja auch irgendwie einen Text ausgeben können) Bist du sicher, dass du da nicht mindestens 20 Lern- und Übungseinheiten übersprungen hast, was sich jetzt furchtbar rächt?
:
Bearbeitet durch User
Paul Gillesberger schrieb: > wie lasse ich mir die Kommandozeile ausgeben? Für Leute, die den Anfängerstatus noch nicht erreicht haben: Bau mal irgendwo in dein Programm ein MessageBox (0,'Ich bin jetzt da wo MessageBox steht','Debug-Anzeige',MB_OK); und beobachte was passiert. Vielleicht hilft dir das weiter. Georg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.