| 

.NET C# Java Javascript Exception

2
Hallo,

hätte mal eine hoffentlich einfach zu lösende Frage. Und zwar hab ich für jemanden nen kleines Progrämmchen (Konsolenanwendung) mit Microsoft Visual Studio 2010 geschrieben. Dieses soll einfach nur Zeichenkette in einer vorgegeben Datei (*.csv) ersetzen. Da ich nicht wusste wo diese Datei liegt, hab ich in dem Ordner wo die *.exe liegt noch eine Textdatei hineingelegt wo der Pfad zur *.csv eingetragen wird. Führt man das Programm nun einfach per Doppelklick aus funktioniert alles ohne Probleme. Nun wurde mir gesagt, dass das Programm aus einer Datenbank (wahrscheinlich über Trigger) aufgerufen werden soll. Hier stürzt die Konsole nun immer ab. Angeblich wird die Datei path.txt nicht gefunden. Um das ganze mal halbwegs nachzutesten, hab ich nun mit einer weiteren Konsolenanwendung die eigentliche *.exe aufrufen lassen. Hier bekomme ich nun die Meldung, dass die *.csv nicht gefunden wurde. Diese wird kurioserweise im Pfad der zweiten Anwendung gesucht. Allerdings verstehe ich nicht warum.

Weiß jemand Abhilfe?

Martin


Das aufrufende Programm:

Module Module1
Sub Main()
Shell("C:\replacer.exe", vbNormalFocus)
End Sub
End Module


Das aufzurufende Programm:
Imports System
Imports System.IO

Module Module1
Sub Main()
...
Dim pathReader As StreamReader = New StreamReader("path.txt")
path = pathReader.ReadToEnd
...

Dim fileReader As StreamReader = New StreamReader(path + "test.csv")
file = fileReader.ReadToEnd
file = file.Replace("""", "")
...
End Sub
End Module
29.09.2012
MRae 259 1 7
MRae 259 1 7
2 Antworten
1
Als Ergänzung (denn es Du hast ja schon eine Lösung für Dich gefunden):

  • Die Ursache des Problems ist, dass relative Pfade relativ zum aktuellen Arbeitsverzeichnis sind. Das ist bei dieser Art von Aufruf aber eben nicht das Verzeichnis, in dem die EXE liegt.
  • Hier stürzt die Konsole nun immer ab.
    In produktivem Code sollte ein solches Problem keinen Absturz verursachen, sondern eine aussagekräftige Fehlermeldung und ein kontrolliertes Beenden des Programms.
30.09.2012
Matthias Hlawatsch 13,2k 4 9
0
Hab jetzt über
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location
den Pfad der *.exe auslesen lassen. Funktioniert!
29.09.2012
MRae 259 1 7

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH