Forum: PC-Programmierung Datei speichern und öffnen


von Paul Gillesberger (Gast)


Lesenswert?

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#.

von bluppdidupp (Gast)


Lesenswert?

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.

von Paul Gillesberger (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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
von Peter II (Gast)


Lesenswert?

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.

von Paul Gillesberger (Gast)


Lesenswert?

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?

von Georg (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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
von Paul Gillesberger (Gast)


Lesenswert?

Tut mir leid, wenn ich mich jetzt blöd anstelle, aber welche Daten Datei 
und wie lasse ich mir die Kommandozeile ausgeben?

von Karl H. (kbuchegg)


Lesenswert?

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
von Georg (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.