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#.
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
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.
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?
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
Eine eigene Frage?
Dieser Thread ist über 11 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.