| 

.NET C# Java Javascript Exception

3
Hallo allerseits,

ich sitze gerade an meinem ersten VB.NET Programm. Habe zwar schon etliche Online-Tutorials und auch ein paar Bücher durchgearbeitet, aber ich stoße doch
immer wieder an Schwierigkeiten und hoffe, dass Ihr mir hierbei etwas behilflich sein könnt.

Also zunächst eine für Euch vielleicht banale Sache: Eine Datei richtig öffnen

Mein Code bisher sieht so aus:
Public Sub io_open_datafile()
Dim _Datafile As New FileInfo(OpenFileDialog1.FileName)
OpenFileDialog1.Filter = "XML File | *.xml"
OpenFileDialog1.Title = "Open XML File"
OpenFileDialog1.ShowDialog()
meinDataSet1.Clear()
If _Datafile.Exists Then
meinDataSet1.ReadXml(_Datafile.FullName)
Else
MsgBox(String.Join(Environment.NewLine, New String() {"kein Datafile gefunden:",
_Datafile.FullName, "", "Sie fahren mit leerem Dataset fort"}))
End If
End Sub


So, jetzt ist hier das Problem, dass beim ersten Versuch nie die Datei geöffnet wird, sondern nach dem Wählen der Datei immer der Else-Zweig ausgeführt wird.
Erst beim zweiten Versuch wird die Datei richtig eingelesen.

Kann mir bitte jemand sagen wo ich hier einen Codefehler habe und wie es richtig sein muss?

Darüber hinaus würde ich eine Datei auch gerne per Doppelklick oder mit "öffnen mit"-Dialog öffnen/einlesen können. Selbst wenn ich die Datei-Endung mit meinem Programm verknüpfe, wird die Datei nicht richtig geöffnet. Das Programm startet zwar, aber liest die Datei nicht ein. Was muss ich dafür machen?


Freue mich über jeden Tipp und Hinweis.

Danke & VG
News:
26.03.2019
Rostam 13 2
8 Antworten
1
Das dürfte gar keine große Sache sein. Du hast musst wohl nur die Zeile

Dim _Datafile As New FileInfo(OpenFileDialog1.FileName)

verschieben, und zwar hinter OpenFileDialog1.ShowDialog(). Ich habe es nicht getestet, aber dann müsste es laufen.

Anmerkung: Mit FileInfo öffnest Du die Datei nicht, genau genommen öffnest Du gar keine Datei, denn
meinDataSet1.ReadXml(_Datafile.FullName)

öffnet und schließt die Datei selbst.
26.03.2019
muffi 1,4k 1 9
muffi 1,4k 1 9
0
Hi muffi, danke für Deine schnelle Hilfe! Das Verschieben der Zeile hat es gebracht :-) Kein Fehler mehr und öffnet direkt. Yeah! ;)

Aber was genau meinst Du mit der Anmerkung? Was genau macht FileInfo denn dann hier? Ganz unnötig ist es ja nicht, denn die Zeile einfach entfernen geht ja nicht, weil dann _Datafile nicht definiert wäre. Richtig?
26.03.2019
Rostam 13 2
0
Ach und was muss ich jetzt machen, damit ich das Programm bzw. die Datei auch noch mit einem Doppelklick oder per "Öffnen mit"-Dialog öffnen kann? Das wäre noch toll :-)
26.03.2019
Rostam 13 2
0
Die FileInfo liefert Dir, wie der Klassenname schon sagt, nur Informationen des Files (den genauen Hintergrund kenne ich nicht, gehe aber davon aus, dass diese Infos alle aus dem Filesystem entstammen). Und ja, bei Deinem Code brauchst Du die Zeile klar :-)

Was meinst Du mit "Öffnen per Doppelklick"? Das machst Du ja eh schon im OpenFileDialog. Willst Du die gesuchte Datei starten? Dann gebe ich Dir als Hilfe mal Process.Start().
26.03.2019
muffi 1,4k 1 9
0
Danke, ja das mit Process.Start() habe ich auch schon drin. Das meinte ich aber nicht.

Ich habe mein Programm veröffentlicht und möchte nun eine damit gespeicherte XML-Datei im Windows Explorer über das "Öffnen-mit"-Dialog mit meinem Programm öffnen. Wenn ich das mache, dann öffnet das Programm zwar, aber die Datei wird nicht geöffnet. Wie kriege ich es hin, dass der auch die Datei öffnet? Ich weiß, in Windows ist die Endung nicht mit meinem Programm verknüpft, daher wird es bei einer XML-Endung nicht per Doppelklick darauf gehen, aber über "Öffnen mit" müsste es doch eigentlich funktionieren.... tut es aber nicht :-(
26.03.2019
Rostam 13 2
0
Wenn du das erreichen willst musst in der Sub Main() die Kommandozeilenargumente, welche über den "args"-Parameter übergeben werden, auswerten. Der Windows Explorer übergibt dort den Dateinamen, wenn du "Öffnen mit" auswählst.
27.03.2019
luedi 2,2k 1 9
luedi 2,2k 1 9
0
hä??

Ähhm könntest Du mir dafür bitte ein Beispiel zeigen?

Ok, dass Windows Explorer den Dateinamen übergibt, das leuchtet mir ein. Aber wie sag ich in der Sub Main() dass er den Dateinamen übernehmen soll wenn das Programm über eine Datei geöffnet wird?
28.03.2019
Rostam 13 2
0
Auf Stackoverflow habe ich folgenden Beitrag gefunden, der verschiedene Möglichkeiten zeigt:

Get the arguments from a command line in vb.net

Ansonsten google mal nach "VB.NET retrieve command line args". Da findest du jede Menge Informationen.
28.03.2019
luedi 2,2k 1 9

Stelle deine .net-Frage jetzt!